Notes on .NET, XAF, and building things

Twenty years of XPO, application frameworks, and lately a lot of applied AI. 291 articles and counting.

Browse by topic

All topics →

Latest articles

View all →
Jul 4, 20266 min read

There's No ADB for iPhone: Automating React Native UI Tests on Real iOS Devices

If you come from Android like I do, you have a comfortable habit: plug in a device, talk to it over adb, script everything. So the natural question when you ship the iOS side of a React Native app is — can I do the same on a physical iPhone? The short answer is yes, but. And the 'but' lands squarely on the thing I care about most: running on a real device instead of a simulator.

Jul 4, 20265 min read

Speech-to-Text in React Native: Four Ways to Reach Android Parity

My React Native app transcribes voice on iOS just fine — Apple hands you a recognizer and you're done. Then I went to reach parity on Android and found the usual mobile story: the easy path exists, but it's a different easy path, with different tradeoffs. Here are the four routes I weighed, and the two questions that actually decide which one you pick.

Jul 3, 20264 min read

You Don't Need a GPU for Speech: Self-Hosting Whisper and TTS on a CPU VPS

The reflex when someone says 'speech-to-text' or 'text-to-speech' is to reach for a GPU. For real-time voice on a server, you mostly don't need one. The thing that actually makes CPU speech fast isn't CUDA — it's a set of instruction sets your cheap VPS already has. Here's how I run both transcription and synthesis on a plain CPU box, always-on, with no API keys and no GPU bill.

Jul 3, 20265 min read

FOMO, JOMO, and FOWT — The Fear of Wasted Tokens

I pay for the max plans — Codex and Claude Code — plus a monthly Azure token allotment. Here's the thing nobody warns you about: those are monthly quotas. Use them or lose them. And I've caught myself genuinely afraid to oversleep or take a day trip, because that's quota I'll never get back. That feeling needed a name, so I gave it one: FOWT, the Fear Of Wasted Tokens.

Jul 3, 20265 min read

What Is Token Maxxing? Spending Compute to Buy Correctness

There's a piece of slang making the rounds in the AI dev world: token maxxing. Strip away the meme and it names something real — the deliberate choice to spend more tokens on a problem because tokens have become the cheapest thing you can throw at it. Here's what it actually means, when it works, and when you're just lighting money on fire.

More topics

All topics →
Jun 24, 20268 min read

The Vision Model That Wasn't There: DeepSeek V4, a Vanished Paper, and a Recipe You Can Use Today

I set out to wire DeepSeek V4's much-described image-understanding into a side project — the model that 'calculates bounding boxes and relative dimensions step by step.' One problem: DeepSeek V4 can't see images at all. This is the detective story of how I found that out three different ways, the vanished research paper that explains where the claim came from, and the lesson that mattered most — a method is portable even when a model isn't. So I ported the recipe to Gemini and measured it.

Jun 20, 20264 min read

What Is OpenAI Codex Sites? Prompt-to-Hosted-App, With a Catch

OpenAI's Codex picked up a feature called Sites: describe an app in plain language and Codex builds it, runs it, deploys it, and hands you back a live hosted URL — no deploy pipeline of your own. It's a genuinely interesting glimpse of where agents are heading. It also ships with some walls worth knowing about before you get excited. Here's the honest rundown.

Jun 20, 20264 min read

LM Studio 0.4.16: Your Local Models Just Went Mobile

LM Studio is the app I reach for whenever I want to run a model on my own hardware, and the 0.4.16 release adds the thing I didn't know I wanted: a mobile app called Locally that lets me drive my big desktop models from my phone over LM Link. Here's what's new, and why this is a bigger deal than a point release sounds.

Jun 20, 20268 min read

Static Analyzers: How They Work and Why You Actually Need Them

A static analyzer reads your code without running it and tells you what's wrong — the bug you didn't see, the await you forgot, the disposable you leaked. After twenty years of .NET I treat them as non-negotiable. Here's what they actually are, how they work under the hood (with a peek at Roslyn), and why every serious project should have them turned on and turned up.

Jun 20, 20265 min read

What Is ACP? The Agent Client Protocol — LSP, but for AI Coding Agents

If you've watched the AI coding space lately, you've heard about MCP. Its quieter cousin is ACP — the Agent Client Protocol — and it solves a different problem: not how an agent talks to its tools, but how your editor talks to the agent. The one-line version: if MCP is USB-C for AI tools, ACP is LSP for AI agents. Here's what it is and why I think it matters.