.NET Tools
Essential productivity kit for .NET and game developers
.NET Annotated Monthly | June 2023
Did you know? More than 400 billion PDFs were opened in Adobe products in the last year. Wow! That’s a lot of PDFs! How many did you open last year?
.NET news
- Announcing Azure Monitor OpenTelemetry Distro
- Announcing .NET 8 Preview 4
- ASP.NET Core updates in .NET 8 Preview 4
- EF Core 8 Preview 4: Primitive collections and improved
- Announcing a new version of the .NET Upgrade Assistant with support for .NET MAUI and Azure Functions!
Featured content
Hi folks, it’s me, Khalid, your neighborhood-friendly developer advocate. Rachel has kindly asked me to curate the June 2023 newsletter, as I’d like to have a dialogue with our JetBrains community.
How’s your year been so far? Have you learned anything new? What do you think is the next big thing in the .NET community? Can we, JetBrains, improve your .NET development experience? Finally, how are you doing? Please leave replies in the comments section below, and let’s chat.
How am I doing? Thanks for asking. My year so far has been a polyglot development kind of year, with detours into JavaScript/TypeScript, Ruby, mobile development, and Web Assembly. Looking at these other ecosystems can help us understand what the .NET community does well, what our community can draw inspiration from, and how we can contribute to the general health of our little patch of development grass.
Here are some examples I’ve noticed in our community that have similarities to initiatives happening in other communities (let me know if you agree in the comments):
- Blazor United – The multi-paradigm programming of Blazor United allows for three modes: static site generation, server-side, and client-side. This model is growing in popularity with JavaScript frameworks like Next.js, Remix, and Astro.
- MAUI – Mobile development is a daunting problem, and there’s currently a lot of competition in this space. It’s easy to see the similarities in frameworks like Flutter, Kotlin Multiplatform, and JetPack compose, not to mention a strong alternative in our ecosystem in Avalonia.
- Minimal APIs – I just wrote a post about this, and it’s clear to see the inspiration in Minimal APIs from the Ruby ecosystem and the Sinatra library. I could also include a plethora of Node libraries with similar syntax.
- Web Assembly and WASI – Web Assembly is the new frontier for every ecosystem, and while Rust is the undisputed front-runner in this space, .NET has a real chance to win mind share. WASI will change how we write and deploy code, and it’s one of the most significant transformations in development coming.
I’d also like to highlight some of the work folks are doing to build a bridge to these other communities:
- DotNetIsolator – Steven Sanderson continues his fantastic work in the WASM space, which will help open up new options for .NET developers.
- Vite.AspNetCore – Quetzal Rivera is working on a Vite middleware that helps bring JavaScript’s premiere build tooling into your ASP.NET Core workflow.
- Avalonia – The Avalonia team has built an incredible toolchain that helps you deliver solutions to macOS, Linux, Windows, and mobile platforms. This year might be the year of Linux on the desktop, finally!
- Marten – The power of PostgreSQL as a document database and event store? Yes, please.
There’s much to be excited about in technology, especially in the .NET space. Or should I say dotnet? As I wrap up, let me wish you the best this year, and may your backlogs be filled with the best features and your codebases stay bug-free. Please enjoy the excellent community links below, and tell the authors how much you enjoyed their work; it goes a long way.
Programing tutorials and tips
.NET tutorials and tips
- How to Handle the Safe Area Layout for .NET MAUI in iOS and Replicating a Mobile Travel UI in .NET with Uno Platform – Here’s some good information on safe area layouts and setting up a UI geared for a travel app by Leomaris Reyes.
- Tips and Тricks to Мodernizing Your App with Blazor – Thinking about making the move to Blazor? But unsure of what you must consider? Let Galina Jordanowa guide you in your upgrading efforts.
- Typed exceptions for JSInterop in Blazor – Kristoffer Strube writes everything we need to know about typed exceptions for JSInterop in Blazor, as well as handling them and how they work.
- Making authenticated cross-origin requests with ASP.NET Core Identity – We all have to do this as web devs, and this post by Andrew Lock will certainly help you make sense of the authentication components and processes involved.
- What’s the Right Authorization Model for My Application? – Speaking of security, what really is the right auth model for your app? Read this article by Carla Urrea Stabile and find out.
- Implementing Two-Factor Auth using an Authenticator App in ASP.NET – And even more on security – catch this post by Rick Strahl and learn how to do two-factor authentication in ASP.NET.
- How to Convert a String to a Span in C# – Here’s a quick and handy code snippet by Code Maze.
- Create a Place Explorer App Using .NET MAUI and ChatGPT – We know you all are ready to let software write more software for you. In this article, Selva Ganapathy Kathiresan demonstrates how to do so using MAUI and ChatGPT.
- Refactor your .NET HTTP Clients to Typed HTTP Clients – Tim Deschryver shows the manual way to refactor to typed HTTP clients.
- How to Generate Permutations in C# – Do you need to arrange items in a certain manner? Great! Then this post by Matjaz Prtenjak is for you.
- XUnit Tests, JetBrains Rider, and Counting Until Failure and Override Razor Pages Routes From Razor Class Libraries – Our own advocate Khalid Abuhakmeh posted these goodies this month, on tests and routes.
- The importance of removing unnecessary expression values in code in Microsoft .NET – Less code that works is better than more code that does the same thing. And in this post, David McCarter shows how to go the “less code” route by removing code that is unnecessary, this time in the context of expression values.
- How to detect Globalization-Invariant mode in .NET – For those who create localized websites, Gérald Barré has penned some good tips on working with the invariant culture. (e.g., English but not targeting a specific country that speaks English)
- Best Practices for Building Inclusive User Interfaces – Carter Harris has published a blog/webinar demonstrating really great and highly recommended tips to make sure that you can attract the largest user base possible.
- C# logging: Best practices in 2023 with examples and tools – Straightforward ways to do logging never go out of fashion. Post by Shane Duggan.
- When and How to Use Blazor Components – Are you unsure how to best use Blazor components? Should you convert existing HTML snippets to a component? What makes a good component anyway? Steve Smith answers these questions and more in his post.
- ASP.NET Core in .NET 8 is on The Way! Discover the NEW Features – New features post! What do you think? Like them? Hate them? Post by ByteHide.
- Xamarin.Essentials is in .NET MAUI! Access platform APIs with a single API – James Montemagno demos ways to access APIs in MAUI. (video)
- Daniel meets Karl-Henrik Nilsson and talks about Azure Functions design patterns – If you’re doing Azure Functions, you need to know how to get the design patterns down. Or else you may end up spending more time and money than you first thought. In this video podcast Daniel Hindrikes interviews Karl-Henrick Nilsson about serverless design patterns.
- CORS in ASP.NET – CORS is one of those things that everyone in web dev has to begrudgingly do, and it often errors and misbehaves. Fabrizio Bagalà is here with an article to help you sort out everything that CORS throws at you.
- C#12 New Features – New stuff! Catch this short post by Patrick Smacchia outlining a few C# 12 features you may be interested in.
- Building “Next Tech Event” using Blazor and RavenDB Part 17 and Building “Next Tech Event” using Blazor and RavenDB Part 18 – They’re still going strong with this series! This time the tech focus is RavenDB. Video series by Jessica Engström and Jimmy Engström.
- First look at Avalonia with Elmish: wrapping OxyPlot charts – This is a very interesting post covering several facets of software: desktop development including using charts with the OxyPlot library with F#! We often forget that indeed you can do desktop dev in F# and it works great. Post by Mathias Brandewinder.
- Using Statiq, a .NET Static Content Generator – Jason Gaylord shows us how to use Statiq in .NET to generate websites easily.
- Transcribe phone calls in real time with Twilio, Vosk, and ASP.NET Core – This is really cool! Mark Heath published this post showing how to transcribe phone call in real time.
Related programming tutorials and tips:
- Keep ‘em separated: Get better maintainability in web projects using the model-view-controller pattern – Adam Konrád covers a classic pattern of web dev: Model-View-Controller. It’s tech agnostic so you can use this pattern in any web dev project.
- Establishing and monitoring access to different environments (part 1 of 2) – Here’s some good info on monitoring Azure assets by Magnus Mårtensson.
- Technical KPIs for Engineering Departments: A Playbook for Software Development Success – Does your team have KPIs? Does it make sense for your team? Tyler Hakes answers these and more questions on technical KPIs.
AI can be very “bird brained”
Hmmmmm. Light does attract bugs. Do you think switching to dark theme will help?
Interesting and cool stuff
- How Async Practices Can Lead To Better Decision Making – That is, async human communications, not async/await! Stella Garber wrote this piece to help us all who work remotely to make the most of those async and group communications with coworkers and management.
- Too many meetings? Expert advice on the right meeting cadence for every kind of meeting – Perhaps this can help some of us cut down on meetings and get back to coding! Post by Deanna deBara.
- How do we get a tech team to make a big technical change? – This is a great question with such complex human interactions behind it. Change is hard! Chelsea Troy discusses what we can do to smoothly transition when big changes are afoot.
- Dangerously Divided Times – Read this post by Mónica Guzmán for those times when communication is key but the stakes are high. Be it talking to family, friends, or coworkers, there will always be differences of strongly held opinions. Here’s how to navigate them.
I don’t think that’s how Python programming works.
And finally, the latest from JetBrains
Here’s a chance to catch up on JetBrains news that you might have missed:
⚒️ Check out our .NET Guide! Videos, tips, and tricks on .NET related topics. ⚒️
👶 Download our C# for Babies book and teach your little one how to code before they can walk! 🍼
Early Access Programs
Blog posts, webinars, etc..
- Level Up with Live Templates in JetBrains Rider
- The API Verifier: A New Era for ReSharper Plugins
- Webinar – Cecil Phillip – Building payment flows with Stripe and Azure
- ReSharper 2023.2 EAP 2: New C# Inspections for Local Functions, the “N+1” Problem, and More
- Rider 2023.2 EAP 2: Hot Reload for MAUI, Reworked Build Tool Window, Improvements for Source Generators, and More
Don’t miss this fantastic offer! CODE Magazine is offering a free subscription to JetBrains customers. Get your copy today!
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!