<feed xmlns="http://www.w3.org/2005/Atom">
<title>Laurent Kempé</title>
<subtitle>One of the Tech Head Brothers</subtitle>
<link href="https://laurentkempe.com/atom.xml" rel="self"/>
<link href="https://laurentkempe.com"/>
<updated>2026-04-12T07:22:38.523Z</updated>
<id>https://laurentkempe.com/</id>
<author>
<name>Laurent Kempé</name>
</author>
<generator uri="https://astro.build/">Astro</generator>
  <entry>
    <title>Automate Astro Upgrades with GitHub Agentic Workflows</title>
    <link href="https://laurentkempe.com/2026/04/11/github-agentic-workflows-astro-upgrade/"/>
    <id>https://laurentkempe.com/2026/04/11/github-agentic-workflows-astro-upgrade/</id>
    <published>2026-04-11T09:09:16.000Z</published>
    <updated>2026-04-11T09:09:16.000Z</updated>
    <summary type="html">&lt;p&gt;I opened GitHub on my phone before my morning coffee had finished brewing. There it was — a pull request, freshly opened, titled &lt;strong&gt;&amp;quot;chore: upgrade astro to v6.1.2&amp;quot;&lt;/strong&gt;. I hadn&apos;t asked anyone to do it. I hadn&apos;t filed an issue, assigned a task, or written a single command. An agent had woken up, checked the npm registry, read the Astro changelog, inspected my codebase, applied the changes, run &lt;code&gt;pnpm install&lt;/code&gt;, and handed me a PR to review. All I had to do was drink my coffee and click Merge.&lt;/p&gt;
&lt;p&gt;This is the promise of what GitHub Next is calling &lt;strong&gt;Continuous AI&lt;/strong&gt; — and it&apos;s already working on my blog.&lt;/p&gt;
</summary>
    <category term="GitHub Actions" scheme="https://laurentkempe.com/tags/github-actions" />
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="Astro" scheme="https://laurentkempe.com/tags/astro" />
    <category term="GitHub Copilot" scheme="https://laurentkempe.com/tags/github-copilot" />
    <category term="Automation" scheme="https://laurentkempe.com/tags/automation" />
    <category term="GitHub Next" scheme="https://laurentkempe.com/tags/github-next" />
  </entry>
  <entry>
    <title>From 3 Worktrees to N: How AI Agents Changed My Parallel Development Workflow on Windows</title>
    <link href="https://laurentkempe.com/2026/03/31/from-3-worktrees-to-n-ai-powered-parallel-development-on-windows/"/>
    <id>https://laurentkempe.com/2026/03/31/from-3-worktrees-to-n-ai-powered-parallel-development-on-windows/</id>
    <published>2026-03-31T22:56:05.000Z</published>
    <updated>2026-03-31T22:56:05.000Z</updated>
    <summary type="html">&lt;p&gt;For years, my git worktree setup was modest: two worktrees for active development, and one more for code reviews. Three worktrees, tops. It worked. I never questioned it.&lt;/p&gt;
&lt;p&gt;Then AI coding agents arrived — tools that write code, run tests, and iterate autonomously — and suddenly three worktrees felt like a bottleneck. Each agent needs its own isolated workspace. Each task deserves its own branch, its own directory, its own terminal. The question shifted from &amp;quot;how many worktrees can I manage?&amp;quot; to &amp;quot;how many can I run in parallel?&amp;quot;&lt;/p&gt;
</summary>
    <category term="Git" scheme="https://laurentkempe.com/tags/git" />
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="Developer Tools" scheme="https://laurentkempe.com/tags/developer-tools" />
    <category term="GitHub Copilot" scheme="https://laurentkempe.com/tags/github-copilot" />
    <category term="CLI" scheme="https://laurentkempe.com/tags/cli" />
    <category term="Windows" scheme="https://laurentkempe.com/tags/windows" />
  </entry>
  <entry>
    <title>Automate Rider Search and Replace Patterns with Agent Skills</title>
    <link href="https://laurentkempe.com/2026/02/16/automate-rider-search-replace-patterns-with-agent-skills/"/>
    <id>https://laurentkempe.com/2026/02/16/automate-rider-search-replace-patterns-with-agent-skills/</id>
    <published>2026-02-16T14:01:17.000Z</published>
    <updated>2026-02-16T14:01:17.000Z</updated>
    <summary type="html">&lt;p&gt;A few years ago, I wrote about how &lt;a href=&quot;/2023/02/20/refactoring-huge-csharp-code-base-in-minutes/&quot;&gt;ReSharper&apos;s Search with Pattern feature&lt;/a&gt; helped me refactor a massive C# codebase in minutes. The technique was powerful, but creating those custom search and replace patterns meant using ReSharper to define them. Alternatively, you could hand-craft XML in DotSettings files—tedious work that required memorizing the exact structure, generating GUIDs, and configuring placeholder properties correctly.&lt;/p&gt;
