blog
Practical notes on full-stack development, freelancing, and using AI tools to ship better software.
GitHub Copilot, Cursor, and LLM APIs have changed how I work — but not in the way most people expect. Here's my actual workflow: what I delegate to AI, what I don't, and why the judgment gap is where the real value lives.
After 9 years building React frontends on top of .NET backends, these are the patterns I keep reaching for — and the anti-patterns I've watched teams repeat. State colocation, API contract design, and where BFF actually helps.
Technical skills get you hired. Communication keeps you hired — and gets you referrals. Here's how I scope projects, set expectations, and handle scope creep without burning bridges.
Beyond the hello-world demos — how to handle streaming responses, manage tokens, write prompt templates that actually work, and deploy an AI feature your clients can trust in production.
Discriminated unions, branded types, const assertions — not the beginner stuff. These are the TypeScript features that genuinely tame complexity in enterprise-scale codebases I've worked on.