.NET Tools
Essential productivity kit for .NET and game developers
.NET Annotated Monthly | June 2021
Did you know? There are over 220 billion (yes, billion!) lines of COBOL still in use today! It sounds crazy, but it’s true. A substantial part of the US government on both the federal and state level use COBOL as well as finance and private industry have COBOL systems. Many .NET developers hope that .NET will someday have this legacy, but this happened in part because of the extreme expense of mainframes. Systems often costed tens of millions of dollars (decades ago) just for hardware. Companies and governments alike aren’t keen on rewriting systems that are old but work when they’ve invested that kind of money.
.NET news
- Ask the Experts: The future of modern application development with .NET
- Microsoft Build 2021 Book of News
- Announcing .NET 6 Preview 4
- Announcing Entity Framework Core 6.0 Preview 4: Performance Edition
- Announcing .NET MAUI Preview 4
Featured Content
We’ve completed another successful JetBrains .NET Days! The recordings are now available. These are some of the best technical presentations that you’ll see in all of .NET – here’s a sampling: Legacy Refactoring, by Lorraine Steyn | Null & Void – Everything About Nothing in .NET, by Stefan Pölz | Embracing gRPC in .NET, by Irina Scurtu | C# Source Generators in Action, by Andrey Dyatlov (JetBrains) | and many more. We recommend that you spend a day supercharging your skills by watching and learning from the best of the best in .NET.
While May 20th was Global Accessibility Awareness Day, it’s best to develop with accessibility in mind every day. When developers write software that takes accessibility into account from the start, that software is of higher quality not just for those with accessible needs but also for those without. Are you getting into .NET MAUI? Then The Journey to Accessible Apps: Screen Readers by Rachel Kang is a “must read”. For those looking to incorporate accessibility into any type of apps, check out Tools & Tips for Building Apps with an Accessibility-First Mindset by Sara Faatz and Accessibility for All — Three Things You Can Do for Global Accessibility Awareness Day by TPGi. After that, head over and watch these videos on Channel 9: NET Accessibility and Improving Accessibility with Xamarin Community Toolkit (more by Rachel Kang). But don’t stop there, check out these great resources from WCAG and WebAIM!
Tutorials and articles
.NET tutorials
- Put a DPAD on that GC! – Maoni Stephens discusses some very specific and advanced characteristics of the GC and how it will work with .NET 6.
- Why should you care about .NET GC…? – Konrad Kokosa answers the often “why should I care about it. It’s all automatic, isn’t it?” that so many people ask again and again. Read and you’ll know why.
- Entity Framework Core (EF) with SQL Server LocalDB – Check out this quick lesson in EF with LocalDB from Golda.
- The .NET Docs Show – Versioning REST APIs – Irina Scurtu (.NET Days speaker) discusses all things versioning, as it applies to REST APIs. This information can also apply to libraries and other software.
- Simple Example of Calling REST API with HttpClient in .NET 5.0 – This is a daily activity for a great many developer. Adam Storr explains with simplicity and clarity how to call a REST API with HttpClient in .NET 5.0.
- How to expose .NET Assembly Version via API endpoint routing – Speaking of APIs and versioning, Davide Bellone shows us how to expose the assembly version with endpoint routing.
- Conversation about ready to run – Richard Lander documents conversations with engineers about the native code gen tool called Ready to Run as well as a Conversation about PGO (Profile guided optimization). Read up on these tools while they’re still being developed.
- SQL and NoSQL comparison: ASP.NET application | The Couchbase Blog – Matthew Groves (.NET Days Speaker) looks at a few aspects of SQL and NoSQL, such as data retrieval, transactions, paging, performance, and more.
- The Difference Between HTML and URL Encode In .NET | Working With .NET Console Host Lifetime Events | C# 10 Features Social Media Cards With FeatherHTTP – Khalid Abuhakmeh has been busy blogging about varied interesting topics and how-to’s. This is great stuff, stop by and check out these posts.
- Using DateTime and TimeOnly in .NET 6 and Getting Started with GitHub Actions for .NET Developers – Steve Gordon (.NET Days Speaker) writes about two things that tend to drive developers mad – working with dates and working with GitHub.
- Running a .NET application as a service on Linux with Systemd – For those into Linux, Niels Swimberghe has created a nice tutorial demonstrating how to build a .NET application as a service on Linux.
- 10 Blazor Features You Probably Didn’t Know – Blazor is fairly new so a lot of folks may not know these interesting facts about it. Post by Jeremy Likness.
- Coding with Blazor and ASP.NET Core – Video by Andy Schwam in which he live codes a Blazor app.
- Preparing ASP.NET for Long JSON Requests – Bjoern Meyer demonstrates a much needed skill: preparing for long JSON requests. Nobody wants a timeout or error message because the data is too large. You can never have enough data!
- Migrate to ASP.NET Core MVC from ASP.NET Framework MVC – So many of us are migrating our MVC applications upward and onward. Let Joe Guadagno show you what does and doesn’t work.
- .NET 6 Preview with Rich Lander – Catch this fun Podcast with host John Callaway as he interviews Rich Lander to discuss everything .NET 6.
- Async/Await Calls Gotcha with the CSharp ? Null Propagator – Now that nearly everyone is using Async/Await, many of us are running into problems and gotchas. Let Rick Strahl help you sort these out.
- A Simple Moving Average calculator | Making the calculator thread-safe | Extending the calculator implementation Nobody could read just one. So sheck out this excellent article series on making a simple moving average calculator by Andrew Lock. Andrew covers all the important programming concepts that you need to know.
- Securing OAuth Bearer tokens from multiple Identity Providers in an ASP.NET Core API – Security is hard. Learn how to work with multiple providers the right way with this post by Damien Bod.
- Learn About Pattern Matching In C# – Kirtesh Shah has written a nice post on a topic that many are interested in – pattern matching in C#. It’s a really nice tool in the programming toolbox.
- Using the new PriorityQueue from .NET 6 – What is this new PriorityQueue of which you speak, Kristoffer Strube? Do tell us about it!
- Best Practices for Integrating Akka.NET with ASP.NET Core and SignalR – Akka.NET is an OSS distributed computing framework. Aaron Stannard is the main person behind it and he’s made this great post showing you how to use it work ASP.NET Core and SignalR
- Using an F# DSL to Generate C# code – Hey F#’ers, we didn’t forget about you. Catch this article by Gaston Verelst demonstrating how to create a DSL in F# that generates C# code.
- Client side GraphQL with F# – F# and GraphQL make great mates. Akash Mair shows us how nicely they work together.
- Introducing C# 10 – New stuff alert! Check out the new features in C# as presented by Ken Bonny.
- Is the era of reflection-heavy C# libraries at an end? – Reflection is a valuable programming use case, despite any performance problems it may have. However, some advancements in .NET may have rendered it obsolete. But is this the case? Find out as Marc Gravell reflects on reflection in C#.
- Evolving modular monoliths: 1. An architecture for .NET – It seems like everyone is moving that monolith to a microservice. But it’s difficult to just up and re-engineer entire enterprise systems in one go. This article from Jon P. Smith shows us how to do it a better way by evolving our systems.
- Building a supply chain attack with .NET, NuGet, DNS, source generators, and more! and Running a .NET application as a service on Linux with Systemd – Our own Maarten Balliauw has been blogging about his development experiences, and the result is these great posts filled with interesting development scenarios.
- Real world example of reducing allocations using Span<T> and Memory<T> – A few readers asked about Span<T> and Memory<T> so here’s valuable article (sometimes an older post gets to sneak in) by Stefán Jökull Sigurðarson.
- Pwned Passwords, Open Source in the .NET Foundation and Working with the FBI – Passwords in the open, or rather, Troy Hunt’s Pwned Passwords is now open source and guided by the .NET Foundation.
- Source Generators Cookbook – A very cool project showing the various activities you can do with Source Generators, which are all the rage right now. Project by the Roslyn Docs team.
Related programming tutorials
- SQL CAST Function for Data Type Conversions – Casting/conversion in SQL is a gotcha for a lot of .NET folks. Aubrey Love gives a quick lesson in the CAST function.
- Adopting an API-First Strategy to Empower Developers – API first is a great strategy for app building, and Tanya Vlahovic has blogged about how to adopt it.
- Overcoming Database DevOps Challenges: Part 1 – Devops is often difficult for developers and database devops is doubly so. Roseanna Whitelegg breaks it down for us in an easy to read blog post.
- How to run docker compose files in Rider – Whale, whale, whale. If you use Docker then you know how much of a pain Docker Compose can be. So let Gary Woodfine show you how easy it is to do – in RIDER!
- Containers Are Contagious and Often Misused – Speaking of Docker, sometimes, people go a bit overboard (overboard – get it?) and misuse containers. Alaa Tadmori floated a few notes in a post about container misuse.
- Making HTTP calls from inside Rider – Everyone likes to test quick HTTP calls from a tool or inside a browser, but it’s even nicer when you can do it right from your IDE! This article is where Kuba Ciechowski shows you how to do it in RIDER!
- JavaScript at Microsoft | Microsoft Docs – New resource at Microsoft Docs for those .NET folk who need to write JavaScript and TypeScript (so basically all you ASP.NET developers)
- What Technical Debt is and isn’t – Did you ever sit down and think about what technical debt is and isn’t? If you’re unsure, check out this quick read by George Stoker.
- Clean code tip: How to choose meaningful names? – Naming is hard! We all know it. So here are a few nice tips by Davide Bellone on choosing meaningful names. Hint: it’s not x, i, or tmp.
- How to send output to a file – Very often we need to quickly send some output to a file. And .NET developers often use PowerShell. So read this post by Thomas Lee so you can use PowerShell to its fullest.
- In-depth introduction to flexbox – Those doing web development are often flummoxed by flexbox, and rightly so. Sebastian Bełczyk breaks it down so we can create these layouts more efficiently.
- How to Get the Query String in JavaScript – ASP.NET developers do this all the time in C#. But in JavaScript? Not so much. So this article by Sajal Soni will be of interest for those doing both server and client side.
- Testing your Domain when Event Sourcing and Problem Details for Better REST HTTP API Errors – Derek Comartin writes many great blog posts, and has created these articles providing help with testing and dealing with HTTP API Errors.
- Four Scrum Master Success Principles – Anyone looking to move into the Scrum Master role will find this article by Stefan Wolpers on success in Scrum quite helpful.
- Why a Serverless Data API Might Be Your Next Database – Pieter Humphrey lays out some excellent arguments about why you might choose an API database (or NoSQL) over a more traditional RDBMS.
Tweet tips
This is absolutely true! You are human, building software for other humans. If you don’t focus on any human skills (often called core skills, soft skills, people skills, etc…) and only tech, you’re doing every human who uses your software a disservice. Don’t stay stuck as junior in your career regardless of that “Senior” or “Principal” title. And check out the next section for some great human skills articles.
Overly focusing on tech is how you end up with the skills of a senior engineer and the experience of a junior human being.
— Kelsey Hightower (@kelseyhightower) May 14, 2021
This humorous tweet outlines the importance of documentation. Docs have always been the one part of software development that is often overlooked, yet when asked, the overwhelming majority of developers and users alike want clear and up-to-date docs.
“I don’t need to document this. It is a common sense feature that any user will know how to use………” pic.twitter.com/AYIeROzrtd
— Danny Thompson (@DThompsonDev) May 26, 2021
Interesting and random cool stuff
- Signs Of a Toxic Work Culture—And How To Correct Them – We’ve all been there. That one (or a few) job where a coworker, or worse, a boss, is just toxic and drags everyone down. Deanna deBara shows us what to do when we find ourselves in that situation.
- What Introverts Want Extroverts To Know About Workplace Collaboration – Introvert and extrovert collaboration is different. Genevieve Michaels outlines the differences and how we can all work together effectively.
- Why software developer job satisfaction matters and how to make it happen – We all know it matters, but Valerie Silverthorne produces the goods with this article on how we can get some job satisfaction.
- Responsible Use Of Open Source In Enterprise Software – Yes, enterprises, this is for YOU. Rocky Lhotka describes what is considered responsible use for OSS in enterprises – starting with actually supporting OSS and not just behaving like that OSS library you’re using is a free all-you-can-eat salad bar.
- Why Bad CEOs Fear Remote Work – Because they’re bad, of course! Well, ok, there’s more to it. Scott Berkun tells us why.
- Is Accountability a Skill? – We might not think about this much but accountability is a skill, as outlined in this post by Tyler Hakes.
- The Evolution of the Serverless-First Engineer – David Anderson opines on how engineers are leaning towards a serverless way of life.
- Building Terrible Software Is the Default – Absolutely, Justin Ehteredge! But it needs to go from terrible to good, and that’s where this post aims to show you how.
- Reaqtor’s Open Source Journey – Howard van Rooijen penned an interesting story about intrigue, mystery, drama, and the romance of open source.
Onto tweets…
Sonia raises an and interesting question. Dear friends in the UK, is this how it works? No, wait, don’t tell me. I’m going to believe this is how it works regardless.
— Sonia Cuff (@SoniaCuff) May 28, 2021
The replies to this tweet were wonderfully fun to read through. Programmers from around the world shared programming terms that sound odd, if not outright ridiculous, outside of programming. Yet here we are, wondering why non-programmers look at us funny when we use words like “monad”, “polymorphism”, “contravariance” and “enumerate”.
What’s a weird term you learned from programming, something that’s odd sounding and not commonplace anywhere else?
— David Pine 🌲 (@davidpine7) May 30, 2021
I’ll go first “bifurcated”. #developercommunity
And finally, the latest from JetBrains
Here’s a chance to catch up on JetBrains news that you might have missed:
Roadmaps!
Blog posts and webinars
- ReSharper/Rider Release Party
- JetBrains .NET Days Online 2021 Recap – Session Recordings Available
- Rider NuGet Credential Provider for JetBrains Space private repositories
- dotMemory Support For Linux Process Dumps
- Webinar – OSS Power-Ups: SpecFlow
- Case Study: How GritWorld uses Rider and Avalonia to Build a Powerful 3D Engine
Check out this fantastic offer! CODE Magazine is offering a free subscription to JetBrains customers!
Sharing is caring! So share your content with other readers. Don’t keep it to yourself! Send a Tweet or email with tips or content for publication in future newsletters! Share with a comment here, email rachel.appel@jetbrains.com, or drop me a message via Twitter.
Subscribe to .NET Annotated!