~$ learn-ai --stack=dotnet,azure --location=Melbourne

Learn to build AI applications

I'm Stuart, a developer, writer and speaker with 20+ years in .NET and Azure. I write and speak to help developers and tech leads move into AI work: building agents in .NET, finding a learning path, and bringing their teams along.

Learning to Build AI: Common Questions

Short answers first, with the full walkthrough one click away.

How do I learn to build AI applications as a .NET developer?

Build one small agent in C# that calls one tool, then grow it. Use the Microsoft Agent Framework with an IChatClient, expose your tools over MCP, and add A2A when one agent needs to talk to another. The Learn page puts the articles in that order, and ship-ai-harness is a complete runnable example.

What is Learn to Build AI?

Learn to Build AI is Stuart Dobson’s free publication for .NET and Azure developers moving into AI work. It covers agents, MCP, A2A and Foundry in C#, with working code you can run. It lives at learntobuildai.substack.com, and the articles are indexed on the Learn page.

How do I add AI to an existing .NET application?

Start with one feature inside the app you already have. Put a single model call behind IChatClient, ship it, then add tools once it earns its place. You don’t need a rewrite. The full walkthrough is in How to Add AI to Your Existing .NET Application Without a Rewrite.

What is the difference between MCP and A2A?

MCP is how an agent uses a tool. A2A is how an agent talks to another agent. Most real systems need both, and the design question is where to draw the line between them. See Agent2Agent (A2A): The Other Protocol .NET Architects Need to Know.

Can I turn my Azure Functions into MCP tools?

Yes. One NuGet package and a few attributes expose existing Azure Functions as an MCP server that Copilot, Foundry agents and any MCP client can call. The steps are in Your Azure Functions Are Already MCP Tools.

Who is Stuart Dobson?

Stuart Dobson is a developer, writer and speaker in Melbourne with 20+ years in .NET and Azure. They have worked in architecture and platform engineering at startups, ASX-listed companies and large enterprises, and now write about building AI in .NET. They also speak at Melbourne meetups, see Talks.

Last updated

About Me

I started writing code at around age 14 when I built a Breakout clone in Blitz Basic on the Amiga 1200.

Over 20+ years I've worked in architecture and platform engineering, at startups, ASX-listed companies and large enterprises, and I've led engineering teams through acquisitions and major platform modernisations on .NET and Azure. I explain AI the way I learned it: by building it into real systems and keeping it working.

I build agents in C# with Microsoft Agent Framework, MCP, A2A and Foundry, and I publish the code so you can run it yourself: ship-ai-harness and CodeGuard AI, a multi-agent code reviewer.

I write at Learn to Build AI, speak at Melbourne meetups, and I use these tools every day, not just write about them. If you're a .NET developer making the same move into AI, the Learn page is a good place to start.

Read my Blog

20+
Years shipping software professionally
10+
Years building on Azure AI
14+
Years writing about .NET
Amiga 1200 with LED lights

Learn to Build AI - Latest Articles

Articles on AI, .NET, and building production-grade software systems

Get new posts by email

Practical writing on getting good at AI on .NET and Azure. Free, and you can leave whenever you like.

Or subscribe on Substack (opens in new tab).

Open Source Projects

Building stuff is fun

.NET C# Microsoft Agent Framework Agents

ship-ai-harness

A starship AI built on the Microsoft Agent Framework harness, in C#. AURORA is the ship's intelligence — a HarnessAgent wrapped around an IChatClient — running against a real simulation with hull integrity, reactor heat, power budgets, and a crew who can die. Companion code for a four-part blog series and conference talk on what the harness gets you, and where its defaults quietly bite.

Read-only sensor tools first — AURORA reports what it can't yet act on, and says so
Deterministic simulation: same scenario + seed reproduces the same voyage, 57 tests with no model calls
Model-swappable by design — IChatClient is the whole seam between providers
View on GitHub (opens in new tab)

Talks

Talks for .NET and Azure developers learning AI

Topics I speak on

One Package Away: Turning Azure Functions into AI Agent Tools with MCP

If you already run Azure Functions, you're close to having an MCP server. A live demo of exposing existing functions as tools for Copilot, Foundry agents and any MCP client.

Building Agents in C# with Microsoft Agent Framework

A starship simulation as the test bed for the hard parts: state, tool-call accuracy, and writing deterministic tests for a system that talks back.

Connect

Whether you want to collaborate on something, ask a question, or just say hi — feel free to reach out.