&lt;p&gt;Recently, I explored how &lt;a href=&quot;/2026/01/27/Agent-Skills-From-Claude-to-Open-Standard/&quot;&gt;Agent Skills are becoming an open standard&lt;/a&gt; that works across different AI coding assistants like GitHub Copilot, Cursor, and JetBrains Junie. This got me thinking: what if I could combine these two powerful developer tools? What if an Agent Skill could automate the tedious part of creating ReSharper and Rider patterns?&lt;/p&gt;
&lt;p&gt;This post shows how I built exactly that—a practical Agent Skill that generates properly formatted DotSettings XML for custom search and replace patterns in Rider and ReSharper, just by describing what you want in natural language to your AI coding assistant.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="Rider" scheme="https://laurentkempe.com/tags/rider" />
    <category term="ReSharper" scheme="https://laurentkempe.com/tags/resharper" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>Exploring .NET 11 Preview 1 Runtime Async: A dive into the Future of Async in .NET</title>
    <link href="https://laurentkempe.com/2026/02/14/exploring-net-11-preview-1-runtime-async-a-dive-into-the-future-of-async-in-net/"/>
    <id>https://laurentkempe.com/2026/02/14/exploring-net-11-preview-1-runtime-async-a-dive-into-the-future-of-async-in-net/</id>
    <published>2026-02-14T22:32:40.000Z</published>
    <updated>2026-02-14T22:32:40.000Z</updated>
    <summary type="html">&lt;p&gt;.NET 11 Preview 1 ships a groundbreaking feature: &lt;strong&gt;Runtime Async&lt;/strong&gt;. Instead of relying solely on the C# compiler to rewrite &lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt; methods into state machines, the .NET runtime itself now understands async methods as a first-class concept. This article explores what Runtime Async is, why it matters, what changed in Preview 1, and how you can experiment with it today.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>Agent Skills: From Claude to Open Standard to Your Daily Coding Workflow</title>
    <link href="https://laurentkempe.com/2026/01/27/Agent-Skills-From-Claude-to-Open-Standard/"/>
    <id>https://laurentkempe.com/2026/01/27/Agent-Skills-From-Claude-to-Open-Standard/</id>
    <published>2026-01-27T11:38:27.000Z</published>
    <updated>2026-01-27T11:38:27.000Z</updated>
    <summary type="html">&lt;p&gt;When Anthropic introduced Agent Skills for Claude, it appeared to be another proprietary AI customization feature. Today, we&apos;re witnessing something far more significant: an open standard reshaping how people across roles—developers, designers, product managers, and operations—work with AI assistants. AI coding agents&apos; adoption of Agent Skills has transformed this technology from an interesting experiment into an essential developer tool.&lt;/p&gt;
&lt;p&gt;If you&apos;ve been using custom instructions or wondering how to make your AI assistant truly understand your project&apos;s workflows, Agent Skills provides a compelling solution.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="DevX" scheme="https://laurentkempe.com/tags/devx" />
    <category term="GitHub Copilot" scheme="https://laurentkempe.com/tags/github-copilot" />
    <category term="VS Code" scheme="https://laurentkempe.com/tags/vs-code" />
  </entry>
  <entry>
    <title>C# 14 More Partial Members: Partial Events and Partial Constructors</title>
    <link href="https://laurentkempe.com/2026/01/03/csharp-14-more-partial-members-partial-events-and-constructors/"/>
    <id>https://laurentkempe.com/2026/01/03/csharp-14-more-partial-members-partial-events-and-constructors/</id>
    <published>2026-01-03T13:16:41.000Z</published>
    <updated>2026-01-03T13:16:41.000Z</updated>
    <summary type="html">&lt;p&gt;In C#, &lt;code&gt;partial&lt;/code&gt; has long been a practical bridge between human-authored code and tool-generated code. With C# 14, that bridge gets wider: &lt;strong&gt;instance constructors&lt;/strong&gt; and &lt;strong&gt;events&lt;/strong&gt; can now be declared as partial members.&lt;/p&gt;
