
2024


Async, CancellationToken, and IProgress in 5 Short Examples
Async code isn’t always intuitive, but practicing helps. Let’s take a look at Async, CancellationToken, and IProgress, in a few short examples.


SSRS won't show the updated default value for a parameter
Changed the default value for a report parameter, but it’s not actually updating in SSRS? That’s by design. Let’s find a way around it.


2023

Diligence, laziness.. or both?
Funny how a little due diligence mixes so well with a healthy interest in avoiding unnecessary future work.


If/else vs switch/case pattern matching
A look at if/else, switch/case, pattern matching, other options … and which is best. (spoiler: none ;) )

What are list patterns in C#?
C# has been getting a lot of pattern matching love in recent years, like with list patterns in C# 11. The problem is knowing where and how to use it.

Even in failure, an increase in understanding is a win
When what we’re trying to accomplish fails, the extra knowledge and clarity we get just by making the attempt is a win all by itself.

What are generic attributes in C# 11?
Generic attributes increase the flexibility of a very early .NET feature. Let’s try using them and see how it keeps our code DRY.

Simple ways to notify a user without a MessageBox in WinForms
When sending notifications in a WinForms app, a MessageBox is the only way to go… or is it? Let’s get creative and see what else we might do.

How to call an async method from a synchronous one, without deadlocking
Writing async code whenever possible is great, but how do we do it when we’re stuck with legacy (and very synchronous) code?

What's the difference between singleton, scoped, and transient?
It’s trivial to register a dependency in a .NET API, but it’s important to clarify a few terms that drastically change a dependency’s lifetime.

How can I generate a new GUID?
GUIDs are heavily used in the world of development, so let’s look at a few quick and easy ways to generate them whenever we need them.

Comparing files in VS Code
VS Code is a great editor with a lot of useful features, like being able to compare two random files for differences. Let’s see how.

How to log messages to multiple targets with NLog
When it comes to finding a bug in an app, few things beat a good trail of logs. And for writing those logs, few tools beat NLog in simplicity or flexibility. I rarely appreciate just how flexible it is though, so it’s worth spending a little time taking a closer look.

What is the NUnit constraint model?
I recently discovered the constraint model in NUnit. It’s been there for years, hiding in plain sight! What is it? Is it worth using? Let’s check it out.

Adding deconstructors to C# types
We can deconstruct tuples in C#, but does it work with other types? And assuming it does (spoiler - it does), is it worth bothering with?