Testing Blazor components with bUnit

In my Blazor projects, the business logic has been tested with xUnit for a long time, but the components themselves were not. If an @if showed the wrong button, I only saw it by opening the page. In this post, we add a bUnit test project to a Blazor application and cover the cases I run into most often.

[Read More]
Categories: .NET  Blazor  Tags: Blazor  bUnit  xUnit  Tests  .NET  C# 

How I built arbitres.ca with Claude and Copilot

Part 2 in the “Behind arbitres.ca” series: Part 1 – Scheduling umpires without Excel | Version française

In the first article, I introduced arbitres.ca and its stack. Here I move on to the method. At the end of July, the repository had 280 commits, 68 specs and 9 skills, built up over about two and a half months of evenings.

[Read More]
Categories: AI  Tags: AI  Claude Code  GitHub Copilot  Agent Skills  Blazor  Supabase 

arbitres.ca: scheduling baseball umpires without Excel

Part 1 in the “Behind arbitres.ca” series: Part 2 – How I built it with AI | Version française

Someone close to me umpires in minor league baseball. That’s how I saw the way associations handle their umpire assignments, often with an Excel file and a bunch of text messages. I also wanted a project big enough to really test Blazor and Supabase, and the way I work with AI.

[Read More]
Categories: Blazor  Azure  Tags: Blazor  Supabase  Azure  Static Web Apps  .NET  PostgreSQL 

Build an MCP server in C# and plug it into Claude Code

Part 3 in the “Agent Skills” series: Part 1 – What an agent skill is | Part 2 – Create your own skill | Version française

In the first article and the second one of this series, we saw what a skill is and how to create one. A skill gives instructions to the agent, but it doesn’t give it access to new data or new systems. For that, you need tools, and that’s the role of MCP.

[Read More]
Categories: AI  .NET  Tags: AI  Agent Skills  MCP  C#  .NET  Claude Code 

Structured Outputs with Ollama and .NET

Part 6 in the “Local AI with Ollama and .NET” series: Part 1 – Ollama and .NET | Part 2 – Local RAG | Part 3 – AI Agents | Part 3.5 – MCP Server | Part 4 – Microsoft Agent Framework | Part 5 – Aspire | Version française

Asking a local model to reply in JSON directly in the prompt works most of the time. The problem is the rest of the time: the parsing blows up, and rarely at a good moment. Here’s a simple trick to get reliable JSON with Ollama and .NET.

[Read More]

Orchestrating Ollama and Blazor with .NET Aspire

Part 5 in the “Local AI with Ollama and .NET” series: Part 1 – Ollama and .NET | Part 2 – Local RAG | Part 3 – AI Agents | Part 3.5 – MCP Server | Part 4 – Microsoft Agent Framework | Version française

Through the rest of the series, Ollama ran by hand: installed locally on the machine, the ollama pull done manually, and the .NET app pointing at Ollama’s local address hardcoded. It works, but it’s several manual steps to repeat on every machine. Aspire takes care of this configuration. I wanted to see what it changes.

[Read More]
Categories: .NET  AI  Tags: .NET Aspire  Ollama  Blazor  .NET  AI  Orchestration 

Function Calling: Teaching Tools to the Assistant

This post is part of the Voice Assistant on Raspberry Pi series.

In article #5, we injected weather data into every conversation, even for questions like “what’s your name?”. That wastes tokens. Function calling fixes this: the LLM decides when it needs a tool and only calls it when the question actually warrants it.

The complete code for this article is available on GitHub.

[Read More]

Real-Time Weather and Swapping to the Claude API

This post is part of the Voice Assistant on Raspberry Pi series.

The assistant responds well, but it has no idea what the weather is like outside. We wire up Open-Meteo, a free, key-less weather API. And while we’re at it, we swap Ollama for the Claude API: a single line in appsettings.json.

The complete code for this article is available on GitHub.

[Read More]
Categories: .NET  AI  Tags: Raspberry Pi  .NET  Ollama  Claude API  Open-Meteo 
Posts