&lt;p&gt;This article explains what “more partial members” means in C# 14, the rules that keep it predictable, and the generator-heavy scenarios it&apos;s intended to support.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>C# 14 Extension Members: Complete Guide to Properties, Operators, and Static Extensions</title>
    <link href="https://laurentkempe.com/2025/12/29/csharp-14-extension-members-complete-guide/"/>
    <id>https://laurentkempe.com/2025/12/29/csharp-14-extension-members-complete-guide/</id>
    <published>2025-12-29T15:32:57.000Z</published>
    <updated>2025-12-29T15:32:57.000Z</updated>
    <summary type="html">&lt;p&gt;Extension methods have been a core C# feature since version 3.0, enabling developers to add methods to types without modifying source code. With C# 14 and .NET 10, Microsoft introduces &lt;strong&gt;extension members&lt;/strong&gt;—a powerful enhancement that extends beyond methods to include properties, operators, and static members.&lt;/p&gt;
&lt;p&gt;This comprehensive guide explores how C# 14 extension members enable you to add mathematical operators to &lt;code&gt;Point&lt;/code&gt;, create static factory properties for &lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;, and organize extensions more elegantly than ever before.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>C# 14 Null-conditional Assignment: Complete Guide to Elegant Null Handling</title>
    <link href="https://laurentkempe.com/2025/12/28/csharp-14-null-conditional-assignment-complete-guide/"/>
    <id>https://laurentkempe.com/2025/12/28/csharp-14-null-conditional-assignment-complete-guide/</id>
    <published>2025-12-28T10:08:51.000Z</published>
    <updated>2025-12-28T10:08:51.000Z</updated>
    <summary type="html">&lt;p&gt;If you&apos;ve been working with C# since the introduction of null-conditional operators in C# 6.0, you&apos;ve likely appreciated how &lt;code&gt;?.&lt;/code&gt; and &lt;code&gt;?[]&lt;/code&gt; simplified null-checking when &lt;em&gt;reading&lt;/em&gt; values. But what about &lt;em&gt;writing&lt;/em&gt; values conditionally? That&apos;s where C# 14&apos;s null-conditional assignment comes in—and it&apos;s a nice improvement for modern C# development.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>C# 14 Field Keyword: Simplifying Property Accessors</title>
    <link href="https://laurentkempe.com/2025/12/27/csharp-14-field-keyword-simplifying-property-accessors/"/>
    <id>https://laurentkempe.com/2025/12/27/csharp-14-field-keyword-simplifying-property-accessors/</id>
    <published>2025-12-27T14:12:15.000Z</published>
    <updated>2025-12-27T14:12:15.000Z</updated>
    <summary type="html">&lt;p&gt;C# 14 introduces the &lt;code&gt;field&lt;/code&gt; keyword, a contextual keyword that reshapes how we write property accessors. This feature eliminates the need for explicit backing fields while maintaining full control over property logic. Let&apos;s explore how this powerful addition simplifies C# code and improves developer productivity.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term=".NET" scheme="https://laurentkempe.com/tags/dotnet" />
  </entry>
  <entry>
    <title>Decouple yourself from your LLM commodities using Dapr Conversation</title>
    <link href="https://laurentkempe.com/2025/09/24/decouple-yourself-from-your-llm-commodities-using-dapr-conversation/"/>
    <id>https://laurentkempe.com/2025/09/24/decouple-yourself-from-your-llm-commodities-using-dapr-conversation/</id>
    <published>2025-09-24T07:07:56.000Z</published>
    <updated>2025-09-24T07:07:56.000Z</updated>
    <summary type="html">&lt;p&gt;As developers, we often find ourselves tied to specific providers. The same applies to Large Language Model (LLM) providers. This can limit our flexibility and control over our applications. In this blog post, we&apos;ll explore how to decouple ourselves from LLM commodities by leveraging Dapr&apos;s Conversation building block. This approach allows us to switch between different LLM providers seamlessly, ensuring that our applications remain adaptable and future-proof.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="Azure" scheme="https://laurentkempe.com/tags/azure" />
    <category term="Dapr" scheme="https://laurentkempe.com/tags/dapr" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
  </entry>
  <entry>
    <title>SSE-Powered MCP Server with C# and .NET in 15.7MB executable</title>
    <link href="https://laurentkempe.com/2025/04/05/sse-powered-mcp-server-with-csharp-and-dotnet-in-157mb-executable/"/>
    <id>https://laurentkempe.com/2025/04/05/sse-powered-mcp-server-with-csharp-and-dotnet-in-157mb-executable/</id>
    <published>2025-04-05T10:35:19.000Z</published>
    <updated>2025-04-05T10:35:19.000Z</updated>
    <summary type="html">&lt;p&gt;Now that we&apos;ve explored how to leverage Model Context Protocol (MCP) servers to utilize external Tools and AI models in C# applications, how to write your own Standard Input/Output (STDIO) MCP server in C# using the modelcontextprotocol / csharp-sdk, and how we can dockerize your .NET C# MCP server to be able to distribute it for use by AI clients.
