
The Spec-First Manifesto: Why I Stopped Prompting for Logic and Started Prompting for Assertions
If you’re tired of fixing the subtle bugs in 'working' AI code, it's time to stop asking for features and start feeding your LLM failing tests instead.
Articles, guides, and thoughts on web development and technology

If you’re tired of fixing the subtle bugs in 'working' AI code, it's time to stop asking for features and start feeding your LLM failing tests instead.

Stop bloating your bundle and start leveraging the high-performance features like Temporal and Popover that are now built into your users' browsers.

Over-abstracting TypeScript interfaces with complex utility types often creates a maintenance nightmare that simple duplication would have avoided.

Discover why synthetic lab scores often mask real-world unresponsiveness and how to hunt down the long tasks sabotaging your event loop.

Replacing passwords isn't just about calling a browser API—it's about rethinking your entire account recovery strategy for a world without shared secrets.

A deep dive into why tethering elements to each other no longer requires a 20kb JavaScript dependency or complex resize observers.

I stopped waiting for 200 OK responses and started building apps that feel like local software, even when the internet disappears.

Discover how the new native Top Layer API renders years of z-index battles and complex React portal workarounds completely obsolete.

Stop wrestling with laggy scroll event listeners and Intersection Observers by offloading your scroll-linked UI logic to the browser's native animation engine.

Stop wrestling with messy state hooks and learn how I moved from clunky API calls to a fluid, generative chat experience using the latest streaming patterns.