Notes on .NET, XAF, and building things

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

Browse by topic

All topics →

Latest articles

View all →
Jun 18, 20267 min read

Judging the Winner: Tests and LLM-as-Judge as the Referee

The fan-out script from the last post hands you N finished attempts at the same task and then stops — it deliberately leaves the hardest question to you: which one is actually best? This post is about turning that judgment into a real pipeline. A two-stage referee: tests as the objective first cut that eliminates anything broken, then a quality judge — your eyes for small diffs, an LLM-as-judge when there are too many to read — to pick among the survivors. I built the test stage, ran it, and pasted the real output, then laid out the judging recipe and the ways it quietly lies to you.

Jun 18, 20267 min read

A Real Agent Fan-Out: One Task, N Worktrees, Pick the Winner

In the last post I argued that git worktrees are the substrate that makes safe parallel agents possible. This is the hands-on follow-up: a small, real bash script that spins up N isolated worktrees, runs the same task in each one at the same time, and prints a diff summary so you can pick the best result and throw the rest away. I built it, ran it, and pasted the actual output. It's about forty lines, and once you see it work, the 'fan out, compare, keep the winner' pattern stops being a buzzword and becomes something you can run this afternoon.

Jun 18, 20268 min read

Git Worktrees, and How Coding Agents Use Them

For years I treated a git repo as a single desk: one working directory, one branch checked out at a time, and a lot of stashing whenever I had to jump between tasks. Git worktrees quietly fix that — they let one repository have many working directories at once, each on its own branch, all sharing the same history. That used to be a nice convenience. Now that I run coding agents in parallel, it's become essential infrastructure: the cleanest way to let several agents work at the same time without clobbering each other. Here's what worktrees are, the handful of commands you actually need, and why every serious agent harness reaches for them.

Jun 17, 202611 min read

Decompiling and Recompiling .NET Apps — and How to Protect Your Binaries

Hand someone a .NET DLL and you've handed them most of your source code. C# doesn't compile to machine code — it compiles to IL, and the IL carries your class names, method names, and structure right along with it. The good news is that the same property makes great tools possible; the uncomfortable news is that anyone can read, patch, and recompile your app in an afternoon. Here's how decompilation actually works, a real decompile-patch-recompile loop, and the honest menu of things you can do to make it harder.

Jun 17, 20268 min read

imgproxy: Getting Back the One Thing I Missed from Appcelerator Titanium

Sharing the same images between a mobile app and a web app — each sized right for its screen — is a problem I've been chasing for years. Back in my Appcelerator Titanium days, the cloud backend solved it for me: upload a photo once, get back properly sized versions for whoever asked. Then that service went away. imgproxy is how I get that capability back — self-hosted, open source, and serving every app in my fleet from a single URL.

More topics

All topics →
Jun 17, 20268 min read

Getting Started with Microsoft.Extensions.AI — Part 4: Tools, Functions & the Agent Framework

Let's empower our LLMs to interact with the real world by letting them call our C# code, then see how the Agent Framework elevates this to autonomous orchestration.

Jun 16, 20269 min read

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.

Jun 15, 20267 min read

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.

Jun 15, 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 15, 20267 min read

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.