Blog
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…
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…
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…
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…
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…
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…
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…
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…
Null is often described as the million dollar problem or billion dollar mistake. There are so many times when a null check is needed in code that it can be easy to forget them. Javascript compounds this with the additional special case of undefined. With Typescript, strong typing helps catch these errors. However, in Typescript that safety comes with the added complexity of having to do null checks a lot. Thankfully, in Typescript, there are several shorthand ways to deal…
Typescript has become my favorite language to use during web development. Most of all, I love the type safety. However, there are so many features to the language it's easy for little useful tidbits to get forgotten about. I'm going to be writing some brief posts on some little features that have really been helpful during web development. The first of these is destructuring assignments. Destructuring Arrays For example: While this is a trivial example, the opritunity here is…