Blogs
-
Redefining Engineering Excellence - How Product Skills Amplify Impact in the AI Era
In this article, Maryna Rybalko examines how AI-driven automation is shifting the focus for software engineers, emphasizing the necessity of developing product and business skills to maintain relevance.
-
DevOps Meets Blazor in 2025 - Streamlining .NET Web App Delivery for the Future
Amber Talavera examines how Blazor’s evolution and integration with DevOps practices are shaping the future of .NET web application delivery.
-
Running One-Off .NET Tools with dnx - Exploring the .NET 10 Preview - Part 5
In this article, Andrew Lock examines the new dnx command in .NET 10 preview, showing how to run tools without installation.
-
Aspire - A Modern DevOps Toolchain
David Fowler explores Aspire, a modern DevOps toolchain that reimagines distributed application management. This article delves into Aspire’s design, core philosophy, and how it addresses real-world developer workflows.
-
Improved Git Workflow Custom Prompt & Upcoming VS Code Change Warning
Reinier van Maanen introduces improvements to his custom Git workflow prompt and highlights crucial updates coming to VS Code’s terminal auto-approval—especially for developers relying on Copilot and automation.
-
Solving the source generator 'marker attribute' problem in .NET 10 - Exploring the .NET 10 preview - Part 4
Andrew Lock examines a new solution for the ‘marker attribute’ problem in .NET 10 source generators, focusing on the fresh AddEmbeddedAttributeDefinition() API.
-
Centering a WPF TreeViewItem in the TreeView ScrollViewer
Rick Strahl explores how to improve user experience when working with WPF TreeViews by centering selected items in the viewport. He offers practical C# code and reusable helper methods.
-
C# 14 Extension Members - Exploring .NET 10 Preview - Part 3
In this article, Andrew Lock introduces the C# 14 extension members feature, showing how to convert traditional extension methods and expand extensibility options in .NET 10.
-
Automating my Git workflow in VS Code with Copilot Chat, Custom Prompts, and Terminal Auto-Approval
Automate your Git workflow in Visual Studio Code by combining Copilot Chat, custom prompts, and the new terminal auto-approval system. This approach lets you review, commit, rebase, and push changes with a single chat command, while maintaining safety and control over every step. Reinier van Maanen shares how to set up this workflow, including prompt files, settings, and a Python script for last-minute intervention.
-
Behind the scenes of dotnet run app.cs - Exploring the .NET 10 preview - Part 2
Andrew Lock provides a technical examination of how the .NET 10 preview enables single-file execution using ‘dotnet run’, focusing on the construction of the virtual project file.
-
GitHub Copilot Custom Chat Modes
In this article, Harald Binkle demonstrates how to create custom chat modes for GitHub Copilot within VS Code, offering developers advanced options for specialized project workflows.
-
How to improve my GitHub Copilot results?
This article provides valuable tips and strategies authored by an unnamed source to help developers achieve better results with GitHub Copilot in their projects.
-
Exploring the features of dotnet run app.cs - Exploring the .NET 10 preview - Part 1
In this article, Andrew Lock explores the .NET 10 preview’s new capability for running C# files directly—no project file required.
-
Unpacking Zip Folders into Windows Long File Paths
In this detailed post, Rick Strahl addresses the complexities and practical solutions for managing long file paths when unpacking zip archives in Windows using .NET, offering alternative C# implementations and advice.
-
Bicep vs Terraform vs OpenTofu - Your Infrastructure as Code options in 2025
This article, authored by Hidde de Smet’s Blog, offers an in-depth, practical comparison of Azure Bicep, HashiCorp Terraform, and OpenTofu for Infrastructure as Code (IaC) workflows based on direct, real-world experience.
-
Working with stacked branches in git (Part 1)
In this article, Andrew Lock explores the approach of utilizing stacked branches and PRs in Git for managing larger feature sets, offering practical insights on handling commit changes.
-
GitHub Copilot Premium Requests
In this article, Rob Bos delves into the recent changes around billing for Generative AI in GitHub Copilot, emphasizing the new Premium Requests pricing model and its implications for developers.
-
Understanding GitHub Copilot Premium Requests - Costs, Management, and Usage Insights
Rob Bos provides an in-depth guide to the new GitHub Copilot Premium Requests, helping users and organizations understand costs, request multipliers, and strategies for monitoring and managing AI usage and expenses.
-
From simple to sophisticated - Terraform infrastructure evolution
In this article, Hidde de Smet shares practical lessons learned while evolving Terraform infrastructure code from simple beginnings to an enterprise-ready solution, making it invaluable for teams moving from novice to advanced use.
-
Authenticate Connect-MgGraph Using OIDC in GitHub Actions
In this article, Jesse Houwing describes his approach to automating Azure Entra ID user management scripts with GitHub Actions and OIDC authentication, replacing interactive sessions.
-
Converting a Microsoft XNA 3.1 Game to MonoGame
Andrew Lock shares his experience modernizing a 15-year-old Microsoft XNA 3.1 game by converting it to MonoGame and .NET 8.
-
Adding Runtime NuGet Package Loading to an Application
Rick Strahl details how runtime NuGet package loading can enable dynamic extensibility in applications, sharing insights gleaned from integrating this feature into his LiveReloadServer tool.
-
Is AI the right solution? Part 3 - Metrics, piloting, and key takeaways
In this article, Hidde de Smet’s Blog concludes a comprehensive series on AI project validation, emphasizing clear success metrics, the value of pilot projects, and key takeaways for responsible AI implementation.
-
GitHub Copilot & Productivity
In this article, Rob Bos challenges prevailing views on engineering productivity, especially in the age of tools like GitHub Copilot. Bos critiques the narrow focus on metrics like lines of code accepted and explains why this approach fails to capture the true complexity and value of software development.
-
Is AI the right solution? Part 2 - Examples and ethical risks
In this summary, we’ll dive into the key insights from Hidde de Smet’s Blog on the topic of validating AI projects, focusing on practical framework usage and the ethical landscape of contemporary AI development.
-
Converting a docker-compose file to .NET Aspire
In this article, Andrew Lock shares his experience converting the deployment of the lismonk mailing-list manager from Docker Compose to a .NET Aspire app host project.
-
Is AI the right solution? Part 1 - The decision framework
Authored by Hidde de Smet’s Blog, this article examines the process of deciding if an AI implementation is the right solution for your project, drawing inspiration from the IASA Global AI Architecture course.
-
A practical guide to Machine Learning for image classification
Hidde de Smet’s Blog details a hands-on journey through implementing an image classification project using machine learning, inspired by Zach Gardner’s AI Architecture course from IASA Global. By sharing this guide, Hidde aims to provide practical insights for professionals aiming to deliver effective AI solutions in real-world business contexts.
-
Taming Manifest Sprawl with Aspire
In this article, David Fowler introduces Aspire—a C#-based approach that consolidates configuration manifests and streamlines local-to-production workflows in cloud-native software development.
-
Intent vs. Mechanics - The Power of Abstraction in Aspire
David Fowler explores how Aspire leverages abstraction to streamline secret management in cloud applications, highlighting adaptive implementation across various environments. This article discusses the intent-mechanics separation and demonstrates actionable techniques for expressing and managing secrets using code.
-
Understanding the Model Context Protocol (MCP)
In this article, Hidde de Smet’s Blog delves into the Model Context Protocol (MCP), a game-changing open-source standard designed to enhance how AI models interact with external data and tools.
-
GitHub Copilot Agent Mode - Transforming your development workflow
In this article by Hidde de Smet’s Blog, the author explores the transformation of pair programming using GitHub Copilot Agent Mode, which allows for natural language conversations within your IDE.
-
Model. Run. Ship. The New Way to Build Distributed Apps
David Fowler introduces Aspire, a tool for modeling and orchestrating distributed .NET applications, and details how it streamlines development and deployment workflows.
-
Picking the right GitHub Copilot model
In this article, author Jesse Houwing explores the new documentation released by GitHub detailing all the large language models (LLMs) currently available for use in GitHub Copilot.
-
Give it a Face to Talk To
In this article, the author presents a comprehensive guide to building a React-based user interface for an AI Avatar that enables conversational interaction through speech, moving away from traditional text input methods.
-
Spotlight on JSON Everything - A Unified Toolkit for JSON Standards in .NET
Written by .NET Foundation News and Blog, this article introduces JSON Everything—a modular, open-source .NET library that streamlines working with multiple JSON standards in modern .NET applications.
-
Server-Sent Events in ASP.NET Core and .NET 10
In this article, Khalid Abuhakmeh explores how developers can use Server-Sent Events in ASP.NET Core and .NET 10 to enable real-time server-to-client communication.
-
Modeling Your Environment with Aspire
In this article, David Fowler discusses how Aspire allows developers to model their application’s environment in a programmable, structured way. He demonstrates Aspire’s approach to representing services, dependencies, and configurations as contracts, streamlining development and operational processes.
-
The Aspire Compiler
In this article, David Fowler introduces Aspire, a compiler-like system for application modeling. He outlines how Aspire’s resource model supports both local development and cloud deployment, highlighting its extensibility and deployment artifact generation.
-
Running Model Context protocol servers in a specific Node version inside Visual Studio Code
In this article, Jesse Houwing shares experiences as a maintainer of several Azure Pipelines extensions, particularly focusing on backward compatibility which requires supporting TypeScript projects that target Node 16.
-
Aspire - A Platform for Reusable Infrastructure
In this article, David Fowler presents Aspire—a framework that applies software engineering rigor to deployment, enabling scalable, reusable infrastructure through resources and hosting integrations.
-
GitHub Copilot - Change the Narrative
In this article, Rob Bos discusses the need to shift how organizations use GitHub Copilot and other generative AI tools. Bos criticizes the current narrative, which centers on immediate developer productivity gains, and instead urges a move towards leveraging AI to reinforce reliable DevOps practices and foundational systems within teams.
-
Making Software Like LEGO - How Aspire Brings the Pieces Together
David Fowler details Aspire’s approach to building composable software systems. The article examines how Aspire replaces vertical stacks with interconnected, contract-driven resources for greater flexibility and extensibility in web development.
-
Bridging the Gap - The Future of Aspire
David Fowler outlines his vision for Aspire, describing how it aims to connect developers and platform engineers through improved abstractions and workflow integration.
-
Really keeping your GitHub Actions usage secure
In this article, Rob Bos details a major security incident involving a widely-used GitHub Action. He shares practical steps users and organizations can take to secure their workflows and fortify their software supply chain.
-
Generic C# Methods with Enum Constraints for .NET
In this article, Khalid Abuhakmeh details how to create generic helper methods in C# for working with enums, including code samples and best practices on enforcing type constraints.
-
Measure Application Performance in .NET Using IMeterFactory
Authored by Muhammed Saleem, this article explores how developers can use IMeterFactory to monitor and improve performance in .NET applications.
-
Strongly-Typed Markdown for ASP.NET Core Content Apps
Khalid Abuhakmeh explores how to integrate Markdown files with YAML frontmatter as strongly-typed objects in ASP.NET Core, guiding readers through implementation with practical code and Razor Page usage.
-
Implement Roles With Keycloak, Web API and Blazor WebAssembly (RBA)
Marinko Spasojević guides readers through implementing role-based authorization using Keycloak, Blazor WebAssembly, and ASP.NET Core Web API. The article builds on a previous authentication post.
-
The Curious Case of .NET ConcurrentDictionary and Closures
Khalid Abuhakmeh discusses how closures can impact the use of ConcurrentDictionary in .NET, offering practical guidance for C# developers.
-
Keycloak Authentication With ASP.NET Core Web API and Blazor WebAssembly
Marinko Spasojević explores how to integrate Keycloak authentication into both Blazor WebAssembly and ASP.NET Core Web API applications for secure identity management.
-
ASP.NET Core and Chunking HTTP Cookies
Khalid Abuhakmeh walks through the limitations of HTTP cookies in ASP.NET Core and how to use cookie chunking to manage large session data more efficiently.
-
Use inline completions for more answers with GitHub Copilot Free
In this article, Jesse Houwing shares insights on optimizing the use of GitHub Copilot’s limited free tier, specifically by rethinking how you use completions and chats.
-
Hybrid Caching in ASP.NET Core
Bozo Spoljaric explores hybrid caching in ASP.NET Core, offering an overview of its structure, benefits, and configuration. The article is tailored for developers looking to enhance caching strategies in their .NET applications.
-
Vogen and Value Objects with C# and .NET
Khalid Abuhakmeh explains how value objects and the Vogen library enhance code correctness and clarity in C# and .NET projects, offering practical insights and examples.
-
Testing Database Connectivity with EF Core
Georgi Georgiev explores methods for testing database connectivity with EF Core, emphasizing health checks and reliability in containerized applications.
-
Troubleshooting GitHub Copilot keyboard shortcuts in Jetbrains IDEs
Jesse Houwing details his experiences after delivering hundreds of GitHub Copilot workshops, from brief introduction sessions to full-day, hands-on events.
-
Initialize ASP.NET Core TagHelpers with Shared Data
In this detailed post, Khalid Abuhakmeh demonstrates how developers can globally initialize ASP.NET Core TagHelpers with shared data for improved maintainability and performance.
-
Writing a String Numeric Comparer with .NET 9
Khalid Abuhakmeh explores creating a string numeric comparer in .NET, highlighting practical challenges, edge cases, and efficient implementation approaches for real-world use.
-
Persist Values With AsyncLocal in C# Async Flow
Bozo Spoljaric delves into the use of AsyncLocal in C#, detailing how it helps maintain values throughout asynchronous flows in modern .NET applications.
-
Great .NET Documentation with Astro, Starlight, and MarkdownSnippets
Khalid Abuhakmeh explores how to create and maintain robust .NET documentation by combining Astro’s Starlight, MarkdownSnippets, and effective project structuring.
-
Alpine.Js Polling ASP.NET Core APIs For Updates
Khalid Abuhakmeh explores integrating Alpine.js with ASP.NET Core APIs to implement polling for real-time updates in web applications.
-
Join me at IT-Tage Frankfurt 2024
Harald Binkle announces his participation at IT-Tage Frankfurt 2024, where he will present on unlocking the full potential of Visual Studio Code.
-
How dotnet.exe resolves and loads the hostfxr library – Exploring the .NET muxer
In this post, Steve Gordon delves deep into the workings of dotnet.exe, examining how it locates and loads the hostfxr library as part of the .NET muxer internals.
-
GitHub Universe 2024 - Successfully scaling GitHub Copilot to thousands of developers
In this article, Rob Bos recounts his experience speaking at GitHub Universe 2024 about successfully scaling GitHub Copilot to thousands of developers. He describes the vibrant and welcoming atmosphere of the GitHub community at the conference and emphasizes the value of connecting with others at such events.
-
A Brief Introduction to the .NET Muxer (aka dotnet.exe)
In this article, Steve Gordon explores the core role of the .NET muxer (dotnet.exe) as part of a series on .NET internals.
-
Implementing ASP.NET Core Automatic Span Linking for Internal Redirects with Middleware on .NET 9
In this article, Steve Gordon shares his hands-on experiences with OpenTelemetry in ASP.NET Core and demonstrates how to use middleware in .NET 9 to facilitate automatic span (activity) linking for internal redirects.
-
An Efficient Dictionary for IPAddress Tracking using .NET 9 with AlternateLookup and IAlternateEqualityComparer
Steve Gordon discusses enhancements in .NET 9 and C# 13 collections—specifically using custom equality comparers and AlternateLookup—to build efficient, low-allocation dictionaries for IP address tracking.
-
GitHub Models and Inference API
If you’re looking to connect Python apps to Azure OpenAI using the Azure Inference AI SDK, Rob Bos offers practical guidance for correctly configuring authentication methods and endpoints.
-
Receiving GitHub Webhooks When Using the ASP.NET Core Developer Certificate
In this article, Steve Gordon documents his experience developing a GitHub App with .NET, focusing on receiving webhooks while using the ASP.NET Core Developer Certificate.
-
Disabling Recording of an Activity (span) in .NET OpenTelemetry Instrumentation
In this article, Steve Gordon describes methods for disabling the recording of spans (Activities) in .NET applications using OpenTelemetry instrumentation, sharing observations from his own experimentation.
-
GitHub Copilot Extensions
Author Rob Bos introduces the exciting new ability for developers to write their own extensions for GitHub Copilot, enabling custom integrations and expanded functionality.
-
Scan all workflow artifacts for leaked secrets
This article, authored by Jesse Houwing, highlights the critical security concerns arising from leaked access tokens in GitHub Actions build artifacts. Houwing explores how these tokens can be exploited by malicious actors to push unauthorized code into repositories or compromise cloud-based infrastructure.
-
TDD with GitHub Copilot in Python
In this article, Jesse Swart shares insights into trying out Test-Driven Development (TDD) in Python, leveraging GitHub Copilot as an assistant.
-
Quickly Consume External APIs with GitHub Copilot
In this article, Jesse Swart’s Blog explores how developers can leverage GitHub Copilot to work with external APIs, especially when SDKs or OpenAPI specifications are missing.
-
How to consume an API without an OpenAPI spec
When working with external APIs that lack SDKs or OpenAPI specifications, developers often face the tedious task of manually creating typed interfaces. Jesse Swart demonstrates how GitHub Copilot can dramatically simplify this process by generating complete TypeScript code from raw API documentation.
-
Copilot Data Conversion
In this article, Jesse Swart’s Blog discusses the practical use of GitHub Copilot for converting data exported from a table designer tool into working test files.
-
GitHub Copilot Chat - Power User example
In this article, Rob Bos shares his experience leveraging GitHub Copilot Chat to streamline the development of a script designed for interacting with the GitHub API. Rob explains his workflow, detailing the prompts he used and the iterative nature of working with Copilot.
-
GitHub Copilot - Levels of enlightenment
In his video series ‘Levels of Enlightenment,’ Rob Bos shares his journey and practical lessons learned while using GitHub Copilot over the last year and a half.
-
GitHub Copilot Power User example
In this article, Rob Bos walks through his experience leveraging GitHub Copilot to refactor a YAML pipeline script by extracting a script directly from the pipeline into a standalone file.
-
GitHub Advanced Security for Azure DevOps
In this article, Rob Bos explores the public preview of GitHub Advanced Security (GHAS) features recently introduced to Azure DevOps, as announced at Microsoft Build 2023, and shares firsthand experiences and key distinctions compared to GitHub’s native implementation.
-
How Copilot/AI helps me in my daily work
In this article, Rob Bos shares insights into leveraging AI tools, especially GitHub Copilot, to accelerate application and code generation workflows, focusing on GitHub Actions deployment protection and app setup.