<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>The Innovation Lab</title><description>David L. Bowman on building software, leading engineering teams and working with AI.</description><link>https://theinnovationlab.dev/</link><language>en-us</language><item><title>Agent Harness 101</title><link>https://theinnovationlab.dev/notes/agent-harness-101/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/agent-harness-101/</guid><description>Every coding agent is a short loop: ask the llm, run the tools it asks for, and stop when it asks for nothing. The harness is everything around that loop that keeps it safe and durable, and each of its primitives (session, thread, turn, tool, permission and agent) is written here as a real schema. Ends with a scripted demo that follows one message from the moment you press enter to the final answer.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>Article</category><category>AI</category><category>Agents</category><category>Architecture</category><category>Effect</category><category>TypeScript</category></item><item><title>Take the Keys Away From Your Agent</title><link>https://theinnovationlab.dev/notes/agent-network-isolation/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/agent-network-isolation/</guid><description>A process that runs model-authored code should hold no credential worth stealing and have no route to anywhere it could send one. Builds that from the bottom up: what TCP, HTTP and TLS actually are, how certificate authorities decide who you believe, and what a proxy can and cannot see. Ends with an interactive walkthrough of one request through every process that touches it, which you can rerun on a flat network to watch the whole thing become irrelevant.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><category>Article</category><category>Security</category><category>Networking</category><category>TLS</category><category>Certificate Authorities</category><category>Docker</category><category>Agents</category></item><item><title>AI Workflows That Don&apos;t Rot Your Codebase</title><link>https://theinnovationlab.dev/notes/ai-workflows/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/ai-workflows/</guid><description>AI is leverage only inside a disciplined loop — plan, devil&apos;s-advocate, execute, post-mortem, improve your skills. Let it push ahead unsupervised and the same tool quietly wrecks the project: drifting to mimic old code, writing docs that pass typecheck but lie, leaving half-refactors and parallel types behind. A field guide to the loop that ships and the anti-patterns that sink, with downloadable skills and a real brand-book deliverable.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><category>Article</category><category>AI</category><category>Workflows</category><category>Agents</category><category>Anti-Patterns</category><category>Skills</category><category>Post-Mortem</category></item><item><title>Schema.Redacted Across the HttpApi Wire</title><link>https://theinnovationlab.dev/notes/effect-redacted/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/effect-redacted/</guid><description>Schema.Redacted and Schema.RedactedFromValue are encode-forbidden by design — so they cannot be wire fields on either side of HttpApi. The reference repo demonstrates the failure modes with four endpoints, pins the exact encoder error messages in a backend test, and shows the working pattern: plain validated wire values, Redacted.make on receipt, Redacted.value at exactly one audit boundary inside the SQL repo.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>Article</category><category>Effect-TS</category><category>Schema.Redacted</category><category>HttpApi</category><category>PII</category><category>OpenTelemetry</category><category>Security</category></item><item><title>Testing Effect SQL Migrations You Can&apos;t Mock</title><link>https://theinnovationlab.dev/notes/effect-sql-migration-tests/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/effect-sql-migration-tests/</guid><description>PgMigrator.run wraps migration failures as MigrationError defects on the Cause — so a test asserting via Effect.exit + Cause.hasDies catches the bug class that mocks fundamentally cannot. Walks through the reference repo&apos;s eight tests, including a transformational split_part backfill that a V1 row survives end to end.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><category>Article</category><category>Effect-TS</category><category>PostgreSQL</category><category>PgMigrator</category><category>Testcontainers</category><category>Property Testing</category><category>Migrations</category></item><item><title>How Browsers Measure Text</title><link>https://theinnovationlab.dev/notes/text-measurement/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/text-measurement/</guid><description>An interactive explorable explanation of browser text measurement — from Canvas measureText() and Intl.Segmenter to greedy line-breaking, variable-width reflow, and shrinkwrap binary search. Build intuition for the prepare/layout two-phase architecture that powers modern text-heavy applications.</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><category>Article</category><category>Text Layout</category><category>Canvas API</category><category>Intl.Segmenter</category><category>Interactive</category><category>Browser APIs</category><category>Performance</category></item><item><title>Caging Chaos: Building Deterministic AI Chatbots with Effect</title><link>https://theinnovationlab.dev/notes/deterministic-ai-chatbots/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/deterministic-ai-chatbots/</guid><description>Engagement is shifting to chatbots. Users now expect prompt-based interaction. This article shows how to build AI chatbots that feel natural and engaging while remaining deterministic — using Effect-TS for type-safe tools, structured outputs, page-gated behavior, canned responses, and workflow integration.</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate><category>Article</category><category>AI</category><category>Effect-TS</category><category>Chatbots</category><category>TypeScript</category><category>Structured Outputs</category><category>Workflows</category></item><item><title>Austin JS Battle Deck</title><link>https://theinnovationlab.dev/notes/austin-js-battle-deck/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/austin-js-battle-deck/</guid><description>A creative battle deck for the December 2025 Austin JS holiday party. Using the PechaKucha format (20 slides, 20 seconds each), there&apos;s a secret to the slide order.</description><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate><category>Talk</category><category>Creative</category><category>Community</category><category>Improv</category><category>Battle Decks</category><category>PechaKucha</category></item><item><title>Spotify Pomodoro</title><link>https://theinnovationlab.dev/notes/spotify-pomodoro/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/spotify-pomodoro/</guid><description>A self-hosted pomodoro timer with Spotify integration and overtime mode that respects your flow state. Built with Effect-TS functional programming throughout, demonstrating production-grade architecture patterns with type-safe services, schema validation, and composable layers.</description><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate><category>Open Source</category><category>Effect-TS</category><category>Astro</category><category>Spotify API</category><category>SQLite</category><category>Open Source</category><category>Docker</category></item><item><title>Kavita to Obsidian</title><link>https://theinnovationlab.dev/notes/kavita-to-obsidian/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/kavita-to-obsidian/</guid><description>An Obsidian plugin that syncs reading annotations from Kavita into your vault as searchable markdown. Built with Effect-TS for type-safe error handling, comprehensive testing with 80% coverage, and professional OSS practices including semantic versioning, changelogs, and stress testing for 10,000+ annotations.</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><category>Open Source</category><category>Effect-TS</category><category>TypeScript</category><category>Obsidian</category><category>Open Source</category><category>Testing</category><category>Plugin Development</category></item><item><title>Enterprise i18n at Scale</title><link>https://theinnovationlab.dev/notes/enterprise-i18n-at-scale/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/enterprise-i18n-at-scale/</guid><description>Built a comprehensive internationalization system supporting 9 languages across ~1,800 pages using Next.js 16 and next-intl 4.4. This case study examines the architectural decisions, translation pipeline, and performance optimizations required to deliver a type-safe, maintainable i18n solution at enterprise scale.</description><pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate><category>Case Study</category><category>i18n</category><category>Next.js</category><category>TypeScript</category><category>Payload CMS</category><category>next-intl</category><category>Localization</category></item><item><title>Event-Driven Architectures</title><link>https://theinnovationlab.dev/notes/event-driven-architectures/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/event-driven-architectures/</guid><description>An interactive exploration of event-driven architectures using Effect v4&apos;s PubSub primitives. Build your own pub/sub topology and watch events animate through the system in real-time — all backed by type-safe schemas, scoped resource management, and stream composition.</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><category>Article</category><category>Event-Driven</category><category>Pub/Sub</category><category>Effect</category><category>Astro</category><category>Architecture</category></item><item><title>The System Behind $250M in Acquisitions</title><link>https://theinnovationlab.dev/notes/ocean-block-capital-transformation/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/ocean-block-capital-transformation/</guid><description>As CTO of Ocean Block Capital, I replaced spreadsheets with Salesforce, enriched every property record from five data sources and added a model that ranked which owners to call first. Lead generation grew 500%, process time fell 75%, and more than 60 brokers ran over $250M in acquisitions through it.</description><pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate><category>Case Study</category><category>Salesforce</category><category>Machine Learning</category><category>Data Analytics</category><category>Process Automation</category><category>CRM</category></item><item><title>CarTalk: From 8-Second Pages to 300ms</title><link>https://theinnovationlab.dev/notes/cartalk-technical-transformation/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/cartalk-technical-transformation/</guid><description>CarTalk brought me in to pay down years of technical debt on its site. Moving to Next.js and TypeScript, static generation and deduplicated API calls cut page loads from 8 seconds to 300ms and builds from 10 minutes to under 2, and left the team with a roadmap it could keep.</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><category>Case Study</category><category>Performance</category><category>Technical Debt</category><category>React</category><category>Next.js</category><category>TypeScript</category></item><item><title>AI in Software Engineering</title><link>https://theinnovationlab.dev/notes/ai-software-engineering-talk/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/ai-software-engineering-talk/</guid><description>This document provides an overview of AI&apos;s role in software engineering as of mid-2025, tailored for professional engineers already using AI in their workflows. It focuses on practical insights, including pros and cons, and emphasizes the core limitations of AI—particularly context and compute—as the key factors in tool selection.</description><pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate><category>Talk</category><category>AI</category><category>Software Engineering</category><category>Claude</category><category>MCP</category><category>Best Practices</category></item><item><title>Freelancing Isn&apos;t Free</title><link>https://theinnovationlab.dev/notes/austin-js-freelancing/</link><guid isPermaLink="true">https://theinnovationlab.dev/notes/austin-js-freelancing/</guid><description>If you&apos;re an engineer transitioning into freelancing, developing the skills necessary to succeed in this new landscape is essential. This talk covers the primary strategies for making money as a freelancer, from building confidence to finding high-paying clients, establishing professional credibility, and the practical steps needed to succeed as an independent contractor in the competitive tech market.</description><pubDate>Tue, 15 Oct 2024 00:00:00 GMT</pubDate><category>Talk</category><category>Freelancing</category><category>Business</category><category>Confidence</category><category>Professional Development</category></item></channel></rss>