It&apos;s time to take a step further and explore how to leverage Server-Sent Events (SSE) MCP servers so that we can deploy them remotely, for example on a Raspberry Pi.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="ASP.NET Core" scheme="https://laurentkempe.com/tags/asp-dotnet-core" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
    <category term="MCP" scheme="https://laurentkempe.com/tags/mcp" />
  </entry>
  <entry>
    <title>Dockerizing your .NET C# MCP Server for AI Clients like Claude Desktop</title>
    <link href="https://laurentkempe.com/2025/03/27/dockerizing-your-dotnet-csharp-mcp-server-for-ai-clients-like-claude-desktop/"/>
    <id>https://laurentkempe.com/2025/03/27/dockerizing-your-dotnet-csharp-mcp-server-for-ai-clients-like-claude-desktop/</id>
    <published>2025-03-27T23:48:15.000Z</published>
    <updated>2025-03-27T23:48:15.000Z</updated>
    <summary type="html">&lt;p&gt;My previous post showed how easy it is to develop a .NET C# MCP server and write a client able to communicate with it. Now, the question is how we can distribute our MCP server to be used by AI clients. In this post, we&apos;ll leverage the knowledge acquired from my previous posts to explore how to dockerize your .NET C# MCP server.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="Docker" scheme="https://laurentkempe.com/tags/docker" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
    <category term="MCP" scheme="https://laurentkempe.com/tags/mcp" />
  </entry>
  <entry>
    <title>Model Context Protocol Made Easy: Building an MCP Server in C#</title>
    <link href="https://laurentkempe.com/2025/03/22/model-context-protocol-made-easy-building-an-mcp-server-in-csharp/"/>
    <id>https://laurentkempe.com/2025/03/22/model-context-protocol-made-easy-building-an-mcp-server-in-csharp/</id>
    <published>2025-03-22T10:08:37.000Z</published>
    <updated>2025-03-22T10:08:37.000Z</updated>
    <summary type="html">&lt;p&gt;In my previous post, I demonstrated how to use C# with &lt;code&gt;Microsoft.Extensions.AI&lt;/code&gt;, Ollama, and a nuget package called &lt;code&gt;mcpdotnet&lt;/code&gt; to interact with an existing MCP Server. Since then, &lt;code&gt;mcpdotnet&lt;/code&gt; has been elevated to become the &amp;quot;&lt;strong&gt;official C# SDK for Model Context Protocol servers and clients, maintained by Microsoft&lt;/strong&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;The Model Context Protocol (MCP) is an open standard that enables seamless integration between AI systems and various data sources, allowing developers to create context-aware applications. In this post, we&apos;ll explore how to build a simple MCP server using C# and the &lt;strong&gt;modelcontextprotocol / csharp-sdk&lt;/strong&gt; library, which simplifies the process of creating and managing MCP servers.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="MCP" scheme="https://laurentkempe.com/tags/mcp" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
  </entry>
  <entry>
    <title>Harnessing AI in C# with Microsoft.Extensions.AI, Ollama, and MCP Server</title>
    <link href="https://laurentkempe.com/2025/03/15/harnessing-ai-in-csharp-with-microsoftextensionsai-ollama-and-mcp-server/"/>
    <id>https://laurentkempe.com/2025/03/15/harnessing-ai-in-csharp-with-microsoftextensionsai-ollama-and-mcp-server/</id>
    <published>2025-03-15T15:36:00.000Z</published>
    <updated>2025-03-15T15:36:00.000Z</updated>
    <summary type="html">&lt;p&gt;In the previous post &amp;quot;&lt;a href=&quot;https://laurentkempe.com/2025/01/27/leveraging-microsoftextensionsai-for-tool-calling-in-csharp/&quot;&gt;Leveraging Microsoft.Extensions.AI for Tool Calling in C#&lt;/a&gt;&amp;quot;, we explored how to create custom tools that enhance the capabilities of Large Language Models (LLMs). We demonstrated how integrating these technologies enables developers to build applications with advanced AI capabilities, facilitating more complex interactions.&lt;/p&gt;
