.NET R&D Digest (February, 2022)

No long introduction this time.

This issue includes bits of computer science, software development, .NET, networking and diagnostics.

Have a nice read.

Computer Science

  1. SIMD-friendly algorithms for substring searching (by Wojciech Muła)
    Looking for a substring is an extremely popular operation, especially if you need to parse user input. So, it should be fast, like extremely fast. In this publication, Wojciech Muła introduces and analyses substring searching algorithms which utilise vector registers and instructions to significantly speedup the process. Why it might be interesting to .NET developers? Well, the «Generic SIMD» is implemented in .NET 7.0 Preview 2 and it means, on all SIMD enabled platforms we might expect a significant speedup.

Software Development

  1. Scaling the Practice of Architecture, Conversationally (by Andrew Harmel-Law)
    Traditionally, architect is the one who knows what is right and how things should be done. Having such a person on the project helps to ensure everything is going according to the plan. However, when teams scale, it becomes almost impossible for architect to be in all places simultaneously. In this post Andrew Harmel-Law describes a decentralised approach for architecture which is based on a very opposite baseline, where everyone can do architecture. Very interesting post, recommended to read.
  2. Building Infrastructure Platforms (by Poppy Rowse and Chris Shepherd)
    In software in is fundamental to reuse buildings blocks, especially when these blocks implement best practices. These two factors are what usually drive creation of shared reusable libraries and infrastructure platforms. But while it is quite clear how to build a shared library (there are plenty successful projects in the wild) building a platform adopted by multiple teams in organisation is a different beast to tame. In this post Poppy Rowse and Chris Shepherd provide a guide of how to approach the task, what you need to think of and how you can avoid common mistakes when building your infrastructure platform. The things described in the post are also applicable to different areas of software development.

.NET

  1. Performance improvements in ASP.NET Core 6 (by Brennan Conroy)
    Every release of .NET is accompanied by a post from Stephen Toub about performance improvements. The post were most of the improvements do not require code changes. But what about performance in other parts of .NET ecosystem? What about ASP.NET? I there any or all the gains are from the new framework? The answer is — yes, there are. In this post Brennan Conroy gives an overview of most noticeable performance improvements in ASP.NET 6 compared to ASP.NET 5. The post includes benchmarks, links to pull request and of course a brief explanation of every change which led to performance gains.
  2. .NET and C# Versions – 20th Anniversary (by nietras)
    Do you know how much has been changed since first release of .NET and C#? 🙂 In this infographic by nietras you can find a path .NET went from 1.0 to 6 accompanied by C#. Very interesting to see how many things really form the language we use every day.
  3. What can you do in ML.NET with C#? (by Matt Eland)
    Machine Learning has become a part of many modern applications. There are a lot of developers and data scientists who work with it every day. However, if you aren’t really involved in the topic it might be hard to imagine what kind of problems machine learning could help you with. In this post Matt Eland describes a set of typical problems ML can solve and (what is especially cool) demonstrates how you can approach them using .NET, or to be more precise ML.NET.
  4. Solving the source generator ‘marker attribute’ problem (Part 1 and Part 2) (by Andrew Lock)
    Delivering a product to the end user is separate stage of any software (and to be honest not only a software) product. The complications with delivery comes from the fact that even if you write a best thing ever but if it requires a degree to just set it up — it won’t be used by a lot of users and therefore will have a much smaller impact. In these posts Andrew Lock describes what complications you might encounter when delivering your source generator to end users and shows 4 ways to solve them, each with its own trade offs. As usual, the posts are very detailed and easy to follow.
  5. Using HTTP/3 (QUIC) in .NET (by Gérald Barré)
    HTTP is based on TCP, everyone knows this. However, in future this won’t be 100% true because HTTP/3 is based on QUIC protocol. But what does it mean to us? Well, from the code side — not much. In this post Gérald Barré demonstrates how you can configure .NET 6 project to use http/3 for both — accepting and making calls.

Networking

  1. IPv4 vs. IPv6 FAQ
    Have you ever wounded why IPv4 isn’t replaced by IPv6 yet? Why we still use “legacy” standard for literally almost any network communication? In this post you will find an explanation of common misconception of IPv6 benefits and reason why IPv4 is hard to replace. The post is nice if you want to rise you network awareness.

Tools

  1. BuggyBits (by Tess Ferrandez)
    Buggy Bits (created by Tess) is source code for a set of .NET post mortem (hang, crash, memory) debugging labs. You can find all labs in the Tess’s blog.
  2. NetEscapades.EnumGenerators: a source generator for enum performance (by Andrew Lock)
    The saga for writing enum extensions source generator by a guy has come to a conclusion — meet the EnumGenerator package! In this small post Andrew Lock demonstrates all major features of the designer source generator package and supplement them with benchmarks demonstrating the significant speed up.
  3. dotnet-vs (by Daniel Cazzulino)
    A global tool for running, managing and querying Visual Studio installations at once. Nice tool. Thanks to Gérald Barré for highlighting it in Update all Visual Studio instances from the command line post.

Watch & Learn

  1. Vimeo’s Vaidehi Joshi on the magic of debugging (by Vaidehi Joshi)
    Debugging is what we do every day. However, sometimes, we face an issue we can’t handle ourselves and in such case, in every team there is «someone» who is «good at debugging». They just do it. But how? In this presentation Vaidehi Joshi dives into the topic and describes how debugging process works and what you need to do to become better at it.
  2. Mastering Chaos – A Netflix Guide to Microservices (by Josh Evans)
    You can’t surprise anyone with microservices architecture these days (in 2022). However, despite everything is done (or at least tries to be done) in microservices they are still hard to get right. In this (2016) talk, Josh Evans describes how to understand microservices, what benefits to expect and what challenges Netflix have faced on the path to adopt microservices architecture. The talk is very interesting. Recommended to watch.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s