Notes on .NET, XAF, and building things
Twenty years of XPO, application frameworks, and lately a lot of applied AI. 252 articles and counting.
Browse by topic
All topics →Latest articles
View all →
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.

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

Why We Added JWT Refresh Tokens to the XAF Web API (and How)
The XAF Web API hands you JWT authentication out of the box — but with a long-lived, stateless access token you can't revoke. That's a security problem and a UX problem. Here's why we layered refresh tokens with rotation and reuse-detection onto XAF's security system, and the real XPO-backed code that does it.

Reading Image-Only PDFs with a Local Model: Azure Foundry Local
A companion to the LM Studio post: extract text from scanned, image-only PDFs using Microsoft's Azure Foundry Local as the on-device model runtime. Foundry Local's catalog is text-only today, so the honest design splits the work — Tesseract turns pixels into raw text, and a local Phi/Qwen model cleans, structures and summarizes it. All on your own hardware, no cloud.

Reading Image-Only PDFs with a Local Vision Model (LM Studio)
Some PDFs aren't really PDFs — they're photos of paper with a .pdf extension and no text layer. Here's how I extract their text with a vision LLM running entirely on a local machine via LM Studio: render each page to a PNG, send it to an OpenAI-compatible /v1/chat/completions endpoint, get the transcription back. No cloud, no API bill.