&lt;p&gt;In this post, we&apos;ll take a step further and explore how to leverage &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; servers to utilize external Tools and AI models in C# applications. We&apos;ll continue using Ollama to run local AI models.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="MCP" scheme="https://laurentkempe.com/tags/mcp" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
  </entry>
  <entry>
    <title>.NET Aspire and Dev Container</title>
    <link href="https://laurentkempe.com/2025/03/06/dotnet-aspire-and-dev-container/"/>
    <id>https://laurentkempe.com/2025/03/06/dotnet-aspire-and-dev-container/</id>
    <published>2025-03-06T22:59:39.000Z</published>
    <updated>2025-03-06T22:59:39.000Z</updated>
    <summary type="html">&lt;p&gt;.NET Aspire 9.1 was just released on February 25th, 2025. It comes with great new dashboard features, and there is more! One feature I am particularly interested in is the ability to use &lt;strong&gt;Dev Containers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this post, I will show you how to use the new .NET Aspire 9.1 with a Dev Container and JetBrains Rider. You could also use Visual Studio Code.&lt;/p&gt;
</summary>
    <category term=".NET Aspire" scheme="https://laurentkempe.com/tags/.net-aspire" />
    <category term="Dev Container" scheme="https://laurentkempe.com/tags/dev-container" />
    <category term="Docker" scheme="https://laurentkempe.com/tags/docker" />
    <category term="Rider" scheme="https://laurentkempe.com/tags/rider" />
  </entry>
  <entry>
    <title>Building Local AI Agents: Semantic Kernel Agent with Functions in C# using Ollama</title>
    <link href="https://laurentkempe.com/2025/03/02/building-local-ai-agents-semantic-kernel-agent-with-functions-in-csharp-using-ollama/"/>
    <id>https://laurentkempe.com/2025/03/02/building-local-ai-agents-semantic-kernel-agent-with-functions-in-csharp-using-ollama/</id>
    <published>2025-03-02T11:19:46.000Z</published>
    <updated>2025-03-02T11:19:46.000Z</updated>
    <summary type="html">&lt;p&gt;In my previous post, we saw how to &lt;a href=&quot;https://laurentkempe.com/2025/03/01/building-local-ai-agents-semantic-kernel-and-ollama-in-csharp/&quot;&gt;build the simplest Semantic Kernel local AI agent using Semantic Kernel and Ollama in C#&lt;/a&gt;. In this short post, we will see how simple it is to extend the capabilities of the Semantic Kernel local AI agent by adding function calling.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
    <category term="Semantic Kernel" scheme="https://laurentkempe.com/tags/semantic-kernel" />
  </entry>
  <entry>
    <title>Building Local AI Agents: Semantic Kernel and Ollama in C#</title>
    <link href="https://laurentkempe.com/2025/03/01/building-local-ai-agents-semantic-kernel-and-ollama-in-csharp/"/>
    <id>https://laurentkempe.com/2025/03/01/building-local-ai-agents-semantic-kernel-and-ollama-in-csharp/</id>
    <published>2025-03-01T15:08:16.000Z</published>
    <updated>2025-03-01T15:08:16.000Z</updated>
    <summary type="html">&lt;p&gt;The recent release of Microsoft&apos;s Semantic Kernel Agents Framework RC1 provides an excellent opportunity to explore its capabilities with C#. In this post, we&apos;ll walk through creating a simple agent using this framework and running it locally with Ollama.&lt;/p&gt;
