Writing
Notes from the build.
27 articles from our founder on Medium: how we build, what we learn, and what we would do differently.
AI & agents
4 articles
- (Medium, opens in a new tab)
Coding with AI Agents · Part 1
Coding with AI Agents — Offline, Free, and Without Excuses: Part 1 — “The Why”
There is no shortage of articles about how LLMs have changed software development. I am not going to write that article.
- (Medium, opens in a new tab)
Coding with AI Agents · Part 2
Coding with AI Agents — Offline, Free, and Without Excuses: Part 2 — “The How”
What I actually found while looking for a free, offline-capable alternative to tools like Cursor — including the dead ends.
- (Medium, opens in a new tab)
Coding with AI Agents · Part 3
Coding with AI Agents — Offline, Free, and Without Excuses: Part 3 — “The Upgrade”
What changed since Part 2 — the models, the runtime, and the tools — when every decision stopped being a negotiation with memory.
- (Medium, opens in a new tab)
A Virtual Team That Does Not Clock Out
Four bots, one Figma file, one Cursor subscription — and a team that only calls me when it has to.
Distributed systems
4 articles
- (Medium, opens in a new tab)
Communication Design in Distributed Systems · Part 1 of 3
How Bytes Move: Protocols and Brokers
Transport, HTTP’s evolution, push channels, gRPC, and the broker as the pivot of asynchronous design.
- (Medium, opens in a new tab)
Communication Design in Distributed Systems · Part 2 of 3
Contracts, Conversations and Guarantees
Serialization and schema evolution, sync vs async, delivery semantics, idempotency, and the outbox.
- (Medium, opens in a new tab)
Communication Design in Distributed Systems · Part 3 of 3
What You Build With It: Event-Driven Architecture
Events vs commands, event sourcing, CQRS, sagas, the log, resilience — and one order traced through all seven layers.
- (Medium, opens in a new tab)
Latency vs. Throughput: The Version That Sticks
One image, built up piece by piece, until every question you’ll ever have about speed has an obvious answer. The image is a road.
Architecture
5 articles
- (Medium, opens in a new tab)
One Codebase — Six Platforms · Part 1
One Codebase — Six Platforms
A practical guide for web teams who want to ship everywhere without starting from scratch.
- (Medium, opens in a new tab)
One Codebase — Six Platforms · Part 2
The Offline Layer — A Walk Through the Caching Strategy (with Service Workers)
A web app inside a native wrapper is still a web app. The Service Worker is what closes the gap: instant loads, and no dependency on the network.
- (Medium, opens in a new tab)
The Simulation Doesn’t Care Where Events Come From
A game built by a highly collaborative team on a single TypeScript codebase shared across the server, web, and mobile.
- (Medium, opens in a new tab)
Delegating Analytics to Analysts in Multi-Platform JavaScript Systems
For engineers, architects, technical product owners, and analytics specialists who operate in multi-platform JavaScript/TypeScript ecosystems.
- (Medium, opens in a new tab)
Modular UI Components
UI components should be treated as modules, not just files.
Monorepos & tooling
7 articles
- (Medium, opens in a new tab)
The Shine of the Modular Monorepo in the Agentic Era
See everything, touch little — why the architecture we built for human minds turned out to be the one agents needed.
- (Medium, opens in a new tab)
Source-Consumed vs Built-Package Libraries: A Unified Guide for TypeScript Monorepos
The decision that trips up almost every monorepo — and the framework to finally get it right.
- (Medium, opens in a new tab)
PackageLock Mysteries · Part 1 of 3
PackageLock Mysteries (The Axioms)
One file is a contract. The other is a snapshot. Confusing them causes real bugs.
- (Medium, opens in a new tab)
PackageLock Mysteries · Part 2 of 3
PackageLock Mysteries (Merge Me)
A package-lock.json conflict is not a conflict of logic but of two snapshots of reality. You don’t resolve it. You regenerate it.
- (Medium, opens in a new tab)
PackageLock Mysteries · Part 3 of 3
PackageLock Mysteries (Monorepos)
Why the rules shift in an Nx monorepo — refinements, not replacements.
- (Medium, opens in a new tab)
The NX + Expo Native Module Mystery
The solution is deceptively simple, but understanding why it works means diving into how Expo’s autolinking interacts with Nx’s monorepo structure.
- (Medium, opens in a new tab)
Is Webpack Still Alive?
A love letter to the tool that taught me what a bundler really means.
Mobile & web
3 articles
- (Medium, opens in a new tab)
iOS Code Signing: Certificates, Keys, and Provisioning Profiles
Everything Apple never explained clearly — from the cryptography underneath to the files on your Mac.
- (Medium, opens in a new tab)
How an Android Deep Link Opens Your App
A field model for developing and debugging Android App Links, built from one very long afternoon.
- (Medium, opens in a new tab)
The Right Way to Hide Your Website from Search Engines
A practical guide to preventing search engine indexing for staging, dev, and internal tools.
Growth & craft
4 articles
- (Medium, opens in a new tab)
The Hidden Side of Professional Growth
For a long time, I believed that continuous learning was primarily about knowledge — degrees, courses, books, certifications, new technologies.
- (Medium, opens in a new tab)
The Signals Between Us — a Transmission Model of Human Communication
Communication is not transmission, it is synchronization — and why two people understanding each other is so much harder than it should be.
- (Medium, opens in a new tab)
What I’d Tell a Neighbor Who Asked How to Become a Developer
A Saturday morning conversation that turned into a cheatsheet.
- (Medium, opens in a new tab)
Why Every Trading Bot Starts With a Candle
“Ma’am, I am a developer. I know math. How hard can a trading bot be?” — me, moments before humbling myself completely.