Qudos .NET Meetup Newcastle - October 2025
Build Smarter Apps with Microsoft Copilot Studio and .NET - Olorunfemi Davis
Building smarter apps with Microsoft Copilot, Copilot studio and .NET, are you steering your software development or is AI taking the controls? A few of years ago Olorunfemi heard about IBM Watson or AI playing chess and thought about the prospects this is bringing and how we can interact with software as a software engineer. Olorunfemi is a senior platform engineer for Inflo and started with .NET development when Windows Phone 7 was their introduction along with Silverlight and XNA along with adopting ASP.NET, and WPF stuff including backend stuff and platform stuff and he is amazed by what AI is bringing.
The AI-first vision is Microsoft Copilot everywhere and extending AI's reach and will cover Microsoft Copilot in action embedding reasoning and contextual intelligence along with how this applies to .NET with standardisation and plumbing layer for enterprise AI plus semantic kernel for standardising LLM access in an orchestration layer.
The AI-first vision: Copilot Everywhere with GitHub Copilot, Microsoft 365 Copilot and Copilot Studio - AI is all around us and has been added to productivity tools and is baked into the operating system and software we have now. For developers Copilot brings fantastic integration with GitHub with GitHub Copilot and brings access from IDEs to do code completion which is incredible and connects with MCP servers. Within Microsoft's ecosystem of business apps with Microsoft 365 have Copilot with empowers Microsoft products and Copilot Studio which brings more business abilities into Microsoft's tools. Microsoft's AI first vision is quite interesting.
GitHub Copilot is integrated into IDEs an can describe what you want to build by asking to build an application with a single prompt, it did result in a PR with the entire functionality and although it was bad was able to go through and fix it but it was really quite impressive to add all the pieces together including the UI and the backend and used a UI framework they didn't know so got rid of this. Microsoft 365 Copilot brings strong integration into tools such as Teams and OneDrive and different kinds of tools have access to Copilot. You can use Copilot to help with recap a meeting in Teams, summarise an email thread, draft an email, summarise a document, tell you about a topic / project, give some ideas, help to write or what did someone say about a certain topic.
Copilot Studio bridges the gap between users and Copilot including flows of data and AI can access information from the web or from content in Microsoft 365. You can interact with Copilot with text or voice and can customise what prompts and personas can be used which can be to use agents to be autonomous to automate tasks and processes. Agents can be in SharePoint, employee self-service agents, facilitator agents or interpreter agents along with project manager, researcher, analyst and skills agent. You can put in a URL for a website and generate a bot that can index the content of a website to provide information about a business or can do things like where have a CRM that can perform tasks can be surfaced in agents using Microsoft 365. Microsoft Copilot can also enable search, such as Bing which can pull data from the internet but it is difficult to have something that pulls information from a business which can be done now to power search and can connect to agents and automate processes.
.NET 9 priority for AI and how it can democratise access with standardisation. The focus is moving from AI as an afterthought to AI as a fundamental platform capability. Cloud native & AI are core themes with democratised access making generative AI and LLMs consumable and reliable for every .NET developer and standardisation to provide a consistent, type-safe and dependency-injected method to talk to models (Open AI, Azure & custom endpoints) to future-proof code a gainst changing models and providers. It can be hard to find integrations for .NET but there are Microsoft tools where .NET was not supported but .NET 8 and .NET 9 AI is a big thing. There are so many AI models now or there are versions of models that are better for logic and reasoning, and the choice is there so standardisation means you don't need to write different client libraries so can have an interface with generic methods for all these large language models and with a single method can bring in these integrations.
Microsoft.Extensions.AI is a unified interface which is a set of NuGet packages that standardise how you connect to and interact with various AI models and is designed to plug seamlessly into existing .NET ecosystem applications such as Microsoft.Extensions.AI.OpenAI. You can use options pattern and configure very easily and simply. Semantic Kernel is in-between .NET apps and LLMs such as OpenAI, Gemini, Claude based on your use case. Semantic Kernel is an open-source SDK that allows developers to integrate LLMs, conventional code and memory. LLMs are powerful btu often lack state and context of the application and Semantic Kernel bridges this gap allowing the LLM to access and access C# code by acting as a core to run AI prompts and call out to native C# methods and it consumes the Microsoft.Extensions.AI service for talking to models. Semantic Kernel can use C# methods that can be called by LLM to perform real-world actions or access live data and then can use reasoning capability to decide which functions to call where Semantic Kernel creates the necessary prompt instruction for the LLM based on C# method signatures and decorators.
Integration with the .NET AI stack is the LLM to have core intelligence and text generation then use Microsoft.Extensions.AI to connect and consume models along with Semantic Kernel for orchestration, reasoning and state plus connector libraries for LLM specific interfacing then leverage C# business logic with reliable execution and data access with native .NET code. You could use .NET to create a simple AI Chat App and can take advantage of the different chat completions such as for OpenAI, Ollama, Hugging Face and more to take advantage of Large Language Models and could even use different technologies such as Entity Framework for storage and interaction with data.
Future vision for .NET developers and how it fits together is a shift left on AI where AI is not a separate microservice it is integrated directly. Copilots are code where can build domain-specific Copilots and Agents are becoming a standard architectural pattern. There is increased productivity where developers can focus on defining business logic and data context rather than boilerplate API calls. Next generation with .NET 9 and beyond including .NET 10 ensures .NET platform remains a cutting-edge choice for developing intelligent, cloud-native applications. World of AI was narrow intelligence where AI could perform basic tasks and now are approaching general intelligence but today it is like a baby which makes a lot of mistakes including hallucinations which can be a very big problem.
Mastering RESTful APIs and Functional Programming in C# - Akshay Kumar
Akshay has been working on many things with .NET and in their spare time do penetration testing and contribute on Stack Overflow and open-source projects and talked about RESTful API design and functional programming.
What is a Rest API? There have been Soap APIs for example but in 2000 REST or Representational State Transfer was talked about by Roy Fieldling in his PhD. Principals include architectural properties of performance, scalability, portability, reliability and simplicity with constrains of stateless, uniform interface client / server, layers system, cacheable and code on demand such as moving to microservices.
REST has a uniform interface with URIs for resources and manipulates through representation such as JSON and XML and is self-descripted and developed as a hypermedia API that is discoverable. HTTP methods include GET which is idempotent, POST to create a resource, PUT to update a resource, DELETE and PATCH although PUT can be used to update partially too along with HEAD and OPTIONS.
API parameters include the path to identify a specific resource, query for filtering, sorting and paging along with body for payload data for POST, PUT or PATCH along with header for metadata such as tokens, content type etc. URL naming conventions should use nouns not verbs, plural rather than singular and use two levels, consistent versioning and lower case.
Pagination with query parameter can include page numbers and size but old records may be retrieved if an insertion occurs so can have cursor-based or can use offset-based paging. Filtering and sorting can allow sorting in descending or ascending order. Returning the correct status, not just returning 200 every time - when create resource return 200 or 201 along with chunking data with 206. For client errors this should be the correct status code such as when an API requires a payment or the request is invalid.
Caching can be implemented with last-modified to indicate the last time the resource was changed or have an identifier with an etag to get a specific version of a resource. Rate limiting can avoid server overload can have sliding window or token packet which can help protect against DDoS or excessive API calls to improve stability and reliability under load and then return the too many requests response when the rate limit has been reached and follow the RFC 9467 for problem details. API versioning is the practice of managing changes to your API with backwards compatibility to keep old clients working and allow for graceful migration.
Functional programming, most people use object oriented, but this approach is from long before this in Haskell and adopted in many languages including C# or F# which only supports functional programming. Functional composes pure functions and avoids sharable mutable state and side effects. Core principals include pure functions, immutability, higher order functions, function composition, expression not statements, referential transparency and more.
Pure functions are first class and can be passed, returned, assigned etc but have no side effects so don't return a different value each time otherwise this is not a pure function. Immutability is the inability to change the data, C# has read only, record and immutable collections. First-class and higher order functions treat functions as values to pass to another function where C# has delegates / lambdas such as LINQ operators are higher-order functions. Result Pattern & Railway oriented programming is a result pattern that models a computation that can either succeed or fail explicitly instead of throwing exceptions.