Grant Winney
  • About
  • Code
  • Questions
  • Tools of the Trade

Latest

How to use TimeProvider and FakeTimeProvider (time abstraction in .NET)

How to use TimeProvider and FakeTimeProvider (time abstraction in .NET)

Testing time in C# is difficult, but .NET 8 (C# 12) adds an abstract TimeProvider class that makes it easier. Let's take a closer look.
Jan 6, 2024
Similar endpoints, swagger pages, and a DevOps fail

Similar endpoints, swagger pages, and a DevOps fail

After an unexpected debugging session, some thoughts on APIs, similar endpoints, swagger, and an ugly DevOps fail.
Dec 12, 2023
Diligence, laziness.. or both?

Diligence, laziness.. or both?

Funny how a little due diligence mixes so well with a healthy interest in avoiding unnecessary future work.
Dec 4, 2023
A swirly mass of shared code

A swirly mass of shared code

I heard a story recently, where a team was asked, after spending months adding a set of features to a codebase, to remove a specific feature from very early on in the project, right before the release date. Other features had been built around it and on top of it.
Nov 13, 2023
If/else vs switch/case pattern matching

If/else vs switch/case pattern matching

A look at if/else, switch/case, pattern matching, other options ... and which is best. (spoiler: none ;) )
Nov 3, 2023
What are list patterns in C#?

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.
Aug 31, 2023
Even in failure, an increase in understanding is a win

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.
Aug 24, 2023
Send me new posts: *

  • Connect
  • Privacy
  • License
  • Cross-Posting
Grant Winney © 2025. Powered by Ghost