Helping senior engineers think and design like architects.

Principal Engineer with 16+ years of real-world architectural decisions. I write about system design, mentor engineers moving toward staff and principal, and teach what I've learned the hard way.

Latest writing

Popular guides

SQL, from SELECT to subqueries

Worked SQLZoo solutions, joins, aggregates, GROUP BY vs HAVING, and subqueries — the queries interviewers actually ask.

Start reading →

Database performance & scaling

Indexes, query optimisation, sharding, replication and normalization — how to make a database fast and keep it fast.

Start reading →

Modern TypeScript tooling

Why oxlint replaced ESLint, pnpm vs npm, Lefthook vs Husky, and the Rust/Go shift in the frontend toolchain.

Start reading →

Data structures in TypeScript

Arrays, linked lists, stacks, queues, trees, tries, graphs, heaps and hash tables — implemented and explained in TypeScript.

Start reading →

Sorting & searching algorithms

Insertion, selection, merge and quick sort, plus binary and substring search — the classic algorithms, step by step.

Start reading →

Design systems in practice

What a design system really is (per Atlassian), how Dropbox and Netflix build theirs, and how to roll out an internal UI component library.

Start reading →

Scaling & system architecture

Horizontal vs vertical scaling, capacity estimation, resilience patterns and the architecture principles behind systems that grow.

Start reading →

X vs Y: engineering trade-offs

Head-to-head breakdowns — oxlint vs ESLint, REST vs GraphQL, SQL vs NoSQL, Svelte/Preact vs React — with the trade-offs that decide it.

Start reading →