#593 – February 01, 2026
deterministic, fast, and local rather than expensive LLM APIs
Simple OCR and NER feature extraction in C#
13 minutes by Scott Galloway
Scott shows how new local approach extracts text features without expensive LLM calls. It uses Tesseract for OCR text extraction and BERT NER models running locally through ONNX. The pipeline identifies people, organizations, and locations in documents. This method costs nothing per document and runs deterministically. It's much faster than cloud LLM APIs for basic entity extraction tasks.
Uno Platform MCP for C#: tools with eyes and hands
sponsored by Uno Platform
Uno Platform MCPs deliver context-rich answers to your IDE/CLI. Unlike typical MCPs, these agents directly interact with your running app through input and visual tree queries, enabling true runtime-aware AI assistance across Visual Studio, VS Code, Claude Code, GitHub Copilot CLI, and OpenAI Codex. Try now.
ASP.NET Core route constraints
5 minutes by David Grace
ASP.NET Core route constraints let you validate URL parameters directly in the route pattern. You can enforce data types like integers, booleans, and dates, or use string constraints for length and alphabetic characters. Regular expressions provide ultimate flexibility for custom patterns. When multiple routes could match the same request, use WithOrder to set priority and avoid conflicts.
.NET AI essentials
8 minutes by Jeremy Likness
Microsoft has released new tools to help .NET developers build AI apps. The main tool is Microsoft.Extensions.AI, which lets developers use one simple interface to work with different AI providers like OpenAI and Ollama. This removes the need to learn multiple different coding approaches. The tool also handles structured output, middleware for logging, and can work with images and other media types beyond just text.
The grand mystery of the missing 18 bytes
9 minutes by Steve Gordon
Steve noticed an 18-byte difference between benchmark memory allocation results and profiler data for the same code. Benchmarks showed 312 bytes allocated while profilers reported 294 bytes. The mystery was solved by understanding that benchmarks use garbage collector APIs that include memory padding for 8-byte alignment, while profilers track actual object sizes without padding.
Encrypting properties with System.Text.Json and a TypeInfoResolver modifier
14 minutes by Steve Gordon
Steve introduces a simple way to encrypt and decrypt selected JSON properties when using System.Text.Json in .NET. He shows how to mark sensitive properties with an attribute and use a JSON type info modifier to change serialization behavior. The example uses fake encryption to demonstrate the approach, preparing for a later version with real encryption and Azure Key Vault.
And the most popular article from the last issue was: