Blog
Notes from
the trenches.
Angular, React, TypeScript and the unglamorous parts of shipping software – written down so you don't repeat my mistakes.
How Much Does It Cost to Build a Chrome Extension in 2026?
Realistic Chrome extension development costs in 2026 – price ranges by complexity, what actually drives the budget (MV3, AI, backend, store review), timelines, and the hidden maintenance costs founders forget.
Jul 7, 2026Frontend Architecture Audit: What It Is, When You Need One, and What Good Looks Like
A practical guide to frontend architecture audits – the signals that you need one, what a rigorous audit covers, what the deliverable should contain, and how to act on it.
Jun 16, 2026AngularJS to Angular Migration: A Field Guide from a 100k-Line Production Rescue
How to migrate a large AngularJS codebase to modern Angular without stopping feature delivery – strategy, sequencing, testing, and the traps I hit doing it on a production platform.
May 19, 2026Building an AI Chrome Extension to 10,000 Users: Manifest V3 Lessons from Upwex
Real-world Manifest V3 architecture for AI-powered Chrome extensions: service worker lifetime, content-script isolation, store review, and LLM cost control – lessons from building Upwex.
Apr 8, 2026TypeScript at Scale: 10 Practices That Survive 100k Lines
TypeScript practices that matter in large production codebases – strictness that pays for itself, discriminated unions, unknown at the boundaries, satisfies, branded types, and where to show restraint with generics.
Mar 17, 2026React Server Components in Practice: What Actually Changes in a Production App
React Server Components beyond the theory – the real mental model, where the server/client boundary should sit, the caching layers that actually bite, and when RSC is the wrong tool.
Feb 11, 2026Angular Signals in Production: From First Signal to a Signals-First Architecture
A practical guide to Angular Signals from production experience – signal, computed and effect done right, signal inputs, RxJS interop, migration strategy for large codebases, and the pitfalls that only show up at scale.