Ken Muse is a Senior DevOps Architect at GitHub. Learn about DevOps and cloud development from a 4x Microsoft Azure MVP and ALM | DevOps Ranger.| Blogs
Learn how AI tools use prompts and tools to enhance responses, making interactions smarter and more dynamic.| Ken Muse
Learn to run Docker commands inside a GitHub Actions job container and understand the magic behind how Actions creates and manages job and service containers.| Blogs - Ken Muse
Discover how to securely authenticate Docker-in-Docker containers inside Kubernetes to enable private registry access.| Ken Muse
Ever wondered why you can't just export your environment variables in GitHub Actions? In this post, you'll learn why that happens and what you can do about it.| Ken Muse
Discover practical techniques for dynamically authenticating with Git using environment variables or secret vaults to retrieve user credentials.| Blogs - Ken Muse
Discover the intricacies of Git authentication, how it works, and how to configure credential helpers to allow fine-grained control over authentication.| Ken Muse
Trying create code that is truly flexible? Learn how to write software and services that run everywhere: in VMs, containers, and serverless platforms.| Ken Muse
Learn how to extract and validate signed Git commits using the Gitsign certificates and OpenSSL to enhance your software supply chain security.| Blogs - Ken Muse
Use Gitsign and GitHub Actions for keyless Git commit signing to enhance supply chain security and ensure code provenance without managing private keys.| Ken Muse
The new version of Actions Runner Controller has performance fixes, improved configurability, and a new approach to metrics. This post reviews those changes.| Ken Muse
Discover the best automation standards for your smart home! From Z-Wave to Matter, learn the features of each standard and which ones have the most support.| Ken Muse
How we learned to ditch data leaks and embrace local IoT control for ultimate privacy and smarter living.| Ken Muse
Discover why "it should work" is software development's most dangerous phrase and how this mindset leads to unreliable, untested code.| Ken Muse
Uncover the hidden secrets and inner workings of Git LFS! Learn the tricks behind how it uses native Git extensibility features to manage your large files.| Ken Muse
Learn how to configure Git LFS endpoints and to safely migrate repositories that are using .lfsconfig to manage the storage location.| Ken Muse
Infrastructure-as-code should continuously improve. This post introduces a maturity model to enhance how you develop testable and reusable IaC solutions.| Ken Muse
In Kubernetes, we cannot manage resources at the pod level and must resort to setting requests and limits on containers. Learn how that's changing.| Ken Muse
Learn how to standardize development practices by distributing dependencies, settings, and analyzers using NuGet packages.| Ken Muse
Explore how to modernize the Docker-in-Docker support in GitHub Actions Runner Controller (ARC) using the latest Kubernetes feature: native sidecars.| Ken Muse
Kubernetes has a powerful feature that can help you build more robust deployments. Learn about native sidecars, the problems they solve and how to use them.| Ken Muse
Discover the world of GitOps, where Git becomes your source of truth for deployments and learn the three models for defining your GitOps practices.| Ken Muse
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.| Ken Muse
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.| Ken Muse
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.| Ken Muse
When repositories are migrated, it's easy to break the links to the submodules. In this post, learn why it happens, how to avoid it, and how to fix it.| Ken Muse
GitHub tools make it easier to manage the dependencies of a project and ensure your environment remains consistent and stable. Learn how to use them (and why).| Ken Muse
A company's development practices are only as secure as their supply chain. Learn how to define a process for properly reviewing your supply chain.| Ken Muse
Build custom extensions and Webviews is for Visual Studio Code is just the start. Learn how to upgrade your views to use React.| Ken Muse
A custom extension in VS Code gives me a more efficient blogging process. Explore how I incorporate custom UIs using Webviews.| Ken Muse
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.| Ken Muse
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.| Ken Muse
Sometimes you need to try out a modified image or custom chart you're creating in Kubernetes. Minikube can make that process easier.| Ken Muse
Learn how to implement private Visual Studio code extensions that are designed to support a specific development container or Codespaces environment.| Ken Muse
In most cases, we write a workflow where all of the steps succeed. In this post, we'll explore how to create workflows that can handle a failing step or job.| Ken Muse
Learn how to dynamically generate environment variables in GitHub Actions, and learn how this technique can be used to configure Actions themselves.| Ken Muse
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.| Ken Muse
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.| Ken Muse
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!| Ken Muse
Large codebases are difficult, but there are ways to improve the experience. Learn some of the key settings and best practices for handling large Git monorepos.| Ken Muse
Understanding resource allocation is a critical skill for successful Kubernetes cluster deployments. Learn how the cloud providers reserve Kubernetes resources.| Ken Muse
Surprised that you can't fit as many pods on a node as you thought? It turns out that there's a lot more to the story of how Kubernetes allocates resources.| Ken Muse
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?| Ken Muse
The Actions Runner Controller (ARC) can't configure the minimum runner count based on a schedule. Learn to use native `CronJob` resources for the task!| Ken Muse
Running a blog is a lot of work! I've found some tools and techniques to make it easier, and I thought I'd share some of the details with you.| Ken Muse
Actions Runner Controller (ARC) is a powerful way to manage ephemeral, self-hosted GitHub runners. There are five keys that can make you successful using it.| Ken Muse
If you really want to master your Kubernetes environment, it begins with understanding the value of a logging and how to implement good logging practices.| Ken Muse
Scaling systems is a journey. It's not just about adding more resources. It's about understanding the bottlenecks and how to overcome them.| Ken Muse
Understand the best practices for upgrading Actions Runner Controller and minimizing downtime, including when (and if) you can skip a release.| Ken Muse
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!| Ken Muse
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.| Ken Muse
If you're using Actions Runner Controller, the provided base image may not be enough. Learn what's needed in your image to make your workflows run smoothly.| Ken Muse
Your supply chain is frequently the most vulnerable part of your development process. In this post, we'll explore how you can protect your CI/CD systems.| Ken Muse
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.| Ken Muse
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?| Ken Muse
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.| Ken Muse
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.| Ken Muse
If you want to make images for GitHub Actions Runner Controller (ARC) that are fast and network-friendly, learn how to include an Action archive cache.| Ken Muse
If you want to make an efficient image for GitHub Actions Runner Controller (ARC), you need to first understand how to prepopulate the runner's tool cache.| Ken Muse
Understanding ARC begins with understanding what it does (and does not do) to create runners on Kubernetes. In this post, I explore the basics of the process.| Ken Muse
The dev container specification was updated to better define the behavior of initializeCommand. Learn what changed and why your scripts should be idempotent.| Ken Muse
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.| Ken Muse
Whether you’re developing drivers, building appliances, or testing system deployments, you need to test your code. For many, this means installing GitHub Actions Runners (or other agents) on the system under test. But is this really the best way to test your code? For many teams, this doesn’t seem to create any direct issues. By monitoring the system as they deploy, they can directly assess whether the deployment is working correctly.| Ken Muse
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.| Ken Muse
Sometimes you just need a little human interaction. Thankfully, there is a way to get user input that works with most of the dev container implementations.| Ken Muse
Kubernetes and containerized systems mount drives and folders as volumes, but there is another option. Learn how to mount a file and treat it like a drive.| Ken Muse
To master containers, it's important to understand the concept of layers. In this post, I'll explain how layers work and the basis behind their implementation.| Ken Muse
I was recently asked if I knew how to automate creating Azure Entra ID (formerly Active Directory) applications. More specifically, they wanted to know if they could use PowerShell to automate creating the OIDC federation between Azure AD and GitHub. To do this, we just need to use a few PowerShell modules that save us the trouble of crafting several REST calls. These modules work with PowerShell 5.x and 7.x.| Ken Muse
There are some common issues that lead to teams struggling to set up ARC, and nearly all can be avoided with these recommendations.| Ken Muse
There are some common issues that lead to teams struggling to set up ARC. Nearly all of them can be avoided with these recommendations.| Ken Muse
I recommend using a dedicated Kubernetes cluster with GitHub Actions Runner Controller (ARC) to get the best performance and security. This post explains why.| Ken Muse
Security is important, even in your CI/CD processes. Learn the basics of injection exploits with GitHub Actions and how to avoid them.| Ken Muse
Many teams want to have GitHub self-hosted runners on Kubernetes using ARC, but aren’t aware there are two different versions. This post attempts to explain.| Ken Muse
Learn to enable metrics in GitHub's Actions Runner Controller (ARC) and get visibility into the processing queue and the performance of jobs and runners.| Ken Muse
It was time for another update to my site’s functionality. Introducing an updated speaking calendar!| Ken Muse
Adopting OIDC can be challenging for teams that don't understand how the process works. This post explores OIDC and explains what's happening under the covers.| Ken Muse
It can be challenging too understand the differences between Azure DevOps and GitHub Actions. This article provides a mapping of the features and terminology.| Ken Muse
Learn how to automate SSH commit signing with 1Password and dotfiles to enable others to verify the authenticity of your Git commits.| Ken Muse
If you're trying to increase availability by using GitHub Actions Runner Controller. In this post, I'll explain why you can't exceed the 99.9% SLA of GitHub.| Ken Muse
GitHub's Actions Runner Controller (ARC) does not officially support Windows containers for runners. With a little bit of work, we can make it possible.| Ken Muse
I previously talked about how dotfiles can improve the development experience. 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.| Ken Muse
I'm finally caught up on finishing and releasing all of the posts I was developing before my unexpected surgery. Lots of new articles available now!| Ken Muse
Most automated processes aren't maintainable. There are practices you can use to create CI/CD workflows that are maintainable, testable, and reusable.| Ken Muse
Looking to maintain virtual machine or Docker images in the most efficient way possible? Use the Image Factory pattern to automate creation and distribution!| Ken Muse
Using a pull request to merge the same commit to multiple branches causes GitHub Checks and validations to fail. Learn the technique needed to fix this issue.| Ken Muse
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!| Ken Muse
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.| Ken Muse
It seemed like simple indigestion from a spicy dinner. The situation quickly evolved into a life-threatening heart condition and a race against time.| Ken Muse
Not completely sure about the differences between Debug and Release builds in .NET? Explore the implementation and the implications.| Ken Muse
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.| Ken Muse
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.| Ken Muse
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.| Ken Muse
Learn a trick for using SSH to connect to multiple GitHub environments and Git hosts with minimal effort.| Ken Muse