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 go deeper: the live cohort ↗AI Supply Chain: Threat Model Your Agent Toolchain
Your agent tooling has repo access, credentials and auto-update. Audit it before it ships your secrets.
Tue, 11 Aug · 6:30pm London · 30 minutes · Zoom
What engineers say
29+ engineers and colleagues, sharing what changed after we worked together.
“It has been a pleasure working with Ehsan. He is a dedicated, self-motivated and knowledgeable software engineer. He always embraces new challenges at work. He has a positive attitude and desire to produce quality work that serves him well. He would be a valuable team member of any software team.”
“Ehsan consistently delivers the best in company projects on time and to high standards. I have always admired his ability to stay calm and perform under pressure. He is a great asset to the team both on a professional and personal level. I would not hesitate to recommend Ehsan.”
“I've been working with Ehsan in Netbarg. He has always proved to be a results-oriented teammate who has great technical skills. I would like to recommend Ehsan as a key co-worker to whom to trust any critical work.”
More ways to learn
- Self-paced coursesClean Code Mastery free; System Design Mastery and Node.js & TypeScript interview prep premium.Browse courses →
- 1:1 mentorshipCareer, system-design judgment, and the path from senior to staff and principal.See programs →
- Writing & podcastHundreds of deep-dives on architecture, plus the Breakpoint podcast.Read the latest →
Latest writing

The Model Is a Dependency That Fails Without an Error Code
Every agent that survives production traffic is mostly ordinary deterministic code that calls a model at two or three chosen points. The design work is choosing those points, because the model is the only dependency you have that returns a wrong answer with a 200.

Most of Your Agent Instructions Are Noise
Anthropic deleted more than 80% of Claude Code system prompt for the Claude 5 generation with no measurable loss on their coding evals. If that is true of the best-tuned agent harness in the industry, your CLAUDE.md is not in better shape.

How I Find Problems Worth Solving
Staff engineers are judged on whether a problem was worth solving, not just whether they solved it. I do not find those problems by thinking hard. I collect them, let them pile up, and wait for the shape.

Everything Is Being Rewritten in Rust. Is It Time You Learned It?
The kernel dropped the experimental label, Cloudflare rewrote its proxy, and your JavaScript build is already Rust underneath. That is the case for learning it. The case against is that the most important TypeScript tool of the decade picked Go. Here is how I read the trade-off, and where I would still not leave TypeScript.

Situational Awareness: The Decade Ahead to AGI by Leopold Aschenbrenner
A short, simple review of Leopold Aschenbrenner essay. He says AI will reach human-level smarts around 2027. Here is what he gets right, what he gets wrong, and what it means for you.

Why I Route Every AI Call Through OpenRouter Instead of Direct Endpoints
I migrated gazar.dev off direct Gemini and OpenAI endpoints onto OpenRouter as a single gateway. One key, one request shape, one bill, and switching models is now a string change. Here is what that bought me and what it cost.
Popular this week
What other engineers have been reading in the last seven days.

Monorepo Tools Compared: NX, Turborepo, Bazel, and Rush
Compare the leading monorepo tools: NX, Turborepo, Bazel, Rush, and PNPM workspaces. Choose the right fit for your team size, stack, and build needs.

SQLZoo SELECT from WORLD: Solutions and Explanations
Worked solutions to every SQLZoo SELECT from WORLD exercise, from basic filtering to population and GDP-per-capita queries, each explained step by step.

oxlint vs ESLint: Why I Replaced ESLint with oxlint
Replaced ESLint with oxlint in a React TypeScript project and cut lint time from 12 seconds to under one. What I traded away and whether it was worth it.

Lefthook vs Husky: Why I Switched and Never Looked Back
Lefthook replaces Husky and lint-staged with a single Go binary, parallel hook execution, and built-in file filtering. Here is why I switched and kept going.

Cues by Vanessa Van Edwards: Book Review
My review of Cues by Vanessa Van Edwards, which argues charisma is a learnable skill. The signals that actually work, what holds up, and what to skip.

The Charisma Myth by Olivia Fox Cabane
I always thought charisma was something you either had or didn't. Cabane says that's wrong. Charisma is a skill built from three components: presence, pow...
Where to start
The deep dives I'd point a senior engineer at first, grouped by topic.

SQL, from SELECT to subqueries
Worked SQLZoo solutions, joins, aggregates, GROUP BY vs HAVING, and subqueries — the queries interviewers actually ask.
9 deep dives · Start reading →
Database performance & scaling
Indexes, query optimisation, sharding, replication and normalization — how to make a database fast and keep it fast.
8 deep dives · Start reading →
Modern TypeScript tooling
Why oxlint replaced ESLint, pnpm vs npm, Lefthook vs Husky, and the Rust/Go shift in the frontend toolchain.
6 deep dives · Start reading →
Data structures in TypeScript
Arrays, linked lists, stacks, queues, trees, tries, graphs, heaps and hash tables — implemented and explained in TypeScript.
12 deep dives · Start reading →
Sorting & searching algorithms
Insertion, selection, merge and quick sort, plus binary and substring search — the classic algorithms, step by step.
6 deep dives · 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.
6 deep dives · Start reading →
Scaling & system architecture
Horizontal vs vertical scaling, capacity estimation, resilience patterns and the architecture principles behind systems that grow.
6 deep dives · 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.
12 deep dives · Start reading →


