<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Demian Brecht</title><description>Software, AI systems, and the occasional argument with an abstraction.</description><link>https://demianbrecht.com/</link><language>en-us</language><item><title>Runtime QA: Give the Agent the Loop, Not the Last Word</title><link>https://demianbrecht.com/posts/runtime-qa-give-the-agent-the-loop-not-the-last-word/</link><guid isPermaLink="true">https://demianbrecht.com/posts/runtime-qa-give-the-agent-the-loop-not-the-last-word/</guid><description>Runtime QA is judgment from end to end, so let the agent own the investigative loop. Separate its judgment from reviewable mechanics, stop for the decisions that carry consequences, and leave the last word with a person.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><category>ai-engineering</category><category>quality-assurance</category><category>agentic-workflows</category><category>runtime-testing</category><category>software-architecture</category></item><item><title>The division of the local harnesses</title><link>https://demianbrecht.com/posts/the-division-of-the-local-harnesses/</link><guid isPermaLink="true">https://demianbrecht.com/posts/the-division-of-the-local-harnesses/</guid><description>The most important question in AI architecture isn’t which model you use. It’s who owns the control loop. That choice affects cost, reliability, and how easily you can swap providers. In this article, I look at three categories of workflows and explore why the nature of the problem should determine the harness, and why code, rather than the model, should often drive the loop.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>ai-engineering</category><category>llm-architecture</category><category>agentic-workflows</category><category>ai-cost-optimization</category><category>software-design</category></item><item><title>Stop Asking LLMs to Be Deterministic</title><link>https://demianbrecht.com/posts/stop-asking-llms-to-be-deterministic/</link><guid isPermaLink="true">https://demianbrecht.com/posts/stop-asking-llms-to-be-deterministic/</guid><description>LLMs are stochastic by design. Reliable agent workflows come from surrounding that chaos with deterministic code, not from wishing the model were predictable.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><category>ai</category><category>automation</category><category>opensource</category><category>python</category></item><item><title>Automating Android Burp API Testing (Because Rebuilding This Sucks)</title><link>https://demianbrecht.com/posts/automating-android-burp-api-testing/</link><guid isPermaLink="true">https://demianbrecht.com/posts/automating-android-burp-api-testing/</guid><description>Reproducing Android-to-API security findings means juggling emulators, certificates, and proxy config you touch a few times a year. Here&apos;s how I automated the setup away.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><category>android</category><category>security</category><category>api</category><category>automation</category></item><item><title>Gen AI: Feeding the dormant hacker</title><link>https://demianbrecht.com/posts/gen-ai-feeding-the-dormant-hacker/</link><guid isPermaLink="true">https://demianbrecht.com/posts/gen-ai-feeding-the-dormant-hacker/</guid><description>A self-described tech curmudgeon on how generative AI rekindled the urge to tinker, explore, and build outside the comfortable set of tools built up over the years.</description><pubDate>Tue, 27 May 2025 00:00:00 GMT</pubDate><category>programming</category><category>ai</category><category>productivity</category><category>learning</category></item><item><title>The Complexities and Rewards of Open Sourcing Corporate Software Products</title><link>https://demianbrecht.com/posts/open-sourcing-corporate-software-products/</link><guid isPermaLink="true">https://demianbrecht.com/posts/open-sourcing-corporate-software-products/</guid><description>Two Salesforce engineers describe separating a Django API framework from a legacy application and navigating the process of releasing it as open source.</description><pubDate>Tue, 17 Nov 2020 00:00:00 GMT</pubDate><category>open-source</category><category>django</category><category>software-architecture</category><category>developer-workflow</category></item><item><title>Entry points in Python</title><link>https://demianbrecht.com/posts/entry-points-in-python/</link><guid isPermaLink="true">https://demianbrecht.com/posts/entry-points-in-python/</guid><description>What a Python entry point is, and how to use setuptools entry points to expose console scripts and plugin hooks in your own packages.</description><pubDate>Thu, 09 Apr 2020 00:00:00 GMT</pubDate><category>python</category><category>beginners</category><category>tutorial</category></item><item><title>Why the hell is my code so slow?! (aka performance analysis in Python)</title><link>https://demianbrecht.com/posts/why-the-hell-is-my-code-so-slow/</link><guid isPermaLink="true">https://demianbrecht.com/posts/why-the-hell-is-my-code-so-slow/</guid><description>Your feature shipped, passed review, and then someone flagged the latency. A walkthrough of profiling Python to find where the time actually goes before you start optimizing.</description><pubDate>Tue, 10 Mar 2020 00:00:00 GMT</pubDate><category>python</category><category>performance</category><category>tutorial</category></item><item><title>The lesser known (but incredibly useful) way of settings breakpoints in Python</title><link>https://demianbrecht.com/posts/the-lesser-known-way-of-setting-breakpoints-in-python/</link><guid isPermaLink="true">https://demianbrecht.com/posts/the-lesser-known-way-of-setting-breakpoints-in-python/</guid><description>You don&apos;t have to edit your source to set a Python breakpoint. Running your script through the pdb shell lets you break by line or function without touching the code.</description><pubDate>Tue, 03 Mar 2020 00:00:00 GMT</pubDate><category>python</category><category>productivity</category></item><item><title>You will pry vim from my cold, dead hands</title><link>https://demianbrecht.com/posts/you-will-pry-vim-from-my-cold-dead-hands/</link><guid isPermaLink="true">https://demianbrecht.com/posts/you-will-pry-vim-from-my-cold-dead-hands/</guid><description>Answering the funny looks: why I still reach for vim over an IDE: its ubiquity across *nix systems, the power of command-line debuggers, and a deliberately minimal .vimrc that travels anywhere.</description><pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate><category>vim</category><category>editors</category><category>tooling</category><category>developer-workflow</category></item><item><title>Inner Sourcing: The Mechanics</title><link>https://demianbrecht.com/posts/inner-sourcing-the-mechanics/</link><guid isPermaLink="true">https://demianbrecht.com/posts/inner-sourcing-the-mechanics/</guid><description>Part two: the communication, contributor model, and engineering practices that make an inner-sourcing culture practical.</description><pubDate>Wed, 04 Apr 2018 00:00:00 GMT</pubDate><category>innersource</category><category>open-source</category></item><item><title>Inner Sourcing: The Ups and Downs</title><link>https://demianbrecht.com/posts/inner-sourcing-the-ups-and-downs/</link><guid isPermaLink="true">https://demianbrecht.com/posts/inner-sourcing-the-ups-and-downs/</guid><description>Part three: the organizational and individual benefits of inner sourcing, plus the culture and scope-management risks to address.</description><pubDate>Wed, 04 Apr 2018 00:00:00 GMT</pubDate><category>innersource</category><category>open-source</category></item><item><title>Inner Sourcing: What&apos;s this?</title><link>https://demianbrecht.com/posts/inner-sourcing-whats-this/</link><guid isPermaLink="true">https://demianbrecht.com/posts/inner-sourcing-whats-this/</guid><description>Part one: why closed organizations repeat work, and what an inner-sourcing culture can borrow from open source.</description><pubDate>Wed, 04 Apr 2018 00:00:00 GMT</pubDate><category>innersource</category><category>open-source</category><category>culture</category></item><item><title>Dude, I&apos;m slagging your code. Not you.</title><link>https://demianbrecht.com/posts/dude-im-slagging-your-code-not-you/</link><guid isPermaLink="true">https://demianbrecht.com/posts/dude-im-slagging-your-code-not-you/</guid><description>Separating critique of the code from critique of the person who wrote it — a realization about code review that reshaped how I think about my career.</description><pubDate>Wed, 27 Apr 2016 00:00:00 GMT</pubDate><category>career</category><category>reviews</category><category>productivity</category><category>mentorship</category></item><item><title>Compiling CPython with a custom OpenSSL</title><link>https://demianbrecht.com/posts/compiling-cpython-with-a-custom-openssl/</link><guid isPermaLink="true">https://demianbrecht.com/posts/compiling-cpython-with-a-custom-openssl/</guid><description>A historical guide to building CPython 3.5 against a custom OpenSSL 1.0.2 installation to enable ALPN support on macOS.</description><pubDate>Wed, 28 Jan 2015 00:00:00 GMT</pubDate><category>python</category><category>cpython</category><category>openssl</category><category>macos</category></item><item><title>Advanced Mercurial Debugging</title><link>https://demianbrecht.com/posts/advanced-mercurial-debugging/</link><guid isPermaLink="true">https://demianbrecht.com/posts/advanced-mercurial-debugging/</guid><description>A real-world walkthrough of diagnosing a Mercurial HTTP 400 error caused by oversized discovery-request headers.</description><pubDate>Fri, 02 Jan 2015 00:00:00 GMT</pubDate><category>mercurial</category><category>debugging</category><category>http</category><category>python</category></item><item><title>From git to hg</title><link>https://demianbrecht.com/posts/from-git-to-hg/</link><guid isPermaLink="true">https://demianbrecht.com/posts/from-git-to-hg/</guid><description>A guide for prospective CPython contributors familiar with Git who need a practical Mercurial workflow built around bookmarks.</description><pubDate>Thu, 01 Jan 2015 00:00:00 GMT</pubDate><category>mercurial</category><category>git</category><category>version-control</category><category>python</category></item><item><title>My learnings on delivering technical presentations</title><link>https://demianbrecht.com/posts/my-learnings-on-delivering-technical-presentations/</link><guid isPermaLink="true">https://demianbrecht.com/posts/my-learnings-on-delivering-technical-presentations/</guid><description>Lessons from a first-time speaker on preparing, practicing, delivering, and learning from technical presentations.</description><pubDate>Mon, 28 Jul 2014 00:00:00 GMT</pubDate><category>presentations</category><category>public-speaking</category><category>career</category></item><item><title>From concept to announcement</title><link>https://demianbrecht.com/posts/from-concept-to-announcement/</link><guid isPermaLink="true">https://demianbrecht.com/posts/from-concept-to-announcement/</guid><description>A practical guide to taking a Python package from an initial idea through project setup, testing, PyPI distribution, and announcement.</description><pubDate>Mon, 09 Jun 2014 00:00:00 GMT</pubDate><category>python</category><category>open-source</category><category>packaging</category><category>testing</category></item></channel></rss>