Notes on .NET, XAF, and building things
Twenty years of XPO, application frameworks, and lately a lot of applied AI. 275 articles and counting.
Browse by topic
All topics →Latest articles
View all →
What Is Postiz? Self-Hosting Your Social Scheduling (and the Gotchas Nobody Warns You About)
Postiz is an open-source, self-hostable social media scheduler — think Buffer or Hootsuite, but running on your own box with your own API key. I moved my channels onto it and it's genuinely good. It also taught me four things the README is quiet about: a YouTube token that dies every seven days, two completely separate auth systems, a reschedule endpoint the public API can't touch, and the fact that some platforms simply won't talk to a personal account at all — they demand a business or creator account first. Here's what Postiz is, why you'd self-host it, and the gotchas so you don't lose an afternoon to them like I did.

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.

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.

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.
More topics
All topics →
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.

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?

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.

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.