The Craft / 00
Notes From
The Practice.
My personal writing on AI-assisted engineering, software, and the ideas behind what we build — published on Medium.

UI protection not equal system correctness
Let me show you something that will ruin your confidence in every form you’ve ever shipped. Open your browser. Open any React form you’ve built with the standard pattern isSubmitting state, disabled={isSubmitting} on…
Read article →
The bug took two days to find. The fix was one line. But we are solving the wrong problem
Let me tell you about a bug that took me two full days to find at a company I worked at. A user on an internal support panel would click between two tickets quickly, ticket A, then ticket B, before ticket A finished…
Read article →
The Two Hooks That Separate Junior from Senior React Developers
It’s not about knowing the API. It’s about knowing when your component needs to think differently. There’s a specific moment in a code review that tells me everything I need to know about where a developer is in their…
Read article →
React Hooks in 2026: Not Just What They Do — When to Reach for Each One
Every hook is a solution to a specific problem. The senior developer’s skill isn’t knowing the API — it’s knowing the problem. Let me tell you the moment I knew I’d finally understood React Hooks. It was 2019; I was…
Read article →
I Let GitHub Copilot Define My React Standards for Six Months. Here’s the Damage It Did.
AI doesn’t invent bad code. It invents averageness — confidently, quickly, and at scale. There’s a specific kind of technical debt that doesn’t show up in your linter. It’s not a bug. It’s not a performance issue. It’s…
Read article →
Why Every Link You Share Shows Your Homepage Logo
Picture this. Someone finds your product. They’re excited. They share it on LinkedIn. The preview that appears: your site’s generic homepage logo, the default title “My App — Build Something Great,” and a description…
Read article →
The best place to hide a dead body is the second page of Google search results
In 2026, Google CAN render your SPA. The question is WHEN “Google renders JavaScript” is true. Here’s the part they don’t tell you: Google renders JavaScript in two waves . And the gap between those waves is where your…
Read article →
Dark Mode Isn’t a Feature. It’s a Promise. Here’s How to Keep It.
Every flash of white on a dark-mode screen is your app saying: “I wasn’t listening.” Let’s fix that. “Good design is invisible.” — Dieter Rams There’s a specific kind of frustration that lives in the gap between what a…
Read article →
Vite’s Hidden Gems: 3 Tricks I Wish I Knew Sooner
When Vite first burst onto the scene, it was a breath of fresh air. The “instant server start” and “lightning-fast HMR” became instant selling points, and for good reason. For many of us, myself included, it felt like…
Read article →
The “Safety Check” Habit: Why Your TypeScript Code Still Bleeds in Production
The biggest bugs don’t come from a lack of knowledge. They come from bad habits . Let’s be honest. We’ve all been there. It’s 2 AM, you’re staring at a Sentry report or a bug ticket that says: Uncaught TypeError: Cannot…
Read article →