<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Bob Ulrich</title><description>Notes from running Claude Code at scale. AI-assisted development, parallel agent orchestration, and what actually ships.</description><link>https://tech.bdigitalmedia.io/</link><language>en-us</language><item><title>The Cost of Accuracy</title><link>https://tech.bdigitalmedia.io/blog/the-cost-of-accuracy/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/the-cost-of-accuracy/</guid><description>You don&apos;t buy answers from a frontier model, you buy passes. Most real tasks take more than one, and the verification passes are where the budget actually goes.</description><pubDate>Tue, 26 May 2026 13:35:06 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>cost</category><category>agents</category><category>verification</category><category>evals</category></item><item><title>Friction Is the Feature</title><link>https://tech.bdigitalmedia.io/blog/friction-is-the-feature/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/friction-is-the-feature/</guid><description>The four-practice discipline I built after eighteen months of heavy AI use. Without deliberate friction, AI compounds capability and dependence.</description><pubDate>Tue, 12 May 2026 13:34:46 GMT</pubDate><category>ai</category><category>claude-code</category><category>discipline</category><category>skill-atrophy</category><category>overreliance</category></item><item><title>The Harness Is the Bottleneck: Five Prompts That Broke on Opus 4.7</title><link>https://tech.bdigitalmedia.io/blog/harness-is-the-bottleneck-five-prompts-broke-on-opus-4-7/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/harness-is-the-bottleneck-five-prompts-broke-on-opus-4-7/</guid><description>Adaptive thinking and a literalness shift turned the Opus 4.7 prompt into a multi-dimensional contract. Half your prompt library signs old terms.</description><pubDate>Sun, 10 May 2026 19:31:38 GMT</pubDate><category>ai</category><category>claude</category><category>prompt-engineering</category><category>evals</category></item><item><title>LLM Fundamentals Part 9: The Agentic Loop</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-agentic-loop/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-agentic-loop/</guid><description>The agentic loop is a while loop that checks stop_reason, executes tools, and returns results. It is 10 lines of code that depend on everything from posts 0-8.</description><pubDate>Sun, 10 May 2026 14:36:54 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 10: From Loop to Agent</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-from-loop-to-agent/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-from-loop-to-agent/</guid><description>Scaling an agentic loop to production means managing cost, context, and complexity. A roadmap: prompt caching, model routing, compaction, subagents, MCP.</description><pubDate>Sun, 10 May 2026 14:36:54 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 8: Tool Use</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-tool-use/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-tool-use/</guid><description>Tool use lets Claude call functions you define. You ship schemas, the model picks when to call, your code runs the operations. Prerequisite for agents.</description><pubDate>Sun, 10 May 2026 14:36:54 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 7: Structured Output</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-structured-output/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-structured-output/</guid><description>Structured outputs guarantee JSON schema conformance at the API level, which removes an entire category of parsing and validation code from your pipeline.</description><pubDate>Fri, 08 May 2026 11:33:25 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>Karaoke Audio by Voice, 200 Miles Out</title><link>https://tech.bdigitalmedia.io/blog/karaoke-audio-by-voice-200-miles-out/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/karaoke-audio-by-voice-200-miles-out/</guid><description>Built a word-by-word audio sync feature for a blog post without touching my laptop. Voice on the phone, agents on the laptop, every change shipped to prod.</description><pubDate>Sun, 03 May 2026 15:21:00 GMT</pubDate><category>ai</category><category>claude-code</category><category>remote</category><category>agents</category></item><item><title>LLM Fundamentals Part 6: Extended Thinking</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-extended-thinking/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-extended-thinking/</guid><description>Extended thinking gives Claude a reasoning scratchpad before responding. It costs output tokens but measurably improves accuracy on hard problems.</description><pubDate>Sat, 02 May 2026 15:01:20 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>When &apos;Working&apos; Isn&apos;t Repeatable</title><link>https://tech.bdigitalmedia.io/blog/working-isnt-repeatable/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/working-isnt-repeatable/</guid><description>Frontier LLMs are not deterministic, even at temperature=0. Same prompt, five different answers. Why it compounds when you stack LLMs, and how to recover.</description><pubDate>Wed, 29 Apr 2026 13:24:25 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>evals</category><category>stochasticity</category></item><item><title>LLM Fundamentals Part 5: Prompt Engineering vs Harness Engineering</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-prompt-engineering/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-prompt-engineering/</guid><description>As models get smarter, the value shifts from crafting prompts to designing the system around them. Where the prompt ends and the harness begins is the question.</description><pubDate>Mon, 27 Apr 2026 22:03:07 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>The exponential power of scaffolding</title><link>https://tech.bdigitalmedia.io/blog/exponential-ai-snowball-case-study/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/exponential-ai-snowball-case-study/</guid><description>A 16-hour Claude Code session shipped a long-form post, three SVG diagrams, a CI script, and four legacy fixes from a seven-word instruction.</description><pubDate>Mon, 27 Apr 2026 22:02:36 GMT</pubDate><category>ai</category><category>productivity</category><category>claude-code</category><category>case-study</category></item><item><title>RAG as a Tool, Not a Pipeline: An On-Call Investigator on Mastra and Bedrock</title><link>https://tech.bdigitalmedia.io/blog/rag-on-call-investigator-mastra-bedrock/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/rag-on-call-investigator-mastra-bedrock/</guid><description>Long context did not kill RAG for incident response. Per-section indexing in pgvector, hybrid .docx extraction, an iterative Mastra agent loop on Bedrock.</description><pubDate>Mon, 27 Apr 2026 22:02:36 GMT</pubDate><category>ai</category><category>rag</category><category>mastra</category><category>aws</category><category>bedrock</category><category>incident-response</category></item><item><title>Chat, Cowork, and Code, Oh My!</title><link>https://tech.bdigitalmedia.io/blog/claude-ai-cowork-claude-code-comparison/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/claude-ai-cowork-claude-code-comparison/</guid><description>Three Claude surfaces, three context windows, three different ways of knowing about your files. Confirmed only from Anthropic&apos;s own documentation.</description><pubDate>Sat, 25 Apr 2026 21:15:31 GMT</pubDate><category>ai</category><category>claude</category><category>claude-code</category></item><item><title>LLM Fundamentals Part 4: Messages API</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-messages-api/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-messages-api/</guid><description>Every Claude API call is stateless. You send roles, messages, and the full conversation history each time. Here is how that structure works.</description><pubDate>Sat, 25 Apr 2026 17:18:01 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>A Three-Bar Statusline for Claude Code</title><link>https://tech.bdigitalmedia.io/blog/cc-context-monitor-statusline/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/cc-context-monitor-statusline/</guid><description>A one-command Claude Code plugin renders three progress bars: context fill, 5-hour session burn, 7-day weekly quota. No ccusage required on CC v2.1.x+.</description><pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>claude-code</category><category>plugins</category><category>shell</category></item><item><title>Your Claude Skill Is a Pile of Markdown. Ship It Like Software.</title><link>https://tech.bdigitalmedia.io/blog/evaluating-a-claude-skill-before-shipping/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/evaluating-a-claude-skill-before-shipping/</guid><description>Six phases to ship a Claude skill like software: behavioral eval, packaging, review, CI, install verification, governance. Each catches a different bug.</description><pubDate>Sun, 19 Apr 2026 16:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>eval</category><category>plugins</category></item><item><title>Part 3: Four Fix Patterns for AI Code Review (and the AI-Auditing-AI Problem)</title><link>https://tech.bdigitalmedia.io/blog/ai-code-review-fix-patterns/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/ai-code-review-fix-patterns/</guid><description>Part 3 of 3. Four structural fix patterns that move an AI reviewer from ignorable to trustworthy, plus the meta problem of using AI to audit AI.</description><pubDate>Sun, 19 Apr 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>leadership</category></item><item><title>Part 1: Designing Automated PR Reviews with Claude Skills</title><link>https://tech.bdigitalmedia.io/blog/designing-ai-pr-review-claude-skills/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/designing-ai-pr-review-claude-skills/</guid><description>Part 1 of 3. Building a PR reviewer as structured Claude skills: anatomy of a review skill, why markdown beats prompt blobs, what makes iteration possible.</description><pubDate>Sun, 19 Apr 2026 01:26:02 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>leadership</category></item><item><title>Part 2: Diagnosing False Positives in AI Code Review</title><link>https://tech.bdigitalmedia.io/blog/diagnosing-ai-review-false-positives/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/diagnosing-ai-review-false-positives/</guid><description>Part 2 of 3. The cry wolf failure mode, the trust threshold step function, and a four-step cluster analysis that surfaces root causes, not symptoms.</description><pubDate>Sat, 18 Apr 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>leadership</category></item><item><title>Context Switching Is Metabolic Interval Training</title><link>https://tech.bdigitalmedia.io/blog/creatine-cognitive-performance-developers/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/creatine-cognitive-performance-developers/</guid><description>Your brain burns 20% of your body&apos;s energy. Creatine refills brain ATP 40x faster than any other pathway. What that means for devs at their keyboards.</description><pubDate>Wed, 15 Apr 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>health</category><category>workflow</category></item><item><title>LLM Fundamentals Part 3: Context Windows</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-context-windows/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-context-windows/</guid><description>Context windows are working memory, not storage. More tokens means more cost, more latency, and accuracy that degrades as context grows.</description><pubDate>Tue, 14 Apr 2026 12:00:00 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 0: What Are LLMs?</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-what-are-llms/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-what-are-llms/</guid><description>Large language models are prediction machines built on transformers. What they are, how developers use them, and where agent workflows fit in.</description><pubDate>Mon, 13 Apr 2026 12:37:41 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 2: How LLMs Generate Text</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-text-generation/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-text-generation/</guid><description>LLMs predict one token at a time from a probability distribution. Temperature, top-k, and top-p control that distribution, not creativity.</description><pubDate>Mon, 13 Apr 2026 12:00:00 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>LLM Fundamentals Part 1: Tokens Are Not Words</title><link>https://tech.bdigitalmedia.io/blog/llm-fundamentals-tokens/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-fundamentals-tokens/</guid><description>LLMs don&apos;t process words or characters. They process tokens, subword units that determine cost, speed, and context limits for everything you build.</description><pubDate>Sun, 12 Apr 2026 12:00:00 GMT</pubDate><category>ai</category><category>llm-fundamentals</category></item><item><title>When Slower Is Actually Faster in Claude Code</title><link>https://tech.bdigitalmedia.io/blog/superpowers-workflow-claude-code/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/superpowers-workflow-claude-code/</guid><description>A structured Claude Code workflow that replaced plan-and-pray with repeatable, first-pass-clean features.</description><pubDate>Thu, 02 Apr 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category></item><item><title>Telegram, Claude Code, and a Proposals Portal by Midnight</title><link>https://tech.bdigitalmedia.io/blog/proposals-portal-one-evening-claude-code/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/proposals-portal-one-evening-claude-code/</guid><description>Magic link auth, progress tracking, and one-command publishing. Built with Claude Code, Astro, Cloudflare KV, and Resend from my phone.</description><pubDate>Thu, 26 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>cloudflare</category><category>astro</category></item><item><title>My Mastra Agent Found a Production Bug in Five Minutes</title><link>https://tech.bdigitalmedia.io/blog/mastra-site-monitor-cloudflare-telegram/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/mastra-site-monitor-cloudflare-telegram/</guid><description>I stood up a Mastra workflow from my phone via Telegram to monitor Cloudflare Workers. It caught bots crashing my media proxy on the very first run.</description><pubDate>Sat, 21 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>cloudflare</category><category>workflow</category></item><item><title>Pushing to Prod From the Mountains</title><link>https://tech.bdigitalmedia.io/blog/pushing-to-prod-from-the-mountains/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/pushing-to-prod-from-the-mountains/</guid><description>AI agents and channels integration make it possible to ship production code from anywhere: a summit, a grocery line, a dog walk. Why it works.</description><pubDate>Fri, 20 Mar 2026 14:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>mobile</category></item><item><title>Self-Improving Claude Code Skills, Part 2: Full Automation</title><link>https://tech.bdigitalmedia.io/blog/automated-self-improving-skills/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/automated-self-improving-skills/</guid><description>The self-improving Claude Code skills loop from Part 1 now runs itself. A SessionEnd hook and daily GitHub Action generate improvement PRs automatically.</description><pubDate>Sun, 15 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category></item><item><title>How Smart Are Your Claude Code Skills?</title><link>https://tech.bdigitalmedia.io/blog/self-improving-claude-code-skills/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/self-improving-claude-code-skills/</guid><description>A self-improving loop for Claude Code skills that observes failures, finds patterns, and proposes fixes. Skills that improve over time instead of degrading.</description><pubDate>Sat, 14 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category></item><item><title>Is Your Content Discoverable by Humans Using AI?</title><link>https://tech.bdigitalmedia.io/blog/llm-seo-llms-txt-ai-discoverability/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/llm-seo-llms-txt-ai-discoverability/</guid><description>How I implemented LLM SEO across 3 sites with FAQ schema, entity linking, and 14 AI crawlers, plus an honest look at what actually works and what doesn&apos;t.</description><pubDate>Sat, 07 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>seo</category><category>astro</category></item><item><title>Claude Code Remote Control: Ship Code From Your Phone</title><link>https://tech.bdigitalmedia.io/blog/claude-code-remote-control-mobile-workflow/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/claude-code-remote-control-mobile-workflow/</guid><description>How I use Claude Code remote control with the iOS app to ship code from anywhere. No SSH tunneling, no exposed ports, just a Max subscription.</description><pubDate>Thu, 05 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>mobile</category></item><item><title>Turning Claude Code Agents Into an SEO Content Machine</title><link>https://tech.bdigitalmedia.io/blog/seo-content-machine-claude-code/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/seo-content-machine-claude-code/</guid><description>How I used Claude Code agents, context files, and slash commands to automate SEO for my Astro portfolio site: keywords, linking, and content audits.</description><pubDate>Wed, 04 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>seo</category><category>astro</category></item><item><title>Replacing Pixieset From My Phone on a Sunday Morning</title><link>https://tech.bdigitalmedia.io/blog/building-clip-storefront-with-claude/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/building-clip-storefront-with-claude/</guid><description>Pixieset can&apos;t sell individual video clips. So I built my own storefront with Claude Code, Cloudflare R2, and Stripe, from my phone, on a Sunday morning.</description><pubDate>Sun, 01 Mar 2026 12:00:00 GMT</pubDate><category>dev</category><category>astro</category><category>claude</category><category>cloudflare</category><category>stripe</category><category>video</category></item><item><title>Building a Filterable Resume Page with PDF Export and CI/CD for Astro</title><link>https://tech.bdigitalmedia.io/blog/resume-page-and-cicd-pipeline/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/resume-page-and-cicd-pipeline/</guid><description>How I built a filterable tech resume with multiple export formats and set up a proper CI/CD pipeline with GitHub Actions and Dependabot.</description><pubDate>Mon, 22 Dec 2025 14:00:00 GMT</pubDate><category>dev</category><category>astro</category><category>ci-cd</category><category>github-actions</category><category>linkedin</category></item><item><title>Two Hours to a Christmas Gift Tracker (My Kids Can&apos;t Know)</title><link>https://tech.bdigitalmedia.io/blog/building-xmas-tracker-with-claude/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/building-xmas-tracker-with-claude/</guid><description>How I went from &apos;I need to track Christmas gifts&apos; to a fully deployed, PIN-protected wishlist app before my morning coffee got cold.</description><pubDate>Sun, 21 Dec 2025 12:00:00 GMT</pubDate><category>dev</category><category>astro</category><category>claude</category><category>parenting</category></item><item><title>Dumber Models on Purpose</title><link>https://tech.bdigitalmedia.io/blog/dumber-models-on-purpose/</link><guid isPermaLink="true">https://tech.bdigitalmedia.io/blog/dumber-models-on-purpose/</guid><description>Why the most capable AI isn&apos;t always the right tool, and how friction in your workflow can lead to better architecture decisions.</description><pubDate>Wed, 08 Jan 2025 12:00:00 GMT</pubDate><category>dev</category><category>ai</category><category>claude</category><category>workflow</category><category>linkedin</category></item></channel></rss>