<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>escamoteur blog</title><description>Thomas Burkhart on AI in apps, Flutter architecture, open source and indie apps.</description><link>https://escamoteur.dev/</link><language>en</language><item><title>Keep the context small: what the model sees on each turn</title><link>https://escamoteur.dev/blog/keep-the-context-small/</link><guid isPermaLink="true">https://escamoteur.dev/blog/keep-the-context-small/</guid><description>Six months ago neither I nor Claude believed a companion conversation would survive on four messages instead of the full transcript. It did, and on a small model it does more than save money.</description><pubDate>Sun, 04 Oct 2026 12:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>One engine, any model: a model-agnostic chat engine with prompt blocks per model</title><link>https://escamoteur.dev/blog/a-model-agnostic-engine-with-prompt-blocks-per-model/</link><guid isPermaLink="true">https://escamoteur.dev/blog/a-model-agnostic-engine-with-prompt-blocks-per-model/</guid><description>After a provider retired my model, switching became a requirement. How I built a chat engine where the model is a setting: structured output through a forced tool call, provider quirks kept in one place each, and a prompt that carries model-specific blocks. Plus the cheapest debugging method I know: ask the failing model why.</description><pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Don&apos;t guess what a model can do: run your own benchmark</title><link>https://escamoteur.dev/blog/dont-guess-what-a-model-can-do/</link><guid isPermaLink="true">https://escamoteur.dev/blog/dont-guess-what-a-model-can-do/</guid><description>A provider retired the model my product was built on. That forced me to test assumptions I&apos;d never checked: Haiku, which I had dismissed without using it, matched Sonnet at a third of the cost once the prompt stopped being tuned for Sonnet. How I compared models in two apps, what the numbers showed, and where the small model really does lose.</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>A testbench for your AI agent: reproducible runs for prompt changes and model swaps</title><link>https://escamoteur.dev/blog/a-testbench-for-your-ai-agent/</link><guid isPermaLink="true">https://escamoteur.dev/blog/a-testbench-for-your-ai-agent/</guid><description>A prompt edit is a code change you can&apos;t unit test, and a model swap is one setting away. How I built testbenches for two agent-based apps: replays, a simulated user, checks with baselines, token accounting, and why one run is never evidence.</description><pubDate>Thu, 01 Oct 2026 12:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Different models find different bugs: combining open models with Claude</title><link>https://escamoteur.dev/blog/combining-open-models-with-frontier-models/</link><guid isPermaLink="true">https://escamoteur.dev/blog/combining-open-models-with-frontier-models/</guid><description>Kimi and DeepSeek reported &quot;done&quot;, Claude Opus found 7 blocking issues. On the next feature it was the other way round. Why I now review with more than one model family, and how I move work off my Claude quota without losing quality.</description><pubDate>Tue, 29 Sep 2026 15:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Building my own multi-model coding harness with pi</title><link>https://escamoteur.dev/blog/building-a-multi-model-coding-harness-with-pi/</link><guid isPermaLink="true">https://escamoteur.dev/blog/building-a-multi-model-coding-harness-with-pi/</guid><description>When my Claude subscription runs out, I still want to work. How I built a backup harness with pi where open models survey, write tests, implement and review, each on its own model, with Claude one call away while the quota lasts. Plus the traps that cost me an evening each.</description><pubDate>Mon, 28 Sep 2026 09:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>How good and how expensive are open models? What I know after a week</title><link>https://escamoteur.dev/blog/how-good-and-how-expensive-are-open-models/</link><guid isPermaLink="true">https://escamoteur.dev/blog/how-good-and-how-expensive-are-open-models/</guid><description>Kimi wrote most of a real feature for about €20. Is that cheap? It depends less on the model than on the host, on cache prices and on how many turns your agents take. My measurements, next to Claude at list prices.</description><pubDate>Sun, 27 Sep 2026 09:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Running Chinese open models mostly safely: EU hosting changes the picture</title><link>https://escamoteur.dev/blog/running-chinese-open-models-safely-eu-hosting/</link><guid isPermaLink="true">https://escamoteur.dev/blog/running-chinese-open-models-safely-eu-hosting/</guid><description>Kimi, GLM, DeepSeek and Qwen don&apos;t have to mean sending your code to China. Where your data goes depends on who hosts the model, not who trained it. What EU hosting secures, what it can&apos;t, and the controls I use for the rest.</description><pubDate>Sat, 26 Sep 2026 10:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>How to save tokens in Claude Code: my agent team ate my usage limit in an hour</title><link>https://escamoteur.dev/blog/my-claude-code-agent-team-ate-my-usage-limit/</link><guid isPermaLink="true">https://escamoteur.dev/blog/my-claude-code-agent-team-ate-my-usage-limit/</guid><description>How to save tokens in Claude Code: what I found when my Claude Max limit suddenly ran out in an hour, and the skills, subagents and briefing rules that stopped my agents reading everything three times.</description><pubDate>Thu, 24 Sep 2026 18:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>A password vault for AI agents</title><link>https://escamoteur.dev/blog/a-password-vault-for-ai-agents/</link><guid isPermaLink="true">https://escamoteur.dev/blog/a-password-vault-for-ai-agents/</guid><description>How I keep deploy passwords out of files, commits and chat transcripts while Claude Code still runs my deployments, using Bitwarden Secrets Manager and secret injection.</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate><category>AI</category><category>Engineering</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Marketing B2C Apps on Social Media</title><link>https://escamoteur.dev/blog/marketing-b2c-apps-on-social-media/</link><guid isPermaLink="true">https://escamoteur.dev/blog/marketing-b2c-apps-on-social-media/</guid><description>I built two consumer apps and learned the hard way: good products don&apos;t sell themselves. Here&apos;s what actually stops the scroll and gets downloads.</description><pubDate>Fri, 10 Apr 2026 10:01:06 GMT</pubDate><category>Indie apps</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>The Unsung Heroes of OSS</title><link>https://escamoteur.dev/blog/the-unsung-heroes-of-oss/</link><guid isPermaLink="true">https://escamoteur.dev/blog/the-unsung-heroes-of-oss/</guid><description>Three open-source developers whose Flutter packages power thousands of apps but rarely get the recognition they deserve.</description><pubDate>Fri, 10 Apr 2026 09:52:48 GMT</pubDate><category>Open source</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Practical Flutter Architecture</title><link>https://escamoteur.dev/blog/practical-flutter-architecture/</link><guid isPermaLink="true">https://escamoteur.dev/blog/practical-flutter-architecture/</guid><description>Explore Flutter architecture, state management, and design principles for scalable, testable apps with minimal boilerplate code</description><pubDate>Wed, 26 Feb 2025 17:33:46 GMT</pubDate><category>Flutter</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>One to find them all: How to use Service Locators with Flutter</title><link>https://escamoteur.dev/blog/one-to-find-them-all-how-to-use-service-locators-with-flutter/</link><guid isPermaLink="true">https://escamoteur.dev/blog/one-to-find-them-all-how-to-use-service-locators-with-flutter/</guid><description>Use Service Locators with Flutter for efficient data management, enhancing app architecture and testing. Discover GetIt now!</description><pubDate>Sat, 22 Feb 2025 19:24:46 GMT</pubDate><category>Flutter</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Keeping widgets in sync with your data</title><link>https://escamoteur.dev/blog/keeping-widgets-in-sync-with-your-data/</link><guid isPermaLink="true">https://escamoteur.dev/blog/keeping-widgets-in-sync-with-your-data/</guid><description>Learn to sync widgets with data using proxy objects , error handling, and commands in Flutter for robust, multi-location displays and network logic</description><pubDate>Sun, 27 Oct 2024 13:16:40 GMT</pubDate><category>Flutter</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Understanding the Problems with Dogmatic Programming Advice</title><link>https://escamoteur.dev/blog/understanding-the-problems-with-dogmatic-programming-advice/</link><guid isPermaLink="true">https://escamoteur.dev/blog/understanding-the-problems-with-dogmatic-programming-advice/</guid><description>Balancing mutability/immutability in OOP and using proxy objects for efficient state management in Flutter</description><pubDate>Sun, 22 Sep 2024 16:08:09 GMT</pubDate><category>Engineering</category><category>Flutter</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Everything You Always Wanted to Know About HttpClients</title><link>https://escamoteur.dev/blog/everything-you-always-wanted-to-know-about-httpclients/</link><guid isPermaLink="true">https://escamoteur.dev/blog/everything-you-always-wanted-to-know-about-httpclients/</guid><description>Learn the efficient use of HttpClients in Flutter and Dart, including client reuse, closure, native implementations, and overcoming common pitfalls</description><pubDate>Wed, 03 Jul 2024 17:42:31 GMT</pubDate><category>Flutter</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item><item><title>Let&apos;s get this party started</title><link>https://escamoteur.dev/blog/lets-get-this-party-started-startup-orchestration-with-getit/</link><guid isPermaLink="true">https://escamoteur.dev/blog/lets-get-this-party-started-startup-orchestration-with-getit/</guid><description>If you haven&apos;t used GetIt before you might read this article first: One to find them all. If you are using GetIt for some time make sure to revisit the ReadMe in the API docs because a lot more was added in the last weeks. Like async factories and fa...</description><pubDate>Thu, 27 Feb 2020 07:32:07 GMT</pubDate><category>Flutter</category><category>Open source</category><author>hi@escamoteur.dev (Thomas Burkhart)</author></item></channel></rss>