# Chris Pietschmann I am a solution architect, developer, SRE, trainer, author, and more. With 25 years of experience in the Software Development industry that includes working as a Consultant and Trainer in a wide array of different industries. ## Author ### Chris Pietschmann Microsoft MVP (Azure & Dev Tools) | HashiCorp Ambassador | IBM Champion | MCT | Developer | Author ![Chris Pietschmann avatar](https://www.pietschsoft.com/images/avatar-chris-pietschmann-transparent-small.jpg) ## Most Recent Articles - [C#: Should This Service Be Singleton, Scoped, or Transient?](https://www.pietschsoft.com/post/2026/05/24/csharp-should-this-service-be-singleton-scoped-or-transient): One of the most common ASP.NET Core dependency injection questions sounds simple: - [In C#, When Should You Use Exceptions, Result Objects, or Validation Errors?](https://www.pietschsoft.com/post/2026/05/24/csharp-when-should-you-use-exceptions-result-objects-validation-errors): Every C# developer eventually runs into this design question, usually right after a perfectly reasonable method starts returning chaos. - [Disposable Software Is the Future: Why Composable Architecture Beats Monoliths and Overbuilt Microservices](https://www.pietschsoft.com/post/2026/05/20/disposable-software-is-the-future-why-composable-architecture-beats-monoliths-and-overbuilt-microservices): Most software systems do not fail because they were poorly written on day one. They fail because they become too expensive to change on day one thousand. - [C#: How to Refactor Legacy Code Safely](https://www.pietschsoft.com/post/2026/05/11/csharp-how-to-refactor-legacy-code-safely): Legacy C# code is usually not dangerous because it is old. It is dangerous because you do not fully know which parts are stable, which parts are accidentally correct, and which parts are one small change away from breaking production. - [C#: Inheritance vs Composition — When to Use Each and Why AI Can't Decide for You](https://www.pietschsoft.com/post/2026/05/08/csharp-inheritance-vs-composition-when-to-use-each): Every C# developer eventually hits this question: should I use inheritance or composition here? And if you ask an AI — or search for articles online — you’ll get the standard answer: “favor composition over inheritance.” That advice isn’t wrong. But it isn’t enough, either. - [C#: Should This Be a Class, Record, Struct, or Interface?](https://www.pietschsoft.com/post/2026/05/07/csharp-class-record-struct-or-interface-how-to-choose): Every time you add a new type to a C# codebase, you face the same quiet decision: class, record, struct, or interface? And once you pick class, a second wave of questions arrives — should it be abstract? sealed? static? - [Remembering Planet Source Code: Sharing Code Before GitHub Made It Easy](https://www.pietschsoft.com/post/2026/05/05/remembering-planet-source-code-sharing-code-before-github-made-it-easy): Every once in a while, something from the early days of my software development journey resurfaces and brings with it a flood of memories. Recently, I came across a PlanetSourceCode.com archived GitHub page that lists some old code submissions I contributed more than 20 years ago. - [8 AI Productivity Tips That Took Me Years to Learn (So You Don't Have To)](https://www.pietschsoft.com/post/2026/05/02/ai-productivity-tips-that-took-me-years-to-learn-so-you-dont-have-to): If you work in IT, you should be automating repetitive work. That has always been true. But in today’s landscape of agentic AI tools, it is easier than ever to do it well. Tools like GitHub Copilot and Claude Code are helping tremendously, and even conversational tools like ChatGPT can accelerate your workflow when used deliberately. - [Agentic AI Tools Are Orchestrators, Not Magic](https://www.pietschsoft.com/post/2026/05/01/agentic-ai-tools-are-orchestrators-not-magic): The LLM is not doing everything. It is the last 5% of a much larger system. - [C# / .NET: The Cleanest Way to Introduce a New Cross-Cutting Concern](https://www.pietschsoft.com/post/2026/05/01/csharp-dotnet-cleanest-way-to-add-cross-cutting-concerns): Logging, validation, caching, retries, authorization, telemetry, auditing. Every non-trivial .NET application accumulates cross-cutting concerns — behavior that applies broadly but doesn’t belong in the core business logic of any single feature. - [AI Is Changing the Infrastructure Economics of Software Engineering](https://www.pietschsoft.com/post/2026/04/30/ai-is-changing-the-infrastructure-economics-of-software-engineering): For many of us, GitHub has been part of the daily development workflow for a decade or more. For a long time, it felt like one of the most reliable and stable platforms in software engineering infrastructure. It was simply there — quietly powering collaboration, pull requests, reviews, releases, and the open-source ecosystem. - [C# / .NET Performance: Why Is It Slow 'Here' and What Should You Optimize First?](https://www.pietschsoft.com/post/2026/04/29/csharp-dotnet-performance-what-to-optimize-first): You open a profiler, squint at the code, and ask: “Why is this slow?” Before you even finish the thought, someone — or an AI assistant — suggests switching from List<T> to Span<T>, or inlining a method, or using stackalloc. These are micro-optimizations. They rarely matter until you’ve already found the real bottleneck. - [ASP.NET: How to Structure a Growing Application So It Stays Maintainable](https://www.pietschsoft.com/post/2026/04/25/aspnet-core-how-to-structure-a-growing-application-so-it-stays-maintainable): When an ASP.NET Core application is small, almost any folder structure feels fine. - [AI Is Not Just a Utility. It Is Becoming Personal Computing All Over Again.](https://www.pietschsoft.com/post/2026/04/24/ai-is-not-just-utility-becoming-personal-computing-all-over-again): Why the real disruption will happen when AI moves from cloud subscriptions into the devices we already carry. - [Stop Learning. Create Your Way to Success.](https://www.pietschsoft.com/post/2026/03/15/stop-learning-create-your-way-to-success): Why creating is the fastest path to confidence, growth, and real opportunity. - [AI Isn't the Thing. It Gets You to the Thing.](https://www.pietschsoft.com/post/2026/03/14/ai-isnt-the-thing-it-gets-you-to-the-thing): Why the future belongs to people who learn to use AI, not people who panic about it. - [Pets, Cattle, and the “Should We Build This?” Trap (Even When AI Makes Building Easy)](https://www.pietschsoft.com/post/2026/01/17/pets-cattle-should-we-build-this): You’ve probably heard the old cloud ops mantra: - [How to Convert a String to an Enum and back in C#](https://www.pietschsoft.com/post/2026/01/17/how-to-convert-string-to-enum-and-back-in-csharp): Enums are great for making code more readable and less error-prone than passing around “magic strings” or numbers. But in the real world, strings still happen — config files, query strings, JSON payloads, environment variables, user input, etc. - [Why Blogs Are Still Relevant Today for Developers and IT Pros](https://www.pietschsoft.com/post/2025/12/16/why-blogs-are-still-relevant-today): Blogs have been declared “dead” more times than I can count over the years, yet they continue to quietly power careers, open doors, and build authority. Even in a world saturated with AI-generated content, personal blogs remain one of the most effective ways for developers and IT professionals to share expertise, build a reputation, and create opportunities. - [100× Your Software Development Skills: How AI is the Next Big Leap](https://www.pietschsoft.com/post/2025/11/04/100x-your-software-development-skills-how-ai-is-next-big-leap): When I started programming decades ago — writing VB6 components, transitioning into .NET, learning C#, building automation scripts — I witnessed first-hand how each new toolset unlocked previously impossible productivity gains. Today, we’re in a similar moment of transformation thanks to AI—tools like GitHub Copilot, ChatGPT and other AI Agents / LLMs that are enabling developers to produce far more business value with their time than ever before. - [Chris Pietschmann Awarded 2025 Microsoft MVP in Microsoft Azure and Developer Technologies Categories](https://www.pietschsoft.com/post/2025/07/10/chris-pietschmann-awarded-2025-microsoft-mvp-award): I am thrilled to share that I have been awarded the Microsoft MVP award for the 14th time! I’m honored to be recognized again by Microsoft for my community contributions. The MVP community is full of incredible experts and builders, and I’m humbled to be part of this group. - [Writing Testable Code is More Important Than Unit Tests](https://www.pietschsoft.com/post/2025/07/01/writing-testable-code-is-more-important-than-unit-tests): Let me tell you a story. - [AI is Just a Tool - The Journey Still Belongs to People](https://www.pietschsoft.com/post/2025/05/30/ai-is-just-a-tool-the-journey-still-blongs-to-people): I’ve been working in technology as a developer, architect and trainer for decades, I’ve seen countless waves of innovation. Each wave promised to revolutionize the way we work, and for the most part, many of them delivered. However, the way I see it, there’s something we need to talk about with the current wave that is Artificial Intelligence (AI). - [Yes, I'm a Microsoft MVP, HashiCorp Ambassador, and MCT - and I Still Build Real Stuff](https://www.pietschsoft.com/post/2025/04/17/yes-im-microsoft-mvp-hashicorp-ambassador-mct-i-still-build-stuff): Over the years, I’ve had the privilege to be honored with community recognitions, like Microsoft MVP and HashiCorp Ambassador, as well as other certifications like the Microsoft Certified Trainer (MCT). I’m proud of my accomplishments and humbled to be considered at the level of other Microsoft MVPs and HashiCorp Ambassadors that put so much great content and work out into the community. These awards and recognitions reflect years of building, shopping, mentoring, teaching, and contributing to the tech community in all kinds of ways for me. But despite all the community work that I do, which I would do regardless of these recognitions anyway, I’ve surprisingly encountered some skepticism from time to time. - [Microsoft AI Skills Fest Badge Rendered as Pure HTML/CSS](https://www.pietschsoft.com/post/2025/04/09/microsoft-ai-skills-badge-rendered-as-pure-html-css): I decided to do a test of rendering the Microsoft AI Skills Fest official attempt badge as pure HTML/CSS code. Just a test of my CSS styling skills. - [C#: What's the Difference Between `int`, `var`, and `dynamic`?](https://www.pietschsoft.com/post/2025/04/09/csharp-difference-between-int-var-dynamic): In C#, understanding the distinctions between int, var, and dynamic is crucial for writing clear and efficient code. Each serves a unique purpose and behaves differently during compilation and runtime. Let’s explore these differences. - [Leveling Up with Microsoft AI Skills Fest for Guinness World Record Attempt](https://www.pietschsoft.com/post/2025/04/08/leveling-up-with-microsoft-ai-skills-fest-for-guinness-world-record): I recently participated in the Microsoft AI Skills Challenge, and I wanted to share a quick note about it. - [Chris Pietschmann recognized as a HashiCorp Ambassador for 2025](https://www.pietschsoft.com/post/2025/03/31/Chris-Pietschmann-recognized-as-a-HashiCorp-Ambassador-for-2025): I’m beyond honored and excited to share that I’ve been selected as a HashiCorp Ambassador for 2025! Being part of this global program is a recognition of contributions to the HashiCorp community and a testament to the work I’ve been privileged to do alongside so many other talented professionals. - [Adapt as an AI Developer of Be Left Behind](https://www.pietschsoft.com/post/2025/03/20/adapt-as-an-ai-developer-or-be-left-behind): Technology innovation has always been changing the role of the software developers. Just as Visual Basic made rapid application development more accessible, and Web 2.0 transformed static websites into interactive experiences; Artificial Intelligence and Generative AI are now redefining the software development landscape. This includes tools like GitHub Copilot that greatly enhances your productivity, to other advances that are using AI to write code. - [Power of Small Wins: Consistency Beats Perfection](https://www.pietschsoft.com/post/2025/03/03/power-of-small-wins-consistency-beats-perfection): Hard work is important, but smart work is what drives results. Many people chase perfection, waiting for the perfect moment, the perfect strategy, or the perfect idea. The truth is, perfection is a myth. Progress, however, is real—and it comes through consistency. - [Control AI, or Be Replaced By Someone Who Does](https://www.pietschsoft.com/post/2025/03/03/control-ai-or-be-replaced-by-someone-who-does): Working smart has always been the key to success. But as technology evolves, the definition of hard work is changing. The rise of Artificial Intelligence (AI) and Generative AI is shifting the way businesses operate and how individuals work. - [Resetting Identity Seed in SQL Server After Deleting Records](https://www.pietschsoft.com/post/2025/02/03/reseting-identity-seed-in-sql-server-after-deleting-records): In SQL Server, identity columns generate auto-incremented values, ensuring uniqueness in a table. When records are deleted, the identity seed does not reset automatically. This can create gaps in the sequence, leading to unexpected behaviors in applications that depend on sequential numbering. - [Distributed Social Media Is the Future: A Shift Away from Centralized Platforms Like Facebook and TikTok](https://www.pietschsoft.com/post/2025/01/19/distributed-social-media-is-the-future-shift-away-from-centralized-platforms-like-facebok-tiktok): The adoption of distributed networks such as Bluesky represents a shift in the landscape of social media from older centralized platforms like Facebook, TikTok, and X/Twitter. This evolution is driven by growing concerns over centralized control, algorithmic manipulation, and data privacy. The recent TikTok ban in the United States has further highlighted the vulnerabilities inherent in centralized systems. In contrast, distributed social media platforms, like Bluesky, offer a more resilient and user-centric alternative, reminiscent of the early days of blogging with RSS and Atom feeds. - [Announcing the Build5Nines Membership: Elevate your Cloud, DevOps, and AI Skills!](https://www.pietschsoft.com/post/2024/11/22/announcing-build5nines-membership-elevate-your-cloud-devops-ai-skills): I’m excited to announce a major milestone in my journey with Build5Nines. I have recently launched the Build5Nines Membership that provides expert guidance in DevOps, SRE, Cloud, and AI technologies through in-depth courses, hands-on labs, forums and resources designed to help you elevate your skills to the next level! - [How to Add 'Share on Bluesky' Action Intent Button to Your Website](https://www.pietschsoft.com/post/2024/11/22/how-to-add-share-on-bluesky-action-intent-button-to-your-website): If you’re looking to integrate a “Share on Bluesky” feature into your website, you’re in the right place. This article explains how to create a Bluesky share buttons, format action intent links, and even dynamically set the share text using JavaScript. We’ll include an example with an inline SVG for the Bluesky logo to keep everything lightweight and visually consistent. - [Azure Bicep: Parameter Files for Streamlined Infrastructure as Code (IaC)](https://www.pietschsoft.com/post/2024/10/30/azure-bicep-parameters-files-for-streamlined-infrastructure-as-code-iac): With Azure Bicep’s continual improvement, parameter files have transformed how we manage and deploy configurations for different environments. This guide covers the essentials of Azure Bicep parameter files, their advantages over JSON, advanced usage, and best practices for secure, efficient Azure resource management. - [C#: Case-Insensitive String Contains Best Practices](https://www.pietschsoft.com/post/2024/10/18/csharp-case-insensitive-string-contains-best-practices): When working with strings in C#, handling case-insensitive searches is often necessary. The String.Contains method in C# is case-sensitive by default, but there are various ways to perform case-insensitive checks. Based on the official Microsoft documentation, here are some best practices and methods you can employ: - [Chris Pietschmann Awarded 2024 Microsoft MVP in Microsoft Azure and Developer Technologies Categories](https://www.pietschsoft.com/post/2024/07/10/Chris-Pietschmann-Awarded-2024-Microsoft-MVP-Award): I am excited to announce that I have been awarded the Microsoft MVP award for the 13th time! As always, I am honored to be recognized by Microsoft for the community work I do. My passion for technology while helping others at the same time continues, and this recognition from Microsoft feels great. The Microsoft MVPs are some really amazing technical professionals and experts, and I’m humbled to be a part of this group. - [CSS Image Styling Techniques](https://www.pietschsoft.com/post/2024/07/09/css-image-styling-techniques): Styling images with CSS can significantly enhance your website’s visual appeal. In this guide, we’ll explore various techniques to transform your images using CSS, from creating circular shapes to applying filters. Let’s dive in and discover how to make your images stand out. - [CSS: Create a Hero Block with Layered Images at Oblique Angle with Pure CSS](https://www.pietschsoft.com/post/2024/07/01/css-create-hero-block-with-layered-images-at-oblique-angle): Hero blocks are a powerful visual component typically placed at the top of a landing page or homepage. It often includes a large image, title, and subtitle to capture the user’s attention immediately. Let’s look at creating a hero block with layered images, displayed at oblique angles, using pure CSS. The final result will be a visually appealing section where images are positioned vertically with 3D transformations, and zero javascript will be used. - [C#: Read Text and JSON File Contents into Variable in Memory](https://www.pietschsoft.com/post/2024/06/18/csharp-read-text-and-json-file-contents-into-variable-in-memory): Whether you’re building a C# console app, a web service, or some other project, reading the contents of a file is a common task performed. This article will provide you with the basics necessary to do just this. - [How to Cast an Int to an Enum in C#](https://www.pietschsoft.com/post/2024/06/17/csharp-how-to-cast-int-to-enum): Casting an integer to an enum in C# is a common task, especially when dealing with data that might come from a database, user input, or another external source. This article goes through the process, providing a few practical examples. - [Software is About Value, NOT Code](https://www.pietschsoft.com/post/2024/06/05/software-is-about-value-not-code): - [Every Professional Needs a Personal Website to Show-Off Skills and Career Growth](https://www.pietschsoft.com/post/2024/05/17/every-professional-needs-personal-website-guide-to-building-one): In today’s digital age, having a personal website is no longer a luxury—it’s a necessity. Surprisingly, a recent poll revealed that 81% of professionals still don’t have their own website. This article explores why it’s crucial that developers, DevOps Engineers, Site Reliability Engineers (SREs), IT pros, designers, and all other professionals create and maintain their own personal website / portfolio, and how you can easily get started! - [Using the Popover API with HTML and Javascript in the browser](https://www.pietschsoft.com/post/2024/05/10/html-popover-api-javascript): Popovers have become a ubiquitous UI element on the web, offering a clean and intuitive way to display additional information or actions to users. The Popover API provides native HTML features, with Javascript integration, to finally enabled developers an easier experience for implementing popover UI’s on the web. Let’s take a look at how to use the Popover API in the browser! - [SEO is Dead; Time for Helpful Optimization](https://www.pietschsoft.com/post/2024/05/09/seo-is-dead-time-for-helpful-optimization): This year officially marks my 21st year blogging! I’ve been at this a long time. I owe many of my career successes to blogging and sharing my expertise. It’s gotten me jobs that skipped the technical interviews, and has impressed many consulting clients over the years. It’s also gotten me awarded Microsoft MVP 12 times so far, and HashiCorp Ambassador 3 times now! I don’t ever plan to stop blogging, and have actually increased the amount of content I’m writing recently. - [C#: How to Enumerate over Enum values and names](https://www.pietschsoft.com/post/2024/05/03/csharp-iterate-over-enum): When it comes to working with enums in C#, there are various methods to enumerate through their values, each with its own advantages and use cases. In this article, we’ll look at a few different techniques for enumerating enums in C#. - [Get Started with Node.js Development](https://www.pietschsoft.com/post/2024/04/26/get-started-with-nodejs): Welcome to this hands-on guide where you’ll learn how to get started with Node.js development. Whether you’re on macOS or Windows, this guide will walk you through the installation process, running your first Node.js code, importing an NPM package, and using it in your JavaScript code. We’ll be using Visual Studio Code as our code editor, which provides a seamless development experience for Node.js projects. - [C#: Console App that Accepts Command-Line Arguments](https://www.pietschsoft.com/post/2024/04/23/csharp-console-accept-commandline-arguments): When it comes to building command-line applications in C#, handling command-line arguments efficiently is crucial. Command-line arguments allow users to pass inputs to the application at runtime, making the application more versatile and powerful. In this article, we’ll look at how to create a C# console application that accepts command-line arguments. - [C#: How to iterate over a dictionary?](https://www.pietschsoft.com/post/2024/04/20/csharp-iterate-over-dictionary): It’s common to use Dictionaries when working with data in C#. Dictionaries are an easy way to work with a collection of key/value pairs. A common task performed is to iterate over a dictionary. This enables you to access and manipulate the key/value pairs within the dictionary. In this article, we will take a look at methods of iterating over a dictionary in C#, as well as iterating over the collection of keys and values contained within the dictionary. ## Articles Categories - [.NET](https://www.pietschsoft.com/blog#net) - [AI](https://www.pietschsoft.com/blog#ai) - [ASP.NET](https://www.pietschsoft.com/blog#asp-net) - [Architecture](https://www.pietschsoft.com/blog#architecture) - [Awards](https://www.pietschsoft.com/blog#awards) - [Blogging](https://www.pietschsoft.com/blog#blogging) - [Business](https://www.pietschsoft.com/blog#business) - [C#](https://www.pietschsoft.com/blog#c) - [CSS](https://www.pietschsoft.com/blog#css) - [Career](https://www.pietschsoft.com/blog#career) - [Community](https://www.pietschsoft.com/blog#community) - [Database](https://www.pietschsoft.com/blog#database) - [Design Patterns](https://www.pietschsoft.com/blog#design-patterns) - [DevOps](https://www.pietschsoft.com/blog#devops) - [HTML](https://www.pietschsoft.com/blog#html) - [Hardware](https://www.pietschsoft.com/blog#hardware) - [Javascript](https://www.pietschsoft.com/blog#javascript) - [Joke](https://www.pietschsoft.com/blog#joke) - [Life](https://www.pietschsoft.com/blog#life) - [Linux](https://www.pietschsoft.com/blog#linux) - [Mapping](https://www.pietschsoft.com/blog#mapping) - [Microsoft](https://www.pietschsoft.com/blog#microsoft) - [Open Source](https://www.pietschsoft.com/blog#open-source) - [Personal](https://www.pietschsoft.com/blog#personal) - [Ruby](https://www.pietschsoft.com/blog#ruby) - [Silverlight](https://www.pietschsoft.com/blog#silverlight) - [Swift](https://www.pietschsoft.com/blog#swift) - [Visual Basic](https://www.pietschsoft.com/blog#visual-basic) - [Windows](https://www.pietschsoft.com/blog#windows) - [jQuery](https://www.pietschsoft.com/blog#jquery) - [macOS](https://www.pietschsoft.com/blog#macos) ## Resources - [Blog](https://www.pietschsoft.com/blog): Main article archive. - [Contact](https://build5nines.com/contact): You can contact me here. - [LinkedIn](https://www.linkedin.com/in/crpietschmann/): Professional profile / resume. - [GitHub](https://github.com/crpietschmann): Open source projects and code examples. - [Terms of Use](https://www.pietschsoft.com/terms-of-use): Site terms. - [Privacy Policy](https://www.pietschsoft.com/privacy-policy): Privacy policy. ## Copyright Copyright 2003-2026 Chris Pietschmann