Ken Muse

Using Dynamic Environment Variables With GitHub
Every wanted to dynamically set (or unset) environment variables in your GitHub Actions? Needing more control over the configuration of your steps? Wanting to configure everything using logic written in the language of your choice rather than just relying on GitHub’s expression syntax? This post will show you how to use a powerful technique to take your workflows to the next level.

Read this article

Mastering the Jest TestEnvironment Event Types
Continuing the topics from my last post, this week I want to offer a deep dive into the lifecycle of a Jest TestEnvironment by exposing the events that are raised when tests are run. I’ll also explore some of the details that are included with each event.

Read this article

A Crash Course on Jest TestEnvironments with TypeScript
I needed a way to implement integration tests that would allow me to ensure that I could clean up the emulators I was using after each test cycle. Jest Test Environments provided a powerful way to do this, and TypeScript makes it easy to do (aside from a few quirks).

Read this article

Implementing Processes for GHAS using GitHub Probot
GitHub Advanced Security (GHAS) helps teams to shift left and secure their development practices. But what do you do when its process its processes and practices doesn’t quite fit your team’s approach? In this post, we’ll look at how to use GitHub Probot to implement your own process in a GitHub-native way.

Read this article

The Ultimate Tips for Working With Large Git Monorepos
As a monorepo grows in size, the performance often degrades. It’s the nature of Git. Thankfully, Git has some settings that you can use to improve the performance of your monorepo. This post covers some of the key settings and best practices for working with large monorepos.

Read this article

Planning Kubernetes Cloud Deployments
Last week we built an understanding of how Kubernetes reserves resources on a node. This week we’ll look at how cloud providers configure the resource reservations for their Kubernetes offerings.

Read this article

Understanding Kubernetes Resource Consumption
Surprised that you can’t fit as many pods on a node as you thought? Wondering why a node with 32 GiB of memory can’t hold four 8 GiB pods? It turns out that there’s a lot more to the story of how Kubernetes allocates resources. In this post, you’ll learn how resources are allocated and how to use that to plan your cluster.

Read this article

The Ultimate Debugging Hack for Developers
Developers usually want to be able to directly connect to a system, start the debugger, and step their way through the code. Being able to log into a machine and debug is the way most of us learn to troubleshoot and fix issues. But what if you can’t do that? And what if I told you there’s a better way to debug?

Read this article

Scaling ARC on a Schedule
In the past, ARC has a feature that enabled it to change the minimum number of runners based on a schedule: ScheduledOverrides. When ARC was modernized, this feature was not included in the new version. This isn’t an oversight. Instead, it’s a recognition that Kubernetes has a built-in feature that can handle this task: CronJob. Learn how to use the CronJob resources to change the settings for ARC scale sets on a schedule.

Read this article

How I Blog (or How I Learned to Automate Everything)
A surprising amount of effort (and automation) goes into creating this blog and publishing the content. Writing and hosting content required me to find a set of tools that would be portable and flexible. Over the last few years I’ve found an approach that works for me, and this week I thought I’d share some of the details.

Read this article