
Sometimes, I Also Write Stuff

React Do's and Don'ts: Fiber, Reconciliation, and the Hooks Nobody Uses Right
Most React developers write code that works but re-renders 10x more than it should. Understanding Fiber, reconciliation, and when useMemo actually matters changes how you think about performance.

Building an AI Chatbot for My Portfolio — With Claude, in One Session
How I built a conversational AI agent for my website using Claude Haiku, Next.js API routes, and zero dependencies. From idea to production in under an hour, including rate limiting, markdown rendering, and privacy guardrails.

Build a Multi-Step Form with Web Components, Zero Frameworks
A real-world multi-step form with validation, i18n, and event-driven architecture — built with Lit, native HTML validation, and 5 dependencies. No React. No state library. No form library.

Kill the Java BFF: Why Small Teams Should Go Fullstack with Next.js
If your small Scrum team runs a Java Spring Boot BFF alongside a React frontend, you're paying double — in people, tooling, and cloud costs. But Java has real strengths too. Here's an honest architecture comparison.

The Rule of Least Power: Stop Overengineering Your Frontend
The W3C told us in 2006: use the least powerful technology that works. Most frontend teams do the opposite. Here's how HTML, CSS, and native APIs can replace half your dependencies.

Forget Best Practices, Invent Your Own
"Because it's a best practice" is not an argument. It's an appeal to authority. Here's why blindly following best practices can hurt more than help — and how to build practices that actually fit your context.

Smart vs. Dumb Components: The Split That Makes Code Maintainable
The most impactful architectural decision in frontend development isn't about frameworks — it's about separating what fetches data from what renders it.

AI-Assisted Development: How I Built This Website with Claude and Figma
A hands-on look at using AI as a real development partner — from design in Figma to production code with Claude, and what it means for how we build software.

Why YAGNI Beats DRY (And Why DRY Is Misunderstood)
Most developers learn DRY early and apply it everywhere. But premature abstraction kills more codebases than duplication ever will.

Reduce Your Node Dependencies for Maintainable Apps
Every package you install is a liability. Here's how to keep your dependency tree lean and your applications healthy.

Leading Frontend Teams: What Actually Works at Scale
Technical leadership isn't about writing the best code. It's about creating the conditions where your team consistently ships great software.

Micro-Frontends: When They Make Sense (And When They Don't)
I designed a micro-frontend architecture at AXA Switzerland. Here's what I learned about when this pattern helps and when it's just complexity for complexity's sake.