Notes on .NET, XAF, and building things

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

Browse by topic

All topics →

Latest articles

View all →
Jun 2, 20265 min read

Local AI Studio — Part 6: Giving the Reel a Soundtrack (Local Music Generation)

A silent reel is half a reel. So I generated the music locally too — same machine, no cloud — and stitched it onto the video with one ffmpeg command. Here's how, with the working engine (MusicGen), the one that failed in an instructive way (ACE-Step), and the mux step in between.

Jun 2, 20266 min read

Local AI Studio — Part 5: A 15-Second Reel, and When *Not* to Use a Video Model

I wanted a 15-second vertical reel of rural El Salvador's coast — fishing lanchas, palms, a sunset over the Pacific — in a papercut, Cubist, folk-art style. Every instinct said 'use a text-to-video model.' Every instinct was wrong. Here's why I built it from still images instead, the reasoning, the real numbers, and the finished reel playing in the page.

Jun 2, 20264 min read

Local AI Studio — Part 4: Local Video With LTX-Video and Wan 2.1

Part 4: generating video locally on a Mac. LTX-Video and Wan 2.1 both run on Apple Silicon — slowly, but they run. Plus the one MPS gotcha that turned my first Wan clip into rainbow soup, and the one-word fix that solved it.

Jun 2, 20264 min read

Local AI Studio — Part 3: FLUX, SDXL, and the fp8-vs-GGUF Myth

Part 3: real timings for SDXL and FLUX on an M1 Max — and the moment my 'obvious' fix for slow FLUX (switch fp8 to GGUF) turned out to change nothing at all. A short lesson in measuring before you believe.

Jun 2, 20264 min read

Local AI Studio — Part 2: Driving ComfyUI From Code

Part 2: ComfyUI's node graph is just JSON, and there's an HTTP API behind the pretty interface. That combination turns image generation into a plain function you can call from a script — batch it, loop it, run it overnight. Here's the whole pattern in about 60 lines.

More topics

All topics →
Jun 2, 20263 min read

Local AI Studio — Part 1: Installing ComfyUI on Apple Silicon

Part 1 of building a local AI studio on a Mac. We install ComfyUI on Apple Silicon the boring, reliable way — a clean Python venv with MPS-enabled PyTorch — pull the model zoo, and confirm the GPU is actually in play before we generate a single pixel.

Jun 2, 20264 min read

Building a Local AI Image & Video Studio on a Mac Studio: A Hands-On Series

I turned my Mac Studio into a fully local AI image and video studio with ComfyUI — no cloud, no API keys, no per-image bill. This is the map for a hands-on series: installing it on Apple Silicon, driving it from code, the FLUX-vs-SDXL reality, and generating video locally with LTX and Wan.

Jun 1, 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 1, 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.

Jun 1, 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.