Most of the advice I’ve seen about getting good code out of AI assistants like Claude Code is about writing better prompts. In my experience, that stopped being the main lever a while ago. What matters more is what the model can actually see when it reads your prompt: which files, which conventions, and how much noise is in the way.
People have started calling this context engineering. In this post, I’ll walk through what that means and three habits I’ve picked up, using Claude Code’s CLAUDE.md and subagent files as concrete examples.
How to Estimate Software Development Time: A 6-Step Framework for Engineering Leaders
Learn how to estimate software development time with a 6-step framework covering scope, sizing methods, risk buffers, and stakeholder buy-in.
The Shift Toward Local AI: A Developer’s Perspective
AI has moved fast, faster than most of us expected, and the cost of keeping up is starting to show. What began as inexpensive, wide-open access to powerful cloud models has shifted into a landscape of rising token prices, stricter quotas, and unpredictable availability. More teams are starting to ask a question that would have sounded unrealistic a year ago: should we start hosting our AI models locally?
In this post, I’ll walk through why token costs and model access are becoming harder to rely on, why open models and local hardware are closing the gap, and what actually happened when I ran a full agentic workflow on my own machine, starting with the cost problem that kicked this off.
Building a React Component Library for Next.js with Storybook
In my last post, Implementing GitHub OAuth with NextAuth.js, we set up a standard single sign on flow with GitHub OAuth in NextAuth.js. This article assumes that you have followed along with that article already, and have your own version of that project locally. If not, but you already have a Next.js project, then you can follow along here just the same.
Last time, we set up a very basic dashboard to demonstrate displaying a signed-in user’s name, avatar, and some usage data from the GitHub API. Since then, NextAuth.js has evolved into Auth.js, but the GitHub implementation remains largely the same. However, if you haven’t upgraded your Next.js projects in a while, I would recommend doing so first.
In this post, we’ll pick up where we left off: upgrading your project’s dependencies, then decomposing your components into a scalable library using atomic design principles (atoms, molecules, organisms, templates, and pages). From there, we’ll install and configure Storybook for Next.js and Tailwind, write your first component stories in Component Story Format 3, and set up shared fixtures so you can preview and test components without depending on live GitHub API calls.
From 38 Seconds to 1.5: A Claude Code Performance Win
A sluggish ASP.NET page with 3,850 checkboxes was taking 38 seconds to load. By collaborating with Claude Code and shifting to client-side rendering, load times dropped to just 1.5 seconds — a 25× performance boost. Here’s how AI-assisted refactoring transformed the page and the development process.





