Notes on .NET, XAF, and building things
Twenty years of XPO, application frameworks, and lately a lot of applied AI. 258 articles and counting.
Browse by topic
All topics →Latest articles
View all →
Microsoft's New AI Models from Build 2026: Aion and MAI, and How to Actually Use Them
At Build 2026 Microsoft shipped two very different kinds of AI model: Aion 1.0, a pair of small models that run on-device inside Windows, and the MAI family (Image-2.5, Transcribe-1.5), which live in the cloud. The interesting part isn't the benchmarks — it's where each one runs. Here's what they are and, more usefully, exactly how you can use each one depending on whether you're on a Mac, a Copilot+ PC, or just want a cloud API.

EnvPane: How a Windows Person Manages Environment Variables on a Mac
I'm a Windows person at heart — Windows Terminal just feels right, especially how trivially you can bump the font size. The macOS Terminal never clicked for me, so I never settled into the 'edit your shell rc' way of managing environment variables. And I have a lot of them: API keys and secrets for AI agents and day-to-day dev. EnvPane is the little preference pane that solved it — a GUI list of variables, applied to every app instantly.

Getting Started with Microsoft.Extensions.AI — Part 1: One Interface, Any Model
Discover how `Microsoft.Extensions.AI` provides a single `IChatClient` interface to seamlessly swap between cloud and local LLM providers with just one line of code.

Microsoft VibeVoice: Frontier Open-Source Voice AI, and How to Run It Locally
VibeVoice is Microsoft's open-source frontier voice-AI family — long-form, multi-speaker podcasts from text, a real-time streaming TTS model, and a 60-minute ASR model. It's also a cautionary tale: the headline TTS model was pulled over deepfake misuse. Here's what it does, the clever 7.5 Hz architecture behind it, and exactly how to run the parts you still can locally — including on Apple Silicon.

Graphify: Turn Any Folder Into a Knowledge Graph Your LLM Can Actually Use
Pointing an AI coding assistant at a big codebase means it re-reads the same raw files over and over, burning tokens and blowing past the context window. Graphify does the expensive analysis once and compresses a whole folder — code, PDFs, screenshots, diagrams — into a queryable knowledge graph the LLM traverses instead. On a real mixed corpus: 71.5× fewer tokens per query.
More topics
All topics →
Stop Feeding LLMs Raw Files: Save Tokens with Microsoft MarkItDown (CLI + MCP)
Every PDF, Word doc, spreadsheet, or web page you hand an LLM gets paid for in tokens — and raw formats are full of markup the model doesn't need. Microsoft's MarkItDown converts all of them to clean, token-efficient Markdown. I measured a real page: 793 KB of HTML became 304 KB of Markdown — about 62% fewer tokens. Here's the tool, its CLI, and its MCP server.

Making a Country Legible to AI: My mcp.sv Hobby Project
mcp.sv is a hobby project of mine with one goal: make the whole state of El Salvador visible from one place, to any AI client. This is the reflective version — why I built it, what it covers today (279 documents across 11 categories), and the real question underneath it: what does it actually take to make a country legible to an AI?

How mcp.sv Does Multilingual Search and Structured RAG
mcp.sv — the El Salvador national MCP — has to answer questions about Salvadoran law and government in Spanish, English, and Russian, over documents that are almost entirely Spanish. Here's how it does it: not with one big multilingual model at query time, but with layers — synthetic cross-language aliases, language-specific full-text search, heading-aware structured chunking, and a hybrid keyword+vector blend, all precomputed so the read path stays fast and inference-free.

Set XAF Blazor ViewItems Free: Direct URLs, Parameters, and a REST API
An XAF ViewItem is normally trapped inside the app — reachable only after login and navigation. No shareable link, no URL parameters, no way to call it from a bot. Here's a pattern that frees it: build the ViewItem's UI as a plain Blazor component, then surface that one component three ways — the XAF ViewItem, a routable /chat?message=… page, and a REST API.

Getting Started with Semantic Kernel — Part 3: Running Local Models (LM Studio / Ollama)
In the final part of our Semantic Kernel series, I'll show you how to run your Semantic Kernel applications against local LLMs like LM Studio or Ollama, completely eliminating cloud costs while keeping your existing kernel code almost untouched.