Blog
Articles on AI in apps, Flutter architecture, open source and building my own apps. Formerly Guru Meditation on Hashnode.
-
Keep the context small: what the model sees on each turnAIEngineering
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.
-
One engine, any model: a model-agnostic chat engine with prompt blocks per modelAIEngineering
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.
-
Don't guess what a model can do: run your own benchmarkAIEngineering
A provider retired the model my product was built on. That forced me to test assumptions I'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.
-
A testbench for your AI agent: reproducible runs for prompt changes and model swapsAIEngineering
A prompt edit is a code change you can'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.
-
Different models find different bugs: combining open models with ClaudeAIEngineering
Kimi and DeepSeek reported "done", 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.
-
Building my own multi-model coding harness with piAIEngineering
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.
-
How good and how expensive are open models? What I know after a weekAIEngineering
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.
-
Running Chinese open models mostly safely: EU hosting changes the pictureAIEngineering
Kimi, GLM, DeepSeek and Qwen don'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't, and the controls I use for the rest.
-
How to save tokens in Claude Code: my agent team ate my usage limit in an hourAIEngineering
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.
-
A password vault for AI agentsAIEngineering
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.
-
Marketing B2C Apps on Social MediaIndie apps
I built two consumer apps and learned the hard way: good products don't sell themselves. Here's what actually stops the scroll and gets downloads.
-
The Unsung Heroes of OSSOpen source
Three open-source developers whose Flutter packages power thousands of apps but rarely get the recognition they deserve.
-
Practical Flutter ArchitectureFlutter
Explore Flutter architecture, state management, and design principles for scalable, testable apps with minimal boilerplate code
-
One to find them all: How to use Service Locators with FlutterFlutter
Use Service Locators with Flutter for efficient data management, enhancing app architecture and testing. Discover GetIt now!
-
Keeping widgets in sync with your dataFlutter
Learn to sync widgets with data using proxy objects , error handling, and commands in Flutter for robust, multi-location displays and network logic
-
Understanding the Problems with Dogmatic Programming AdviceEngineeringFlutter
Balancing mutability/immutability in OOP and using proxy objects for efficient state management in Flutter
-
Everything You Always Wanted to Know About HttpClientsFlutter
Learn the efficient use of HttpClients in Flutter and Dart, including client reuse, closure, native implementations, and overcoming common pitfalls
-
Let's get this party startedFlutterOpen source
If you haven'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...