Blog

Software Architecture

I picked up the book Fundamentals of Software Architecture and have been reading through it. I had also read Clean Architecture last year. So, thoughts about software architecture have been on my mind as of late. I decided I would jot down some thoughts from the books. What's Software Architecture I like how the Fundamentals of Software Architecture defines a software architecture. Most definitions I've come across deal with structuring the software into components. While…

January 21, 2022
|
approximately 4 minutes to read
Dockerfile Tips and Tricks for .NET

I've been working with Docker for close to 4 years now. My first project was a React application that I needed to deploy an on-premsis server. I was fairly new to containers, so I decided I'll just install it on a Linux server and see what the fuss is about. Once I had something working, I was hooked. They just made life so much easier! While it is very easy to containerize applications, there are a few tips and tricks I've learned over the years that really make Docker much…

January 18, 2022
|
approximately 3 minutes to read
Tracking Time in Markdown

Over the New Years break, I built a little console app to help with my new practice of engineering daybook. Engineering daybooks are the practice of documenting what happened in a work day. If you have read the Pragmatic Programmer, the practice is discussed in Topic 22. It has also be an very long time since I've just written a simple console application, so I wanted to see what's available in the latest version of .NET and NuGet libraries. Engineering Daybook I started…

December 31, 2021
|
approximately 6 minutes to read
New DateOnly and TimeOnly Types in .NET 6

I keep finding new little gems in .NET 6. The latest was the DateOnly and TimeOnly structs in .NET 6. Previous to .NET 6, time was typically represented as a DateTime, a DateTimeOffset, or sometimes a TimeSpan for intervals. DateTime and DateTimeOffset worked, but there are odd situations where you need to represent just a Time or just a Date. Trying to represent a Time in a DateTime can lead to all kinds of odd situations. Is one DateTime UTC vs Local, etc? What if I just…

December 28, 2021
|
approximately 2 minutes to read
Thoughts on Estimating in Hours vs Complexity

Why is estimating in hours so difficult? I often wondered this as I sit and am required to put hours on tasks. I had been formulating ideas on this, and these are the conclusions I've come to so far. I've been reading some select chapters from "The Mythical Man-Month". The book has some key conceptual ideas behind estimating that are still relevant nearly 50 years after it was published. However being 50 years old, there are also some chapters that are very antiquated and…

December 03, 2021
|
approximately 5 minutes to read
New Periodic Timer API in .NET 6

The GA of .NET 6 is right around the corner, I've posted some articles in the past about upcoming changes I'm looking forward to. While there are a lot of major improvements that get a lot of attention, many of the smaller improvements get pushed to the wayside. One small change that I really like is the new PeriodicTimer class. Previously Timers in .NET revolved around a callback interface. System.Timers.Timer had a event which an event handler could be added that would be…

October 27, 2021
|
approximately 2 minutes to read
Windows 11 First Impressions

Today I updated to Windows 11 on my laptop. After an hour or two of use, this is a blog post on some first impressions of things I've noticed. Three Things I Like There are a lot of new things in the OS, these were some initial things I just appreciated as I've been working on Windows 11. Maximize Button Shows Layout Options Hovering over the maximize button now gives you the option to the window in a particular layout. Snapping a window along the edges of the screen has been…

October 08, 2021
|
approximately 4 minutes to read
Using Skaffold for Local Kubernetes Development

I've been a fan of Docker Desktop for years. Docker compose was my go to for developing multi-container applications locally. However, while it was polished there was always a gap between building docker compose files and then running it in Kubernetes. Docker had done things over the years to simplify this, but I wanted to automate more of my local development experience. The recent changes to Docker Desktop's Licensing model started me on a search to see what other tools are…

September 29, 2021
|
approximately 4 minutes to read
Using Material for MkDocs for Project Documentation

Many software projects enlist the amount of complexity that requires documentation. The primary reason for the documentation to either aid external users on how to use the project, or to document the internal complexities of the software for other developers. While commenting code and public interfaces can help, it's sometimes helpful to include extra details about how an application is built for other maintainers. There are many tools to write documentation, keeping the…

September 17, 2021
|
approximately 3 minutes to read
Building APIs: Generating API Clients with OpenAPI Generator

APIs are everywhere! APIs are one of the basic building blocks of modern software architectures. With the proliferation of HTTP based APIs, facilitating API consumption with minimal effort becomes crucial. The bridge between programming languages and APIs is to use a programmatic API specification that defines the contracts of the API. From there, utilizing tools to read that specification to generate an API client. When utilizing a single language, it's sometimes possible to…

August 30, 2021
|
approximately 5 minutes to read
© 2025 - Built and designed by Jeremy Honl with Gatsby. Images are from Unsplash