&lt;p&gt;Let&apos;s dive in!&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
    <category term="Semantic Kernel" scheme="https://laurentkempe.com/tags/semantic-kernel" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
  </entry>
  <entry>
    <title>Harnessing DeepSeek-R1 distilled model with .NET Aspire and Ollama locally</title>
    <link href="https://laurentkempe.com/2025/02/01/harnessing-deepseek-r1-with-dotnet-aspire-and-ollama-locally/"/>
    <id>https://laurentkempe.com/2025/02/01/harnessing-deepseek-r1-with-dotnet-aspire-and-ollama-locally/</id>
    <published>2025-02-01T12:30:53.000Z</published>
    <updated>2025-02-01T12:30:53.000Z</updated>
    <summary type="html">&lt;p&gt;In my earlier posts, I&apos;ve demonstrated how to install Ollama using the Windows installer. However, for developers, there&apos;s a more streamlined method to set up Ollama on your machine.&lt;/p&gt;
&lt;p&gt;In this blog post, we&apos;ll explore how to run DeepSeek-R1 by harnessing the capabilities of .NET Aspire alongside Ollama on your local environment.&lt;/p&gt;
</summary>
    <category term=".NET Aspire" scheme="https://laurentkempe.com/tags/.net-aspire" />
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
  </entry>
  <entry>
    <title>Leveraging Microsoft.Extensions.AI for Tool Calling in C#</title>
    <link href="https://laurentkempe.com/2025/01/27/leveraging-microsoftextensionsai-for-tool-calling-in-csharp/"/>
    <id>https://laurentkempe.com/2025/01/27/leveraging-microsoftextensionsai-for-tool-calling-in-csharp/</id>
    <published>2025-01-27T13:32:02.000Z</published>
    <updated>2025-01-27T13:32:02.000Z</updated>
    <summary type="html">&lt;p&gt;In the previous post &amp;quot;&lt;a href=&quot;https://laurentkempe.com/2024/10/28/learning-ai-function-calling-in-csharp-with-llama-32-slm-and-ollama-running-on-your-machine/&quot;&gt;Learning AI function calling in C# with Llama 3.2 SLM and Ollama running on your machine&lt;/a&gt;&amp;quot;, we wrapped our head around the concept of tool calling and implemented a C# source generator enabling our functions to be called by Llama 3.2 SLM using Ollama.&lt;/p&gt;
&lt;p&gt;In this post, we will explore how to use Microsoft Extensions AI for tool calling in a simple .NET CLI application. We will leverage the power of Ollama and Llama 3.2 SLM to call functions and interact with the AI model using C#.&lt;/p&gt;
</summary>
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
  </entry>
  <entry>
    <title>Learning AI function calling in C# with Llama 3.2 SLM and Ollama running on your machine</title>
    <link href="https://laurentkempe.com/2024/10/28/learning-ai-function-calling-in-csharp-with-llama-32-slm-and-ollama-running-on-your-machine/"/>
    <id>https://laurentkempe.com/2024/10/28/learning-ai-function-calling-in-csharp-with-llama-32-slm-and-ollama-running-on-your-machine/</id>
    <published>2024-10-28T17:22:35.000Z</published>
    <updated>2024-10-28T17:22:35.000Z</updated>
    <summary type="html">&lt;p&gt;I&apos;ve been trying to wrap my head around function/tool calling for a while now, and I&apos;m excited to share what I&apos;ve learned with you. It&apos;s a powerful way to let developers integrate advanced AI features directly into their applications. We&apos;ll walk through understanding the core concepts, setting up your environment, and implementing a practical example using a C# source generator.&lt;/p&gt;
</summary>
    <category term="C#" scheme="https://laurentkempe.com/tags/csharp" />
    <category term="AI" scheme="https://laurentkempe.com/tags/ai" />
    <category term="Ollama" scheme="https://laurentkempe.com/tags/ollama" />
    <category term="LLM" scheme="https://laurentkempe.com/tags/llm" />
    <category term="SLM" scheme="https://laurentkempe.com/tags/slm" />
  </entry></feed>