Notes on .NET, XAF, and building things
Twenty years of XPO, application frameworks, and lately a lot of applied AI. 272 articles and counting.
Browse by topic
All topics →Latest articles
View all →
A Practical Guide to Cheap and Local AI: OpenRouter, Gateways, and Local Models
In Part 1 I argued that price is a feature and that the real skill is right-sizing the model to the task. This is the how-to: the three tiers of cheap inference (aggregators like OpenRouter, a self-hosted gateway, and fully local models), how to point your coding tools at them with bring-your-own-key, how to route a request to the cheapest model that can do the job, and how to run a blind eval so you actually know your cheap model is good enough. Tools and config, no vendor lock-in.

Price Is a Feature: The Case for Cheap and Local AI Models
I've got the local-model disease, and I don't want a cure. New cheap and open-weight models drop every week, prices on the frontier keep climbing, and somewhere in there is a quiet truth most agentic-coding hot-takes miss: price is a feature. A model that costs cents instead of dollars doesn't just save money — it changes how you work, removes the mental tax on every prompt, and makes 'right-size the model to the task' the actual skill. Here's why I think cheap-and-local is the most important trend in AI tooling right now.

WWDC Deep Dive, Part 3: Xcode 27's Real Story — the Agent Client Protocol, MCP, and the End of the Simulator
The OS was a tick year, but Xcode 27 is where Apple made a serious play. It speaks MCP, it added a real chat experience — and the sleeper feature is the Agent Client Protocol, which lets you plug your own CLI harness (Copilot, Claude, and the rest) into native Xcode. Meanwhile the simulator is being replaced by a Device Hub, and the whole thing points at the 'closing the loop' wave that native developers have been late to. Here's what changed in the part of WWDC that actually affects how you write code.

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.

WWDC Deep Dive, Part 2: Safari Goes Vibe-Coding — On-the-Fly Extensions, Notify Me, and Apple's Quiet Web-Scraping Turn
The most interesting thing Apple did at WWDC wasn't a model — it was Safari quietly becoming a vibe-coding surface. You can now describe a browser extension in natural language and have Safari generate it on the fly, ask it to 'notify me when this page changes,' and let it change passwords for you in the background. It's clever and a little unsettling, and it points at a question every app developer should be asking: how do I make MY app scriptable by natural language?
More topics
All topics →
Getting Started with Microsoft.Extensions.AI — Part 3: Pipelines, Embeddings & Search
Let's dive into some powerful `Microsoft.Extensions.AI` features: building flexible request pipelines with middleware and performing semantic search with embeddings.

WWDC Deep Dive, Part 1: Apple's Native AI for Developers — Foundation Models, Free Cloud Compute, and the Siri Intent Trap
Apple's WWDC was a 'tick' year for the OS, but for developers building AI features it quietly moved the needle. The on-device model got smarter, there's now a bigger server-backed model that's free for small developers, and there's even a foundation-models CLI. The catch is everything around it: a confusing two-framework story, a plugin system for third-party models, and a Siri integration that still makes you pour your app into Apple's pre-defined schemas instead of just letting you ship an MCP server. Here's what actually matters if you build apps.

Control Your Android Phone From Your Desktop With scrcpy
A phone is a tiny screen you tap with one finger. A desktop has a real keyboard, a real pointer, and a 27-inch display. So why do I keep picking the phone up to do something I could do faster from the machine already in front of me? scrcpy fixes that: it puts a live, controllable window of your Android phone on your desktop — no app to install on the phone, no root, no cloud. Here's what it is, how it works, and the setup I actually use.

Brownfield Projects Are a Gold Mine for Training Agents
In my last post I described teaching an assistant my 'house style' by grading it against hidden golden cases. The obvious question is: where do you get the gold? Everybody's instinct is to start a clean little repo with tidy examples. That's exactly backwards. The richest training material I own isn't the shiny new project — it's the big, old, crusty brownfield beast nobody wants to touch. It's been quietly labeling a dataset for ten years. Here's why the mess is the treasure.

Teaching a Machine Your House Style
I have a 'house style' — that collection of small, stubborn opinions about how a thing should be built that I can no longer fully explain. A junior writes something that compiles, passes the tests, ships, and I still feel an itch on the back of my neck, because it isn't how we do it here. So I asked myself a more interesting question than 'can an AI write code': could I teach a machine my house style? Could I get it to write code that doesn't make me itch? This is the story of how I stopped asking the assistant to write good code and started giving it an exam it could fail.