.NET Annotated Monthly | February 2023
Did you know? The official birthday of the internet is January 1, 1983. While there already was a prototype of several connected computers since the 1960’s, they had no standard way to communicate. That is, until January 1, 1983, when ARPANET and the Defense Data Network moved over to the TCP/IP standard bringing the very first version of what we know as The Internet.
January rarely has a lot going on as folks in Redmond return from the holidays. Here’s the small amount of news from the previous month:
- Announcing .NET Community Toolkit 8.1!
- .NET January 2023 Updates – .NET 7.0.2, .NET 6.0.13
- Play Audio and Video in .NET MAUI apps with the new MediaElement
We’d like to thank Daniel Lawson for curating this month’s featured content! Daniel Lawson (GitHub) is a software developer with AWS certification for a consumer credit company in Paris, France. He is a content creator, mostly on Twitter and on his blog. Daniel creates content about programming in general, and more specifically about C# .NET and AWS.
Do you know the .NET Advent Calendar?
The .NET Advent calendar is a mini-blog built in the spirit of the Advent Calendar. The idea is to publish one article every day, from December 1st to Christmas Eve (December 24th). Not only do I love the idea, but it’s also a directory of some great articles to read and some great bloggers to discover. In The 2022 Advent Calendar, for example, you will find articles targeting a wide variety of topics, such as Internet of Things (a.k.a IoT), Azure, Blazor and many other topics.
Also, one important thing I love about the .NET Advent Calendar is that the blog is open to EVERYONE! Yes! You can contribute to the blog too! Registrations are already opened for 2023. I think it is a great way to advertise your blog. So, it’s worth taking a look!
.NET Frontend Day is coming !
The 10th of February is a date to remember if you like .NET frontend technologies. The .NET Frontend Day is an event where speakers share a lot around the frontend ecosystem of .NET. MAUI and Blazor take an important place, but other frontend topics are exposed as well. This year, it will be a hybrid event : in-person in Stockholm, Sweden, and also stream live on Youtube. Registrations are still possible via the official website. Also, you can find the recordings of the last years on the .NET Frontend Day Youtube channel. Enjoy!
.NET + AWS = ❤️ : Free AWS courses for .NET Developers by Nick Chapsas
In the chapter of .NET on AWS this month, I want to emphasize the new curriculum created by Nick Chapsas, with the support of AWS, titled “AWS Services for C# Developers”. If you are a C# developer who wants to discover the cloud, especially AWS, then this program is for you. Nick tackled every important aspect you need to know about AWS, such as serverless technologies with AWS Lambdas, queue and notifications services, storage with S3, or NoSQL technologies with DynamoDB, and so on. The Good news is that you can enroll for FREE! If you want to learn cloud fundamentals from a developer’s perspective, go to Nick’s website and enroll!
New .NET Native AOT compilation: Good news for the serverless world!
Till .NET 6, C# compilers compile your C# code to the MSIL (Microsoft Intermediate Language) and then into Native code at runtime by the JIT (Just-in-Time) compiler. I wrote a Twitter thread about how your code is compiled, succinctly. But .NET brings a new way to compile C# code in the version 7: Native Ahead-Of-Time Compilation, a.k.a Native AOT.
Native AOT helps to publish self-contained console apps where JIT is not allowed. It produced directly the native code, using an Ahead-Of-Time compilation. That means the app will start up very quickly with less memory. You can publish either for Linux or Windows. Native AOT is worth considering in quick startup scenarios, such as cloud serverless technologies (Azure Functions for Azure, or AWS Lambdas for AWS), where improving cold start represents a big challenge. If your architecture relies on serverless technologies in the cloud, Native AOT might be your next topic to consider. However, Native AOT deployment comes with some limitations, for now. If you want to know more, please take a look at the .NET documentation.
Programing tutorials and tips
.NET tutorials and tips
- The .NET feature I grew to love – In this video, Layla Porter shows how she has come to terms with top level statements.
- .NET MAUI Challenge 2: Light and Dark Mode in .NET MAUI and Styling Apps with CSS in .NET MAUI – It’s all about style with these pieces from Leomaris Reyes. Everyone wants their app to have light and dark modes. And you thought CSS was just for web apps? Nope! Check it out.
- Playing Dynamic Audio In Server Side Blazor – Add audio to your Blazor apps with this tutorial by Michael Washington.
- Blazor United – Here’s a rundown of the new direction for Blazor called “Blazor United” in which Blazor Server and WASM combine models so you can hopefully have the best of both worlds. Video report by Steve Sanderson.
- Getting rid of warnings with nullable reference types and JSON object models in C# – Those nullable reference warnings are super annoying and a pain in the butt to deal with. But Maarten Balliauw makes it easier with these techniques for working with nullables.
- Respond to SMS and Phone Calls using FastEndpoints and Twilio – Here’s the resource for when you need to integrate SMS and phone into your software. Post by Niels Swimberghe.
- C# 11.0: Generic Math, C# Operators and Static Abstract/Virtual Interface Members – A bit on generic math by Thomas Claudius Huber.
- Programming SVGs with C# – We normally think of a declarative syntax when we think of SVG but in this post Khalid Abuhakmeh demonstrates how to use C# to program SVGs instead.
- Serilog Best Practices – If you’re logging with Serilog, here are some ways to get the most out of it by Ben Foster. PS – there’s a lot in here that applies to logging in general.
- Event Sourcing in 1 Hour with Marten in .NET – Derek Comartin hosts Jeremy Miller to discuss event sourcing. What is it, why do it, and how can Marten help?
- Generating argument expressions for minimal APIs (Part 5) and here is A first look behind the scenes of minimal API endpoints (Part 1) – Andrew Lock has been blogging multiple multi-part articles all about Minimal APIs. Check them out, there’s a lot of good info packed in these. Listed here are part 1 of a post on minimal endpoints and part 5 of another.
- Creating and downloading zip files with ASP.NET Core – At some point every web dev has to allow users to download files such as .zip files. So Thomas Ardal has penned a tutorial on how to do this in ASP.NET Core. This one’s good for bookmarking.
- Implementing a Round Robin algorithm for an HttpClient – A round robin technique is a way to do load balancing, and Henrique Dalcin Dalmas has written how to do this for an HttpClient using C#.
- How to Implement Checkbox List in ASP.NET Core – A classic. Everyone needs a checkbox list. Bookmark this one for those times when you have to look it up. Tutorial by Code Maze.
- Mocking an HttpClient using ASP.NET Core TestServer – There are times when you must mock an HttpClient, and Gérald Barré has written about it for us.
- ASP.NET Razor Pages Fragments / Single View approach – Alexander Zeitler demonstrates Fragments in Razor Pages and how you can use them for SPA style pages.
- Getting Started with PostgreSQL in C# – There are other data providers outside of SQL Server and anything on Azure. So the ASPMonsters have published this video tutorial showing us how to use PostgreSQL with C#.
- C# 12: Primary Constructors – This is a bit of an experimental post but Steven Giesel has written how he sees it playing out if released in C# 12.
Here’s a great reminder for 2023 and beyond. Work on problem solving as your superpower – not memorization. You’ll go further in your career.
Related programming tutorials and tips:
- GraphQL & Azure Functions – Everything you need to know about GraphQL and Azure Functions is in this multi-part tutorial by Poornima Nayar.
- SQL Coding Series – Basics Part I – Women who Code hosts Sneha B for SQL Basics Part 1 and…
- SQL Coding Series – Intermediate Part I – Women who Code hosts Astha Puri in this intermediate version of the SQL video series.
- A Brief DevOps History: The Road to CI/CD – If you’ve missed a few things on the IT side of our industry over the years, then now worries. Kat Cosgrove tells us what’s been going on over in DevOps.
- Replacing Postman with the Jetbrains HTTP Client – Our client is pretty awesome and it’s in Rider, so do it! Set Postman aside for a few weeks and try out our built-in HTTP Client. Julien Lengrand-Lambert has all the info about it.
- From clone to running a code base in under 5 minutes – What makes a great onboarding experience for projects? Can you set up a new coder in 5 minutes or less? What does it mean when you can’t? Dennis Doomen has the details.
There’s not much to say about this one:
Interesting and cool stuff
- Code to the beat of your own drum during Black History Month 2023 – An excellent “must read” about music and coding and Black stories of success by Kevin Johnson.
- What do the tech layoffs really tell us? – Are you concerned about your job? Your company? Want to know what’s going on? Catch this podcast by Eira May at StackOverflow about the state of the industry and how it relates to the recent waves of layoffs.
- C++ explained to my dog – This is fun. Marco Foco rewrites some C# and explains what the differences are. Marco says he doesn’t have a dog so take from that what you will.
- What’s in a (Version) Number? – Sometimes, it’s more than Major.Minor.Revision. Sometimes, non-technical factors play into software versions. Sometimes this can even stall their release. In his post, Dylan Beattie has made some notes about an online conversation about this phenomenon.
Just gonna toss this one out there:
And finally, the latest from JetBrains
Here’s a chance to catch up on JetBrains news that you might have missed:
This year’s first round of EAP (Early Access Program) downloads are here. Go grab ‘em while they’re still hot hot hot!
🛠 Check out our .NET Guide! It’s a learning tool with tons of videos, tips, tricks, and info on a variety of .NET related topics. 🛠
Blog posts, webinars, etc..:
- Getting started with ML.NET
- Introducing the Rider Localization EAP for Chinese, Japanese, and Korean
- Webinar – Aaron Stannard – .NET Systems Programming Learned the Hard Way
- Rider 2023.1 EAP 3 is Available With Docker and Structure View Improvements and a Localization Preview
Sharing is caring! So share content that you find useful with other readers. Don’t keep it to yourself! Send us an email with your suggestions for publication in future newsletters!
Subscribe to Blog updates
Thanks, we've got you!
dotCover, dotMemory, dotPeek, and dotTrace 2023.3 Release
dotCover 2023.3, dotMemory 2023.3, dotPeek 2023.3, and dotTrace 2023.3 have been released and are ready for download! Let’s take a look at what’s new with these .NET tools. dotMemory 2023.3 dotMemory Standalone is now available on Linux and macOS. dotMemor…
ReSharper 2023.3: Support For C# 12, Performance Enhancements, and More AI-Powered Features
ReSharper 2023.3 and new versions of other JetBrains .NET tools have just been released. This version brings support for the latest C# 12 features, optimized background code analysis, and the ability to control the amount of resources allocated to solution-wide code analysis. AI Assistant has also r…
Rider 2023.3: Support for .NET 8 SDK, the Latest From C# 12, Performance Enhancements, Predictive Debugging, and More AI-powered Features.
A major update for Rider has just been published! Rider 2023.3 offers support for the .NET 8 SDK, including the latest features from C# 12. Other enhancements include an improved experience when running multiple projects, a predictive debugging mode, and the ability to easily create and navigate thr…
Another Look into the Future with Rider’s Predictive Debugger
In the 2023.2 release cycle, we’ve introduced the Predictive Debugger in ReSharper, which gives you predictions about code paths and variables beyond the current execution pointer. We’ve written extensively about its advantages compared to alternative debugging strategies like thorough thinking, log…