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 →
Jun 9, 20266 min read

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.

Jun 9, 20266 min read

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.

Jun 9, 20266 min read

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.

Jun 8, 20267 min read

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?

Jun 8, 20268 min read

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 →
Jun 8, 20266 min read

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.

Jun 8, 20264 min read

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.

Jun 7, 20267 min read

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.

Jun 7, 20267 min read

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.

Jun 6, 20267 min read

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.