Blog

Kubernetes: Using ConfigMaps to Manage Application Configuration

Most applications contain settings which differ from environment to environment, or just need to be able to have behavior changed without making changes to the code. Configuration allows applications to do this. Thankfully, Kubernetes provides a simple way to store configuration values in a cluster and reference them in a Pod specification. In this blog post, I'll show some simple examples of using ConfigMaps in Kubernetes. What Are ConfigMaps ConfigMaps are resources in…

January 07, 2023
|
approximately 4 minutes to read
Demystifying GIT: Merge Commits as GIT Objects

Up to this point, we've covered the internal object structure of GIT and the basics of how branches work and how GIT internally tracks branches. I wanted to highlight merging specifically to show how commit objects change based on the different merge types. Merging in GIT Merging in GIT is the act of combining two or more commits together. There are a few common ways this happens. The fast-forward merge, a traditional merge, and a squash merge. Fast Forward Merge In my…

October 21, 2022
|
approximately 7 minutes to read
Demystifying GIT: Branching

Branching in source control is crucial to building software, and understanding how branching works in GIT can make it much easier to use. Branching is a concept in GIT that differs drastically from traditional source control providers. In my previous post, I discussed the internal structure of GIT commits. In this post, I'm going to talk about branching and how it relates to those commits. Review As we had seen in my previous post on GIT storage, a commit is a snapshot of…

October 13, 2022
|
approximately 6 minutes to read
Demystifying GIT: An Overview of How Git Stores Files

I really like GIT. I've been using it in some form for the past 10 years. First to keep personal projects, and later at work. In stack overflow surveys of developer, GIT it consistently ranks high in usage with 90%+ of surveyed developer utilization using it in the last survey. Considering the segmentation of developer languages and tools, there are not many tools with that much adoption. I want to take a look through the internals of how it stores information underneath a…

October 07, 2022
|
approximately 11 minutes to read
Creating Containers in .NET 7 with the .NET CLI

One really handy feature with .NET 7 is the ability to create containers directly from the dotnet command line. This lowers the bar to entry with container development, and if you've got a standard ASP.Net application, it's easy to throw it in a container. I just want to put a disclaimer before I begin. This functionality is currently in preview. Example Here's an simple example of building a docker container in .NET in just a few simple steps. Create the Project Using the…

October 05, 2022
|
approximately 2 minutes to read
Output Caching in .NET 7 with ASP.Net Core

The release of .NET 7 is around the corner with it now in RC. There are several new features that have grabbed my attention that I decided to try out. The first of these is Output Caching in ASP.Net Core 7. What is Output Caching? Output caching stores the response of an ASP.Net endpoint based on a policy so that it will not be re-calculated on a future request. This is different from Response Caching previously in ASP.Net Core. Response used cache headers and responses from…

September 24, 2022
|
approximately 6 minutes to read
Publishing a NuGet Package Through GitHub Actions

I've been working with Roslyn Source Generators and have gotten to the pointer where there are a few I would like to use for other projects. In order to share the code between these projects, I've decided to create a NuGet package. While I've used NuGet for years and occasionally have had to create a NuGet package here and there for work, I've never actually published one to the official public NuGet repository before. NuGet NuGet is the package system for .NET. It has been…

August 20, 2022
|
approximately 5 minutes to read
Metaprogramming in .NET: Building a Source Generator for a Factory Pattern with Roslyn

In every project there is boilerplate code. It is a particular evil more seen in statically typed languages with the need to express every object in a type safe way. In this post I'm going to be talking about building a Source Generator with Roslyn to auto generate some of this boilerplate. More specifically I'll be auto generating a factory for an object based off a constructor. What's a Factory A factory is a design pattern focused on creating objects. While factories have…

July 29, 2022
|
approximately 4 minutes to read
Kubernetes: Deployments

In my previous posts regarding Kubernetes, I've written primarily about running containers in Pods on Kubernetes. Pods provide a basic building block in kubernetes that allows to execute containers within a Kubernetes cluster. In future posts, I'm going to move on to other concepts that can be built off of Pods within Kubernetes. ReplicaSets and Deployments will build off that base to help run scalable workloads. Like Pods, there is a lot to discuss with the topic, this first…

June 25, 2022
|
approximately 8 minutes to read
Kubernetes: Checking Pod Health

In my previous post on Pods, I gave a simple example running a container in Kubernetes. In this post, I will be discussing how to check pod health and keep them running with probes. Probes on Pods Even the best software fails from time to time. Be it networking issues, a software bug, or unrelated 3rd party dependencies. Being able to react to these failures and ensure the appropriate action occurs is critical to maintaining an overall healthy software system. Kubernetes has…

June 17, 2022
|
approximately 7 minutes to read
© 2025 - Built and designed by Jeremy Honl with Gatsby. Images are from Unsplash