<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xx="categories" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Programming - Ken Muse</title><atom:link href="https://www.kenmuse.com/categories/programming/rss/" rel="self" type="application/rss+xml"/><link>https://www.kenmuse.com/categories/programming/</link><description>Discover Azure, DevOps, and development insights with Ken Muse, a DevOps Architect at GitHub and 4x Microsoft Azure MVP</description><language>en-us</language><sy:updatePeriod>weekly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><image><title>Programming - Ken Muse</title><link>https://www.kenmuse.com/categories/programming/</link><width>32</width><url>https://www.kenmuse.com/categories/programming/favicon/favicon-32x32.png</url><height>32</height></image><atom:link href="https://www.kenmuse.com/categories/programming/rss/index.xml" rel="self" type="application/rss+xml"/><item><title>Beyond MCP: AI Extension APIs in VS Code</title><link>https://www.kenmuse.com/blog/beyond-mcp-vs-code-ai-extension-apis/</link><pubDate>Thu, 26 Feb 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">beyond-mcp-vs-code-ai-extension-apis</guid><category>AI</category><category>DevOps</category><category>Programming</category><description>Explore VS Code's AI extension APIs and when these APIs make sense over using a standalone MCP server.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/beyond-mcp-vs-code-ai-extension-apis/images/banner.png"/></item><item><title>Adding an MCP Server to a VS Code Extension</title><link>https://www.kenmuse.com/blog/adding-mcp-server-to-vs-code-extension/</link><pubDate>Thu, 19 Feb 2026 00:00:00 -0500</pubDate><guid isPermaLink="false">adding-mcp-server-to-vs-code-extension</guid><category>AI</category><category>DevOps</category><category>Programming</category><description>Learn how to embed an MCP server in a VS Code extension to take your development work to the next level.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/adding-mcp-server-to-vs-code-extension/images/banner.png"/></item><item><title>Publishing npm Packages to GitHub Packages With Yarn</title><link>https://www.kenmuse.com/blog/publishing-npm-packages-to-github-with-yarn/</link><pubDate>Sat, 27 Sep 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">publishing-npm-packages-to-github-with-yarn</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Trying to publish npm packages to GitHub Packages with Yarn? Learn how to authenticate and publish your GitHub Packages with Yarn v4.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/publishing-npm-packages-to-github-with-yarn/images/banner.png"/></item><item><title>The New DevOps - Why AI Is Not Taking Your Job (Yet)</title><link>https://www.kenmuse.com/blog/the-new-devops-why-ai-is-not-taking-your-job-yet/</link><pubDate>Thu, 28 Aug 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">the-new-devops-why-ai-is-not-taking-your-job-yet</guid><category>AI</category><category>DevOps</category><category>Programming</category><description>Exploring why AI tools complement rather than replace developers, and how smart companies use AI to enhance team productivity instead of downsizing talent.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/the-new-devops-why-ai-is-not-taking-your-job-yet/images/good-ai.webp"/></item><item><title>Good Code Doesn't Care Where It Lives</title><link>https://www.kenmuse.com/blog/good-code-doesnt-care-where-it-lives/</link><pubDate>Mon, 21 Apr 2025 00:00:00 -0400</pubDate><guid isPermaLink="false">good-code-doesnt-care-where-it-lives</guid><category>DevOps</category><category>Programming</category><description>Trying create code that is truly flexible? Learn how to write software and services that run everywhere: in VMs, containers, and serverless platforms.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/good-code-doesnt-care-where-it-lives/images/abstract.webp"/></item><item><title>The Most Dangerous Phrase in Software Development</title><link>https://www.kenmuse.com/blog/most-dangerous-phrase-in-software-development/</link><pubDate>Sat, 01 Feb 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">most-dangerous-phrase-in-software-development</guid><category>DevOps</category><category>Programming</category><category>Security</category><description>Discover why "it should work" is software development's most dangerous phrase and how this mindset leads to unreliable, untested code.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/most-dangerous-phrase-in-software-development/images/banner.jpg"/></item><item><title>Defining an Infrastructure-as-Code Maturity Model</title><link>https://www.kenmuse.com/blog/defining-an-infrastructure-as-code-maturity-model/</link><pubDate>Sat, 11 Jan 2025 00:00:00 -0500</pubDate><guid isPermaLink="false">defining-an-infrastructure-as-code-maturity-model</guid><category>DevOps</category><category>Programming</category><description>Infrastructure-as-code should continuously improve. This post introduces a maturity model to enhance how you develop testable and reusable IaC solutions.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/defining-an-infrastructure-as-code-maturity-model/images/banner.jpg"/></item><item><title>Distributing .NET Dependencies and Settings With Packages</title><link>https://www.kenmuse.com/blog/distributing-dotnet-dependencies-and-settings-with-packages/</link><pubDate>Thu, 26 Dec 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">distributing-dotnet-dependencies-and-settings-with-packages</guid><category>DevOps</category><category>Programming</category><description>Learn how to standardize development practices by distributing dependencies, settings, and analyzers using NuGet packages.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/distributing-dotnet-dependencies-and-settings-with-packages/images/banner.jpg"/></item><item><title>How to Test a .NET Package</title><link>https://www.kenmuse.com/blog/how-to-test-a-dotnet-package/</link><pubDate>Fri, 06 Dec 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">how-to-test-a-dotnet-package</guid><category>DevOps</category><category>Programming</category><description>Packages are code, too! Like any code solution, you need to test your work. Learn how to test a custom .NET package that adds ZIP support to the build process.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/how-to-test-a-dotnet-package/images/banner.jpg"/></item><item><title>Distributing Custom .NET Tasks</title><link>https://www.kenmuse.com/blog/distributing-custom-dotnet-tasks/</link><pubDate>Wed, 27 Nov 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">distributing-custom-dotnet-tasks</guid><category>DevOps</category><category>Programming</category><description>There's a simple trick to easily share .NET build tasks between developers. Learn to create a NuGet package that automatically ZIPs your builds for deployment.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/distributing-custom-dotnet-tasks/images/banner.jpg"/></item><item><title>Creating a Zip Package in .NET</title><link>https://www.kenmuse.com/blog/creating-a-zip-package-in-dotnet/</link><pubDate>Sat, 23 Nov 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">creating-a-zip-package-in-dotnet</guid><category>Azure</category><category>DevOps</category><category>Programming</category><description>Compiling code and packaging it as a ZIP file to deploy a .NET application can be simplified to a single command with this native MSBuild feature.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/creating-a-zip-package-in-dotnet/images/banner.jpg"/></item><item><title>Using React in Visual Studio Code Webviews</title><link>https://www.kenmuse.com/blog/using-react-in-vs-code-webviews/</link><pubDate>Fri, 18 Oct 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">using-react-in-vs-code-webviews</guid><category>DevOps</category><category>Programming</category><description>Build custom extensions and Webviews is for Visual Studio Code is just the start. Learn how to upgrade your views to use React.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-react-in-vs-code-webviews/images/banner.png"/></item><item><title>Improved Blogging With Visual Studio Code Webviews</title><link>https://www.kenmuse.com/blog/improve-blogging-with-vs-code-webviews/</link><pubDate>Fri, 11 Oct 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">improve-blogging-with-vs-code-webviews</guid><category>DevOps</category><category>Programming</category><description>A custom extension in VS Code gives me a more efficient blogging process. Explore how I incorporate custom UIs using Webviews.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/improve-blogging-with-vs-code-webviews/images/banner.png"/></item><item><title>Improved Blogging With Visual Studio Code Extensions</title><link>https://www.kenmuse.com/blog/improve-blogging-with-visual-studio-code-extensions/</link><pubDate>Fri, 04 Oct 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">improve-blogging-with-visual-studio-code-extensions</guid><category>DevOps</category><category>Programming</category><description>Combining Visual Studio Code with Hugo has given me a great workflow for my blog. I made it even better by creating a custom VS Code extension.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/improve-blogging-with-visual-studio-code-extensions/images/banner.png"/></item><item><title>Improved Blogging With Visual Studio Code Tasks</title><link>https://www.kenmuse.com/blog/improve-blogging-with-visual-studio-code-tasks/</link><pubDate>Tue, 01 Oct 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">improve-blogging-with-visual-studio-code-tasks</guid><category>DevOps</category><category>Programming</category><description>I use Visual Studio Code and Hugo to manage my blog and make it easier to create content. Today I explore how I use VSCode Tasks to automate the work I do.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/improve-blogging-with-visual-studio-code-tasks/images/banner.png"/></item><item><title>Implementing Private VS Code Extensions for Dev Containers</title><link>https://www.kenmuse.com/blog/implementing-private-vs-code-extensions-for-dev-containers/</link><pubDate>Fri, 20 Sep 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">implementing-private-vs-code-extensions-for-dev-containers</guid><category>Containers</category><category>DevOps</category><category>Programming</category><description>Learn how to implement private Visual Studio code extensions that are designed to support a specific development container or Codespaces environment.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/implementing-private-vs-code-extensions-for-dev-containers/images/banner.png"/></item><item><title>Mastering the Jest TestEnvironment Event Types</title><link>https://www.kenmuse.com/blog/mastering-jest-testenvironment-event-types/</link><pubDate>Thu, 29 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">mastering-jest-testenvironment-event-types</guid><category>DevOps</category><category>Programming</category><description>If you're implementing a TestEnvironment, you'll need interact with the testing lifecycle. This post will explore events that are raised and how to use them.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/mastering-jest-testenvironment-event-types/images/jest.png"/></item><item><title>A Crash Course on Jest TestEnvironments with TypeScript</title><link>https://www.kenmuse.com/blog/crash-course-jest-test-environments-with-typescript/</link><pubDate>Sat, 24 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">crash-course-jest-test-environments-with-typescript</guid><category>DevOps</category><category>Programming</category><description>Want to get the most out of Jest and you love TypeScript? Need some code that runs outside of the tests? Learn how (and why) to build custom TestEnvironments.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/crash-course-jest-test-environments-with-typescript/images/banner.png"/></item><item><title>Implementing Processes for GHAS using GitHub Probot</title><link>https://www.kenmuse.com/blog/implementing-security-processes-for-ghas-using-github-probot/</link><pubDate>Fri, 16 Aug 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">implementing-security-processes-for-ghas-using-github-probot</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>GitHub Advanced Security helps teams to shift left and secure their development. When its processes don't quite fit the team's approach, it's time for Probot!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/implementing-security-processes-for-ghas-using-github-probot/images/banner.png"/></item><item><title>The Ultimate Debugging Hack for Developers</title><link>https://www.kenmuse.com/blog/the-ultimate-debugging-hack-for-developers/</link><pubDate>Fri, 12 Jul 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">the-ultimate-debugging-hack-for-developers</guid><category>DevOps</category><category>Programming</category><description>Developers usually want to be able to directly connect to a system and start their debugger. What if there's a better way to get the information you need?</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/the-ultimate-debugging-hack-for-developers/images/banner.png"/></item><item><title>Decoding Binary Data in Swift</title><link>https://www.kenmuse.com/blog/decoding-binary-data-in-swift/</link><pubDate>Thu, 23 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">decoding-binary-data-in-swift</guid><category>Programming</category><description>To properly decode binary data in Swift, it helps to be able to incrementally read the data and convert it to a Swift type. Learn to build a Binary Data Reader!</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/decoding-binary-data-in-swift/images/banner.png"/></item><item><title>Creating Swift Binary Decoders</title><link>https://www.kenmuse.com/blog/creating-swift-decoders/</link><pubDate>Thu, 16 May 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-swift-decoders</guid><category>Programming</category><description>If you want to be able to parse Bluetooth data, you need to be able to decode it. Learn to implement a custom Swift binary decoder.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-swift-decoders/images/banner.png"/></item><item><title>Creating an Int24 for iOS</title><link>https://www.kenmuse.com/blog/creating-an-int24-for-ios/</link><pubDate>Sat, 27 Apr 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">creating-an-int24-for-ios</guid><category>Programming</category><description>To develop a Bluetooth application for iOS in Swift, we need a 24-bit unsigned integer. In this post, we'll explore how to create an integer data type in Swift.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/creating-an-int24-for-ios/images/banner.png"/></item><item><title>Fashion, DevOps, and Certificates</title><link>https://www.kenmuse.com/blog/fashion-devops-and-certificates/</link><pubDate>Sat, 20 Apr 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">fashion-devops-and-certificates</guid><category>Programming</category><category>Security</category><category>DevOps</category><description>Google has announced an initiative that will change the way certificates are issued, impacting 50% of companies. Are your dev practices up for the challenge?</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/fashion-devops-and-certificates/images/banner.png"/></item><item><title>Understanding Bluetooth Basics</title><link>https://www.kenmuse.com/blog/understanding-bluetooth-basics/</link><pubDate>Sat, 13 Apr 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-bluetooth-basics</guid><category>Programming</category><description>The first step in building a Bluetooth Low Energy app is understanding the basics of how data is provided to clients using Services and Characteristics.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-bluetooth-basics/images/model.png"/></item><item><title>Swift, Workouts, and Bluetooth Low Energy</title><link>https://www.kenmuse.com/blog/swift-workouts-and-bluetooth-low-energy/</link><pubDate>Fri, 05 Apr 2024 00:00:00 -0400</pubDate><guid isPermaLink="false">swift-workouts-and-bluetooth-low-energy</guid><category>Programming</category><description>I needed accurate workout details, so I decided to turn my treadmill into a smart device and integrate it with my Apple watch. Learn how I started my journey.</description><enclosure type="image/ebp" url="https://www.kenmuse.com/blog/swift-workouts-and-bluetooth-low-energy/images/banner.webp"/></item><item><title>What Developers Should Know About Floating Point Numbers</title><link>https://www.kenmuse.com/blog/what-developers-should-know-about-floating-point-numbers/</link><pubDate>Fri, 01 Mar 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">what-developers-should-know-about-floating-point-numbers</guid><category>Programming</category><description>Fun fact: adding 0.1 to 0.2 doesn't exactly equal 0.3 in most programming languages. Learn why floating point numbers don't behave the way you think they do.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/what-developers-should-know-about-floating-point-numbers/images/banner.png"/></item><item><title>Troubleshooting Git Authentication</title><link>https://www.kenmuse.com/blog/troubleshooting-git-authentication/</link><pubDate>Fri, 16 Feb 2024 00:00:00 -0500</pubDate><guid isPermaLink="false">troubleshooting-git-authentication</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Whether you're dealing with bad credentials or connectivity issues, there are a few tricks with Git that can make it easier to understand what's happening.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/troubleshooting-git-authentication/images/banner.png"/></item><item><title>Automatic SSH Commit Signing With 1Password</title><link>https://www.kenmuse.com/blog/automatic-ssh-commit-signing-with-1password/</link><pubDate>Fri, 10 Nov 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">automatic-ssh-commit-signing-with-1password</guid><category>DevOps</category><category>Programming</category><description>Learn how to automate SSH commit signing with 1Password and dotfiles to enable others to verify the authenticity of your Git commits.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/automatic-ssh-commit-signing-with-1password/images/banner.png"/></item><item><title>Automatic SSH Commit Signing With Dotfiles</title><link>https://www.kenmuse.com/blog/automatic-ssh-commit-signing-with-dotfiles/</link><pubDate>Thu, 19 Oct 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">automatic-ssh-commit-signing-with-dotfiles</guid><category>DevOps</category><category>Programming</category><description>&lt;p&gt;I previously talked about
&lt;a class="" href="https://www.kenmuse.com/blog/the-magic-of-dotfiles/" target="_self"&gt;how dotfiles can improve the development experience&lt;/a&gt;. By automating the processing of setting up your environment, you are free to focus on more important things. One of the more mundane tasks for developers is setting up commit signing and verification. By doing this, others can verify that you are the author of a specific commit. It just requires some setup, especially if you want automatic support in your dev containers. For these examples, I&amp;rsquo;m going to use SSH-based commit signing. It&amp;rsquo;s a common approach, and it doesn&amp;rsquo;t require sharing a private key between environments.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/automatic-ssh-commit-signing-with-dotfiles/images/banner.jpg"/></item><item><title>The Hidden Dangers in Dependencies</title><link>https://www.kenmuse.com/blog/the-hidden-dangers-in-dependencies/</link><pubDate>Thu, 14 Sep 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">the-hidden-dangers-in-dependencies</guid><category>DevOps</category><category>Programming</category><category>Security</category><description>When it comes to code, what you don't know can hurt you. Dependencies come with more security considerations than most people realize. Learn to tighten it up!</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/the-hidden-dangers-in-dependencies/images/banner.jpg"/></item><item><title>Forcing .NET Into Debug Mode</title><link>https://www.kenmuse.com/blog/forcing-dotnet-debug-mode/</link><pubDate>Thu, 07 Sep 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">forcing-dotnet-debug-mode</guid><category>DevOps</category><category>Programming</category><description>How does .NET determine debug or release at runtime? It's more than just specifying a build configuration. And it's more configurable than most people realize.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/forcing-dotnet-debug-mode/images/banner.png"/></item><item><title>Understanding .NET Debug vs Release</title><link>https://www.kenmuse.com/blog/understanding-dotnet-debug-vs-release/</link><pubDate>Thu, 24 Aug 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-dotnet-debug-vs-release</guid><category>DevOps</category><category>Programming</category><description>Not completely sure about the differences between Debug and Release builds in .NET? Explore the implementation and the implications.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-dotnet-debug-vs-release/images/banner.png"/></item><item><title>An Introduction to SourceLink</title><link>https://www.kenmuse.com/blog/an-intro-to-sourcelink/</link><pubDate>Thu, 17 Aug 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">an-intro-to-sourcelink</guid><category>DevOps</category><category>Programming</category><description>Instead of using symbol servers to index our PDBs, we can use an open, standardized approach to map our symbols to source code and improve the debug experience.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/an-intro-to-sourcelink/images/banner.jpg"/></item><item><title>Understanding Symbol Servers</title><link>https://www.kenmuse.com/blog/understanding-symbol-servers/</link><pubDate>Thu, 10 Aug 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-symbol-servers</guid><category>DevOps</category><category>Programming</category><description>It's not really an exploration of PDBs and debugging without talking about symbol servers. Today we'll learn about what they do and when you need one.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/understanding-symbol-servers/images/banner.jpg"/></item><item><title>What Every Developer Should Know About PDBs</title><link>https://www.kenmuse.com/blog/what-every-developer-should-know-about-pdbs/</link><pubDate>Thu, 03 Aug 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">what-every-developer-should-know-about-pdbs</guid><category>DevOps</category><category>Programming</category><description>Almost a decade ago, John Robbins opened up the details of PDBs to the developer world. It's time to re-examine the format and how it works in modern .NET.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/what-every-developer-should-know-about-pdbs/images/metadata.png"/></item><item><title>Understanding Certificate Authorities</title><link>https://www.kenmuse.com/blog/understanding-certificate-authorities/</link><pubDate>Thu, 27 Jul 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-certificate-authorities</guid><category>Programming</category><category>Security</category><description>Certificates rely need a system of trust, and this starts with certificate authorities (CAs). In this post, we'll explore both CAs and self-signed certificates.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-certificate-authorities/images/banner.png"/></item><item><title>Understanding X.509 Certificates</title><link>https://www.kenmuse.com/blog/understanding-x509-certificates/</link><pubDate>Thu, 20 Jul 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">understanding-x509-certificates</guid><category>Programming</category><category>Security</category><description>Despite decades of use, certificates tend to be a mystery to most developers. In today's post, we explore the basics of certificates and take a peak inside.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/understanding-x509-certificates/images/banner.png"/></item><item><title>Why You Should (Not) Prefer Monorepos For Git</title><link>https://www.kenmuse.com/blog/why-you-should-not-prefer-monorepos-for-git/</link><pubDate>Fri, 23 Jun 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">why-you-should-not-prefer-monorepos-for-git</guid><category>DevOps</category><category>GitHub</category><category>Programming</category><description>Monorepos are often seen as the simple solution to complex collaboration and code management problems. Like with most quick fixes, the devil's in the details.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/why-you-should-not-prefer-monorepos-for-git/images/banner.jpg"/></item><item><title>GitHub, Maven, and Packages</title><link>https://www.kenmuse.com/blog/github-maven-and-packages/</link><pubDate>Thu, 27 Apr 2023 00:00:00 -0400</pubDate><guid isPermaLink="false">github-maven-and-packages</guid><category>Programming</category><category>GitHub</category><category>DevOps</category><description>It's important to understand how to securely access package repositories when doing a Java build. Understand how GitHub Actions supports this process.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/github-maven-and-packages/images/banner.jpg"/></item><item><title>Using New GitHub APIs With Probot</title><link>https://www.kenmuse.com/blog/using-new-github-apis-with-probot/</link><pubDate>Thu, 16 Feb 2023 00:00:00 -0500</pubDate><guid isPermaLink="false">using-new-github-apis-with-probot</guid><category>GitHub</category><category>Programming</category><description>&lt;p&gt;Trying to integrate your custom processes with GitHub doesn&amp;rsquo;t have to be challenging. One of the easiest ways to implement custom functionality is to create a
&lt;a class="external-link" href="https://docs.github.com/en/enterprise-cloud@latest/developers/apps/building-github-apps/creating-a-github-app" arial-label="The GitHub App link opens in a new tab" target="_blank"&gt;GitHub App&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; using Probot. The challenge comes if you need to implement a listener for a new webhook event or invoke a new API that Probot hasn&amp;rsquo;t exposed. The good news &amp;ndash; it&amp;rsquo;s not too difficult. As an example, we&amp;rsquo;ll explore implementing both the event handling and REST method calls for some of the new Dependabot endpoints.&lt;/p&gt;</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/using-new-github-apis-with-probot/images/banner.png"/></item><item><title>Using Node Version Manager (NVM)</title><link>https://www.kenmuse.com/blog/node-version-manager/</link><pubDate>Thu, 13 Oct 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">node-version-manager</guid><category>Programming</category><description>&lt;p&gt;The other day I was needing a quick and easy way to configure Node.js in an Ubuntu environment. Unfortunately, in this particular case I could simply rely on a package manager to update my dependencies. I needed some extra assistance. Enter Node Version Manager (NVM).&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re not familiar with it,
&lt;a class="external-link" href="https://github.com/nvm-sh/nvm" arial-label="The NVM link opens in a new tab" target="_blank"&gt;NVM&lt;span class="fa-solid fa-up-right-from-square" &gt;&lt;/span&gt;&lt;/a&gt; provides a quick and easy way to install and configure multiple versions of Node.js in a user environment. This works well, even in a container. It&amp;rsquo;s surprisingly simple and straight-forward as well! To set it up (install or upgrade), you can use the documented process:&lt;/p&gt;</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/node-version-manager/images/banner.png"/></item><item><title>Ruby for the .NET Developer</title><link>https://www.kenmuse.com/blog/ruby-for-the-net-developer/</link><pubDate>Thu, 08 Sep 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">ruby-for-the-net-developer</guid><category>Programming</category><description>&lt;p&gt;The last few weeks, I&amp;rsquo;ve been having to work in Ruby 2.x. It&amp;rsquo;s not a language that I&amp;rsquo;ve spent a great deal of time with, so it&amp;rsquo;s been fun to dive into the nuances of the platform. There&amp;rsquo;s a lot of things to like about it, including some simple syntaxes for common tasks in other languages. It can make it a powerful tool for some complex jobs. As someone that programs in multiple different languages, I often see many aspects that are similar, as well as certain aspects that make the language more powerful by requiring less code.&lt;/p&gt;</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/ruby-for-the-net-developer/images/banner.jpg"/></item><item><title>Coloring Consoles in ANSI</title><link>https://www.kenmuse.com/blog/coloring-in-ansi/</link><pubDate>Wed, 13 Jul 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">coloring-in-ansi</guid><category>Programming</category><description>Explore how to use ANSI escape sequences to force PowerShell (and other tools) to colorize console outputs.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/coloring-in-ansi/images/banner.png"/></item><item><title>Notarizing .NET Console Apps for macOS</title><link>https://www.kenmuse.com/blog/notarizing-dotnet-console-apps-for-macos/</link><pubDate>Thu, 02 Jun 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">notarizing-dotnet-console-apps-for-macos</guid><category>Programming</category><description>Learn how to create and notarize macOS universal binaries for .NET console applications.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/notarizing-dotnet-console-apps-for-macos/images/banner.jpg"/></item><item><title>Configuring macOS Notarization</title><link>https://www.kenmuse.com/blog/configuring-macos-notarization/</link><pubDate>Thu, 26 May 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">configuring-macos-notarization</guid><category>Programming</category><description>Learn how to setup your environment to notarize macOS applications and support signing .NET console applications.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/configuring-macos-notarization/images/banner.jpg"/></item><item><title>Adopting a Dark Theme in Hugo</title><link>https://www.kenmuse.com/blog/adopting-a-dark-theme-in-hugo/</link><pubDate>Thu, 12 May 2022 00:00:00 -0400</pubDate><guid isPermaLink="false">adopting-a-dark-theme-in-hugo</guid><category>General</category><category>Programming</category><description>How I used a simple trick in Hugo to implement a dark theme in SCSS and it easier for me to update the look-and feel.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/adopting-a-dark-theme-in-hugo/images/banner.jpg"/></item><item><title>Unexpected Optimizations (Why More Is Less)</title><link>https://www.kenmuse.com/blog/unexpected-optimizations/</link><pubDate>Thu, 03 Mar 2022 00:00:00 -0500</pubDate><guid isPermaLink="false">unexpected-optimizations</guid><category>Programming</category><description>Explore examples of a surprising, counter-intuitive practice that can lead to better performance when you're working on cloud systems.</description><enclosure type="image/jpeg" url="https://www.kenmuse.com/blog/unexpected-optimizations/images/banner.jpg"/></item><item><title>Azure Real World: Optimizing PHP Applications for the Cloud</title><link>https://www.kenmuse.com/blog/optimizing-php-applications-for-the-cloud/</link><pubDate>Mon, 14 May 2012 00:00:00 -0400</pubDate><guid isPermaLink="false">optimizing-php-applications-for-the-cloud</guid><category>Azure</category><category>Programming</category><description>My first published article, a guest post for MSDN covering some tricks for using PHP with classic Azure Web and Worker roles.</description><enclosure type="image/png" url="https://www.kenmuse.com/blog/optimizing-php-applications-for-the-cloud/images/banner.png"/></item></channel></rss>