Principal Engineer · 16+ years
Helping senior engineers think and design like architects.
I write about system design, mentor engineers moving toward staff and principal, and teach what I've learned the hard way.
Or start free: Prompting Like an Engineer, Not a Wizard ↗
Production-Ready Systems with LLMs and Agents
A hands-on Maven cohort: six weeks, twelve live sessions, five graded projects where you ship real LLM and agent systems that survive real traffic, cost, and failure, not notebooks.
Use code AGENTS300 for $300 off: early-bird, capped at 12 seats.
Production-Ready Systems with LLMs and Agents
A hands-on intensive on taking LLM and agent systems from demo to production you can trust.
View on Maven ↗Free Lightning LessonPrompting Like an Engineer, Not a Wizard
A free Lightning Lesson on getting reliable results from LLMs with real engineering discipline instead of guesswork.
View on Maven ↗More ways to learn
Self-paced courses
Clean Code Mastery free; System Design Mastery and Node.js & TypeScript interview prep premium.
Browse courses →1:1 mentorship
Career, system-design judgment, and the path from senior to staff and principal.
See programs →Writing & podcast
Hundreds of deep-dives on architecture, plus the Breakpoint podcast.
Read the latest →Latest writing

Soon Everyone at Your Company Will Be an Engineer
AI is tearing down the wall around engineering. Why everyone becomes an engineer, org charts flatten, and every function turns into an engineering role.

The Frontend Toolchain Is Now Written in Rust and Go. What That Means for You
tsgo, Vite 8, Turbopack, OXC, and now the React Compiler in Rust. The tools you build with are quietly being rewritten in native languages. Here is the pattern, and which of your skills survive it.

Ship and Learn Are Two Different Metrics
AI defaults close your task, they do not keep you sharp. Used without intent it bills you in cognitive debt. The posture that keeps you learning while you still ship.
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 →