Notes from the build.
20 posts on Angular and React architecture, frontend performance, AI-assisted development, product decisions, and full-stack craft — written from what actually shipped, including the parts that went wrong.
How I Actually Use Claude Code Day to Day
Not the demo workflow. The unglamorous, high-leverage things a terminal agent is genuinely good at once you stop asking it to write your app for you.
Designing an API Your Frontend Actually Wants
Most frontend complexity is a backend design decision arriving in disguise. What changes when the same person builds both.
React Re-renders: The Mental Model That Fixed My Performance Problems
I spent a year sprinkling useMemo on things. Then I learned what actually triggers a re-render, and deleted most of it.
Angular Signals in Practice: Replacing RxJS Boilerplate in a Real Dashboard
Signals didn't kill RxJS in our codebase — they killed the ceremony around it. Here's what actually changed when I migrated a live HRM dashboard.
Scoping a Feature So It Actually Ships
The feature that took four months was supposed to take three weeks. It wasn't an estimation problem — it was a scoping one.
State Management in React Without a State Management Library
Most apps reaching for Redux have three kinds of state and are treating all of them the same way. Separate them and the library becomes optional.
Cursor vs Claude Code: Which One I Reach For, and When
They're not competitors so much as different shapes. One lives in the editor, one lives in the terminal, and the shape decides the use case.
Writing a CLAUDE.md the Model Actually Follows
Most project instruction files are wishlists. The ones that work are short, specific, and say what not to do.
Standalone Components: How I Restructured a Large Angular App Without Stopping Feature Work
NgModules weren't the problem — the dependency graph they hid was. A file-by-file migration path that never needed a code freeze.
Design Tokens for Developers: Stop Writing Hex Codes
A dark mode that took an afternoon instead of a sprint, and the naming scheme that made it possible.
Angular vs React: How I Actually Choose, After Shipping Both in Production
Not a feature comparison. The three questions I ask about the team and the product before writing a line of code.
Angular Change Detection: OnPush, Zoneless, and What Actually Makes an App Fast
Most Angular performance problems aren't change detection. But when they are, the fix is rarely the one people reach for first.
Accessible Components: The Five Things That Matter Most
You don't need to memorise WCAG. Five habits cover the overwhelming majority of real-world accessibility failures.
Data Fetching Patterns That Survive Contact With Production
useEffect + fetch works in a tutorial. Here's every way it breaks in a real app, and what to do instead.
AI Code Review: What It Catches, and What It Will Never Catch
After a few hundred AI-assisted reviews, a clear pattern: it's excellent at local correctness and blind to whether you built the right thing.
Angular Reactive Forms at Scale: Typed Controls, Dynamic Fields, and Cross-Field Validation
A 60-field tax-filing form taught me more about Angular forms than any documentation. What survived the project.
From Ticket to Production: How I Break Down a Feature
The hour before you write code decides most of what happens after. What I do in that hour.
The Angular Performance Checklist I Run Before Every Release
Lazy routes, deferrable views, bundle budgets, and image handling — the concrete list, in the order that pays off fastest.
The Frontend Folder Structure That Survived Three Rewrites
Organise by feature, not by file type. Sounds obvious; almost nobody does it, and the cost compounds quietly.
The Backend Skills That Made Me a Better Frontend Developer
Four things I learned on the server side that changed how I write client code — and why 'full stack' is about judgement, not a longer skills list.