Dotnet logo

.NET Tools

Essential productivity kit for .NET and game developers

.NET Tools

.NET Annotated Monthly | December 2020

Here we are, at the end of 2020. Many around the world are entering their peak of the holiday season, so happy holidays to you! We at JetBrains hope you stay safe, healthy, and happy through 2021 and beyond.

This month in computing history reveals the first PhD granted in the field of Computer Science, in 1965. Richard L. Wexelblat earned the title at the University of Pennsylvania, the home of the ENIAC. Fast forward to 1982 and TIME Magazine has awarded this distinction to the Personal Computer.

.NET Annotated Monthly newsletter by JetBrains!

.NET news

There’s not a lot of news, but the .NET news that did happen in November was huge!

.NET tutorials and tips

Simplifying Bindable Properties with Type Converters in Xamarin Forms – Binding data with varying types can be challenging. Charlin Agramonte makes it simple!

The updated GetGCMemoryInfo API in .NET 5.0 and how it can help you – As always, Maoni Stephens goes deep into the internals of .NET so that we can understand what’s happening much better.

Generating Code in C# – Source generators are all the rage as a new feature in .NET 5. Jason Bock breaks down how to generate code for automation purposes.

Should You Always Create a Nuget Package? Asking for a Friend… – Shawn Wildermuth shares a NuGet package he built. But the package is very small, and warrants the question: How small is too small? Where’s the line between "download a package" and "just write it yourself"?

Blazor Server vs. Blazor WebAssembly: Four Ways In Which They Differ – Blazor is all the rage these days, and David Grace has laid out four ways in which Blazor Server vs Blazor WebAssembly differ. This should clear up some confusion.

Processing Google reCaptcha Tokens in ASP.NET Core – How much do you believe your users? Enough to believe they’re not robots? Or do you make them prove it? For those who demand proof, James Chambers demonstrates using Google reCaptcha Tokens in ASP.NET Core.

C# 9 Records as DDD Value Objects – Are you into DDD (Domain-Driven Design)? Then you’ll want to see this piece about C# 9 records as DDD Value Objects by Vladimir Khorikov. Even if you’re not a DDD person, this is great material detailing C# 9 records.

How to create a QR Code generator with Azure Functions – Now you can have a QR code for every occasion! Anuraj Parameswaran shows you how to make them with Azure Functions.

C# In Simple Terms – Expressions, Lambdas, and Delegates – Matthew Jones takes you back to foundational programming constructs by explaining expressions, lambdas, and delegates. Things that are worth learning for C# developers.

Blazor JavaScript Isolation, Modules, and Dynamic C# – Khalid Abuhakmeh gives us a much needed explanation of the nitty gritty bits of Blazor.

Outbox Pattern: Reliably Save State & Publish Events – The Outbox Pattern makes code that works with events and messaging more reliable, and Derek Comartin shows us how this pattern works.

Implementing a Custom TypeConverter In Razor Pages – Mike Brind demonstrates how to implement a TypeConverter object to do some custom conversions for yourself.

How to make a WinForms app with .NET 5 entirely from the command line and publish as one self-contained file – Yes, indeed, WinForms is still a thing, and folks need to deploy it as a single file. All of those tiny apps for a small group of people? That’s what this is about. Blog post by Scott Hanselman.

6 less popular facts about C# 9 records – Konrad Kokosa pens an exposé on the little known facts about records in C# 9.

Using Microsoft Graph API in ASP.NET Core – Damien Bod crafts an excellent tutorial on Microsoft Graph and ASP.NET Core.

Simplify your ASP.NET Core API models with C# 9 records – There are lots of great posts out about C# records recently, and this one is highly useful since there are so many ASP.NET developers. Read on and let Dave Brock show you how to use records in ASP.NET API models.

Adding .NET 5 Support to Azure App Service – .NET 5 is out and it’s time to upgrade! Check out this post by Joe Guadagno to find out how to upgrade your Azure App Services to .NET 5.

Localization in Blazor WebAssembly Applications – Remember it’s the world wide web, so we need to localize applications for world usage. Marinko Spasojevic demonstrates how to do this in Blazor apps!

Interesting and cool stuff

Why failure should be normalized and how to do it – You’ve failed at failing, so now is the time to learn how to fail successfully. In this post, Lisa Seelye shows how you deal with failure and learn and grow from it.

Antipatterns – Antipatterns! They are everywhere! Every development project and every organization has them. Don’t despair, they can be assuaged. But only if you can recognize them first, and Ilyana Smith shows us how to do that.

Fun tweets this month:

We’ve all encountered this person who (mis)uses our software.

Khalid, Our .NET Advocate has been analyzing the NuGet package registry, and this is what he found. Indeed, naming is hard.

And finally…

Here’s a chance to catch up on JetBrains news that you might have missed:


Blog posts:

Check out this fantastic offer! CODE Magazine is offering a free subscription to JetBrains customers!

If you have any interesting or useful .NET or general programming news to share via .NET Annotated Monthly, leave a comment here, email me at, or drop me a message via Twitter.

Subscribe to .NET Annotated!

image description