Skip to content
Artwork for Claude Code Conversations with Claudine

Claude Code Conversations with Claudine

William

Giving Claude Code a voice, so we can discuss best practices, risks, assumptions, etc,

Play
  • 83 episodes
  • daily
  • Avg 8 min
  • English
Counted on this page — what you have heard stays on this device, so it is not something the list can be paged by.
  • Yesterday · 8 min

    How Does AI Choose Routes Through Your System Invisibly?

    When AI writes the code, it also quietly picks how requests, data, and control move through your system: which service gets called, which fallback fires, which queue a job goes to, which branch handles the edge case. When the feature works, nobody looks at the route it took, so routing decisions pile up as unreviewed architecture. This episode argues that the routes through your system are a design surface the builder has to own on purpose, because working code is exactly what hides them. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • Sunday · 9 min

    Why Do AI Code Dependencies Behave Differently in Production vs Tests?

    AI-generated code usually passes its tests because the tests run in a warm, freshly installed, fully mocked world where every dependency is already loaded and ready. In production, those same dependencies come back from cold: after a restart, a deploy, a scheduled task firing under a different user account, or a container scaling from zero. They return with different credentials, environment variables, working directories, cached state, and versions. This episode names that gap the Resurrection Problem and explains why builders need to test the moment a system wakes up, not only the moment it runs. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • Saturday · 10 min

    Why Does AI Code Secretly Couple Components Through Undocumented Infrastructure?

    When AI writes a new component, it reuses whatever infrastructure is nearby: the same cache keys, environment variables, temp directories, database tables, log formats, and state files. Each choice makes sense locally. Together they tie components to each other through seams nobody designed and nobody wrote down. The code reviews clean, the interfaces look separate, and the coupling only shows up when someone changes one component and a different one breaks. Builders are adding components faster than ever with AI, and this hidden coupling grows with every one they add. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • Friday · 9 min

    Why Does AI Code for Problems It Imagines Instead of Yours?

    AI coding tools default to the most general version of whatever you ask for. They add config layers, plugin hooks, abstract base classes and options nobody requested, because the model is drawing on the average of every codebase it has seen and not on your specific problem. This episode names that pattern as generalization debt: speculative flexibility that looks like good engineering in review but costs you in maintenance, debugging and reasoning load. It also gives builders a way to keep AI output scoped to the problem actually in front of them. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • Thursday · 7 min

    Why Does AI-Generated Code Get Harder to Understand After Refactoring?

    AI makes changing code nearly free, so builders revise far more often than they used to and count that speed as progress. But every AI revision keeps the code working while quietly wearing down the reasons behind it: why a boundary sits where it does, why a check exists, why two modules stay apart. This episode looks at how a codebase can feel more flexible every week while fewer and fewer people can explain it, and why that hidden debt surfaces at the worst possible moment. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • Wednesday · 9 min

    Why Does AI Code Test Coverage Hide Untested Paths?

    AI tools now write the code and the tests together, and coverage numbers have climbed to levels that once took a team months to reach. But when the same model writes both, the tests tend to encode the model's own assumptions, so they execute every line without ever checking the failure paths, edge inputs, and state combinations that break in production. This episode explains why high coverage on AI-written code is now a weaker signal than it used to be, and what builders should measure in its place. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 6 · 10 min

    Why Passing Tests Don't Mean Your Code Actually Works

    Builders increasingly treat a green test suite as proof that AI-generated code is correct. But Claude reads tests as a specification to satisfy literally, so it will write code that passes the assertions you wrote even when that code misses the behavior you meant. This episode looks at why the test suite turns into the real spec once AI is writing the code, and why weak tests now quietly approve wrong code where they used to just leave gaps in coverage. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 5 · 8 min

    Why Does AI-Generated Code Get Abandoned?

    Every AI coding session leaves things behind: helper scripts, one-off migrations, half-wired utilities, config tweaks, and test fixtures that made sense while the context window was open. When the session ends, the reasoning behind those artifacts disappears with it, and what is left in the repo is code nobody remembers asking for and nobody feels safe deleting. This episode argues that the real cost of AI-assisted development is not bad code, it is orphaned code, and that builders need a deliberate practice for recording intent and closing out sessions before the context evaporates. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 4 · 10 min

    How Does AI Code Hide Requirements in Logic You Can't Change?

    When AI writes code, it quietly turns your requirements into specific choices: an ordering here, a null check there, a retry that is idempotent by accident. Those choices form an implicit contract that nobody wrote down. Then you ask for a change, the AI regenerates or refactors the code, and the contract is gone without any warning. The code still compiles, the tests you have still pass, and the behavior nobody stated explicitly is lost. This episode explains why that happens and how builders can make the contract explicit before the next change request erases it. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 3 · 10 min

    Why Does AI Stop Reading Your Code Requirements Halfway Through?

    Builders hand AI a detailed spec and get back code that matches the first half closely, then drifts into plausible behavior nobody asked for. The cause is not carelessness. As generation goes on, the model leans more on the code it has already written and less on the original requirements, and it fills gaps with whatever is typical for that kind of code. This episode explains where the divergence starts, why it is hard to see in review, and how to structure specs and checkpoints so the requirements keep governing the code all the way to the end. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 2 · 8 min

    Why Does AI-Generated Code Break Differently When Dependencies Update?

    When a human writes code against a library, they usually check the docs for the version they actually installed. When an AI writes it, the code reflects whatever mix of versions showed up in its training data, so you can get deprecated calls, APIs from two major versions mixed in one file, and patterns that only worked because something else happened to be pinned. The code runs today, and then it fails on the next dependency update in ways that are hard to trace, because nobody ever chose a version on purpose. This episode explains why AI-generated code carries a hidden version debt and what builders need to do about it before their next npm update or pip install upgrade. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • October 1 · 8 min

    Why Does AI Code Invert Control Flow Instead of Dependencies?

    Ask an AI assistant to make code decoupled or testable and it reliably produces callbacks, event emitters, hooks, and handler registries. Control flow gets inverted, but the source code dependencies still point from high-level policy toward low-level details. The result looks loosely coupled but stays rigid, and builders reviewing AI output in volume are shipping this pattern without noticing, because the code passes every surface check for good design. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 30 · 8 min

    Why Does AI Code Keep Rediscovering Expensive Computations?

    An AI assistant asked to refactor a module treats the code as text to restructure, not as a system with a cost profile. Memoization, lookup tables, precomputed indexes, and hoisted queries tend to get quietly removed or inlined, because the reason they exist was never written down where the model can see it. This episode argues that caching is architectural knowledge rather than implementation detail, and that builders who let refactors run unchecked are paying the same expensive computation over and over without noticing until the bill or the latency spike shows up. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 29 · 8 min

    Why Does AI Code Hide Requirements in Implementation Details?

    Every time AI generates code from a loose prompt, it makes dozens of quiet decisions to fill the gaps: a timeout of 30 seconds, a retry count of three, a timezone of UTC, a sort order, a default currency. After the first deploy, those guesses start acting like requirements, but nobody chose them, nobody wrote them down, and the only place they exist is in the implementation. This episode argues that the real cost of AI-generated code is not bugs but unrecorded decisions, and that builders need a way to dig those assumptions up before they harden into behavior that users and other systems depend on. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 28 · 9 min

    Why Does AI Code Performance Look Good Until Network Calls?

    AI-generated code tends to perform well on a developer laptop, where every call hits a local database, a mocked API, or an in-memory fixture and costs close to nothing. The same code carries loops that call out to the network, sequential awaits, per-item fetches, and chatty ORM access. Nobody sees these until real network latency multiplies them in production. This episode covers why AI assistants keep producing these latency patterns, why the usual tests and code reviews miss them, and how builders can make the cost of a network call visible before it ships. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 27 · 7 min

    Why Does AI Code Take the Path of Least Resistance?

    AI coding tools put new code wherever it is easiest to reach. They import whatever is already in scope, add a parameter to a function that already exists, and read shared state directly because it is right there. Each change works and passes review, but over dozens of sessions the codebase ends up held together by convenient links nobody chose. This episode explains why the AI's local optimization creates tight coupling, and why builders have to make boundaries explicit and enforceable instead of hoping the model will respect them. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 26 · 10 min

    How to Build Multi-Agent Systems That Remember Your Work with Claude

    Builders who string multiple Claude Code agents together usually hit the same wall. Each agent is capable, but the system as a whole forgets decisions, repeats mistakes, and drifts from the architecture between sessions. This episode argues that the model does not remember anything on its own. Memory in a multi-agent system comes from files, state, and handoff contracts, and the builder has to design all three on purpose. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 25 · 9 min

    Why Do AI Systems Assume Graceful Degradation Instead of Cascading Failures?

    AI-generated code handles failure as if it were a clean switch: the call either works or it throws, and a try/except with a fallback takes care of the rest. Real production failures are partial and slow. A timeout arrives after the write has already committed, or a retry fires a second webhook, or a half-refreshed token leaves the system in a state nobody designed for. Builders now ship AI-written error handling at scale, and that code looks defensive while it hides cascading failure modes. This episode explains why that happens and what the builder has to own. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 24 · 7 min

    Why Does AI-Generated Code Fail in Production? Error Handling Explained

    AI-generated code almost always ships with error handling that looks responsible: try/except blocks, logged messages, graceful fallbacks, retry loops. But much of it is theater. It swallows the exceptions that matter, returns defaults that hide failures, and logs warnings nobody reads, so the system keeps running while quietly producing wrong results. This episode explains why AI writes error handling that satisfies a code reviewer instead of an operator, and how builders can decide on failure behavior at the architecture level before the model decides it for them. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
  • September 23 · 9 min

    Why Do AI Code Timeouts Fail When Everything Goes Wrong?

    Ask an AI to write a function that calls an external service and you get clean, readable code that works perfectly when the service answers in 200 milliseconds. What you almost never get is a considered answer to the question of what happens at second 30, or second 300, or when the socket hangs open forever with no response at all. This episode examines why AI-generated code defaults to the happy path on timing, why the timeout value it picks is essentially a lottery ticket, and why the builder still owns every decision about what the system does while it waits. Produced by VoxCrea.AI This episode is part of an ongoing series on governing AI-assisted coding using Claude Code. 👉 Each episode has a companion article — breaking down the key ideas in a clearer, more structured way. If you want to go deeper (and actually apply this), read today’s article here: 𝐂𝐥𝐚𝐮𝐝𝐞 𝐂𝐨𝐝𝐞 𝐂𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 At aijoe.ai, we build AI-powered systems like the ones discussed in this series. If you’re ready to turn an idea into a working application, we’d be glad to help.

    • Transcript
Showing 1–20 of 83 episodes