Blog

Using Kiota to Generate an HTTP Client

For years, I've been using open api generator or NSwag to generate HTTP clients for my projects. While this work well, there were edge cases I felt were hard to satisfy. Recently I learned about Kiota to generate API clients, and it takes a much different approach that I think is better. Generating an API Client to Chess.com I've been playing chess online this year, and so I was very interested when I found out Chess.com has a public facing API to access user data. I decided…

January 21, 2024
|
approximately 3 minutes to read
Project Graph Traversal with the MS Build SDK

Happy New Year! Happy New Year! I've been taking a break for a while from my blog. I had been spending some extra time outside of work trying to push forward an initiative inside work to move my workplace forward on containers. It's just been one of those things I personally find important in technical leadership. Learn new things to level up, and share those things with others. It took a little extra effort to do that. It ate into my personal time a bit I used to blog and…

January 14, 2024
|
approximately 3 minutes to read
.NET 8: My Favorite Feature

It's getting close to November, and that means a new .NET release is about to be released. While there are a lot of features that deserve attention, there is one feature that is one of my favorites as it's going to reduce the amount of code I need to write. That feature is primary constructors. It's a new feature in C# 12 that reduces the amount of code needed for simple constructors. A Code Sample Without Primary Constructors We'll look at an example of the chess program I…

October 04, 2023
|
approximately 2 minutes to read
Utilizing Testcontainers for Integration Testing

When writing automated tests, one of the hardest parts of is when integration testing and external dependencies are required-- like a database or external service. While running these things may not be hard an and of itself, maintaining consistency between the tests and the dependencies can be difficult. Recently, I've been working on a legacy data access library that needed some refactoring to get to .NET 6 from .NET 4.8. During this process, I needed some way to test that…

September 15, 2023
|
approximately 4 minutes to read
Jetbrains Rider 2023.2 EAP and AI Assisted Unit Testing

In my pursuit of refining software development methodologies, I have put a few artificial intelligence (AI) assistants to the test. Initial experiences, were met with mixed results. They just didn't work well for my personal coding flow. While the AI system's capabilities extended to elementary code completions at the time, they struggled to deliver when tasked with increasingly complex code structures. A recent foray into using JetBrains' latest Rider EAP has been a game…

July 21, 2023
|
approximately 3 minutes to read
GIT Branching: Branch by Abstraction

Many branching strategies work to split up work into smaller pieces that are regularly integrated into a mainline branch. However, often time it is difficult to do this with much larger tasks. I want to highlight a common software development strategy used to overcome this: Branching by Abstraction. What is Branching by Abstraction? When modifying an area of the system, a contract is introduced which encapsulates the public interface of some functionality to change. Once the…

April 07, 2023
|
approximately 3 minutes to read
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
© 2024 - Built and designed by Jeremy Honl with Gatsby. Images are from Unsplash