Why Does AI Need So Many Data Centres?
One agent task can mean 20 model calls. Multiply that by everyone.
Read on Substack →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.
Short answers first, with the full walkthrough one click away.
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.
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.
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.
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.
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.
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
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.

Articles on AI, .NET, and building production-grade software systems
One agent task can mean 20 model calls. Multiply that by everyone.
Read on Substack →The industry needs more experienced developers than ever, and it has just switched off the thing that made them.
Read on Substack →Building stuff is fun
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.
IChatClient is the whole seam between providersTalks for .NET and Azure developers learning AI
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.
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.
Whether you want to collaborate on something, ask a question, or just say hi — feel free to reach out.