If It Quacks - Part 2
Steven Gieselby Steven Giesel20d ago
Some days ago I wrote about duck-typing in C# with interceptors. Back then it was a proof-of-concept with a lot of rough edges. Now it is a real library: IfItQuacks.
steven-giesel.comadded August 2026
Steven Gieselby Steven Giesel20d ago
Some days ago I wrote about duck-typing in C# with interceptors. Back then it was a proof-of-concept with a lot of rough edges. Now it is a real library: IfItQuacks.
Steven Gieselby Steven Giesel26d ago
If it walks like a duck and it quacks like a duck - it is a duck. So duck it and make that work in C# thanks to interceptors!
Steven Gieselby Steven Giesel4 Sept 2026
Thanks to @toupswork for starting a funny discussion about extension properties on a recent post I made: "Adding static getter thanks to extensions".
Steven Gieselby Steven Giesel17 Aug 2026
xUnit.v3 got a new major release. This blog post is more about the consequences of that for your local build and CI/CD pipelines than about the new features.
Steven Gieselby Steven Giesel1 Aug 2026
As always my yearly take on the latest .NET release. In a few months dotnet 11 will be released and I wanted to have a look into some performance metrics.
Steven Gieselby Steven Giesel1 Jul 2026
LinkedIn: The "professional" network where critical thinking takes a backseat and everyone is an expert in everything.
Steven Gieselby Steven Giesel8 Jun 2026
If you use AsSplitQuery anywhere in your codebase, EF Core 11 has a present for you: your queries get faster. By default, EF Core loads everything in one query.
Steven Gieselby Steven Giesel18 May 2026
.NET has had DeflateStream, GZipStream, ZLibStream, and BrotliStream for a while now. In .NET 11, a new one joins the party: ZstandardStream. And now we get to say "Zstd" in .NET.
Steven Gieselby Steven Giesel10 May 2026
Here's a bug that lived in .NET for over four years As in: Reported over 4 years ago. If your BackgroundService threw an exception after its first await, your host would catch it, log a critical...
Steven Gieselby Steven Giesel26 Apr 2026
Microsoft.Extensions.Configuration has had ConfigurationKeyNameAttribute since .NET 6 which it lets you rename the key a property maps to.
Steven Gieselby Steven Giesel6 Apr 2026
Some time ago (over 4.5 years ago!) I wrote a blog post titled: "A better enumeration - Type safe from start to end". While cool and so - it had some issues. Let's tackle them!
Steven Gieselby Steven Giesel6 Mar 2026
We have Join. We have LeftJoin. We have RightJoin. But somehow we still don't have a proper full outer join in LINQ. That might come soon!
Steven Gieselby Steven Giesel23 Feb 2026
Sometimes doing arbitrary stuff feels just good! So let's do that! Spoiler alert and disclaimer: This blog post will generate 0 value in your life.
Steven Gieselby Steven Giesel15 Feb 2026
Some time back I wrote about "async2 - The .NET Runtime Async experiment concludes" basically moving the async state machine into the runtime.
Steven Gieselby Steven Giesel25 Jan 2026
I came across a recent thing, where I hit the limit with the "normal" approach of modeling my entity and had to resort to extension methods.
Steven Gieselby Steven Giesel12 Jan 2026
There is a nice proposal which would make collection expressions a bit better - Giving the users the ability to pass in arguments to the creation.
Steven Gieselby Steven Giesel5 Jan 2026
Let's start the new year with a bang: I created a new tool called "Toolbox" to offer some helpful tools for your everyday .NET life. Totally free, open-source and everything client-side!
Steven Gieselby Steven Giesel28 Dec 2025
Task.Delay fails if you wait longer than 49.7 days. So something like: await Task.Delay(TimeSpan.FromDays(50)); will fail. But why and should you care?
Steven Gieselby Steven Giesel9 Dec 2025
I saw mutliple places where people use GitHub runners to do some benchmarking. That can be a tricky thing to do.
Steven Gieselby Steven Giesel3 Nov 2025
Many benchmarks that are using ArrayPool, or more specificly ArryPool<T>.Shared, are not actually measuring a "real" scenarion or the benchmark is flawed in some way.