Blog

Software Development Books

Every year I try to pick up a few engineering books and read them. I decided to look through my bookshelf and compile a list of some of my favorites I've gone through in the past few years and record them in a blog post. Hopefully in a few more years, I will do this again. The Pragmatic Programmer The Pragmatic Programmer This book offers a wealth of advice to software developers in small topics. This is a great book I wish I would have picked up when I was a younger…

April 04, 2023
|
approximately 2 minutes to read
GIT: Branching Strategies

In the past, I have written several posts about GIT on my blog. Specifically, I want to reflect on the lessons I have learned while trying to determine the appropriate branching strategy for various projects. Over the years, I have had to make this decision numerous times and realized that documenting my experiences would help me better organize my thoughts. In this blog post, I plan to highlight a few of the main branching strategies I have utilized in the past, along with…

March 26, 2023
|
approximately 8 minutes to read
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
© 2026 - Built and designed by Jeremy Honl with Gatsby. Images are from Unsplash