As promised this week is what we like to call a greatest clicks week. Or a week where I share (from the first half of the year) the greatest clicks on Last Week in .NET. It’s what you clicked on the most, so enjoy this trip down greatest clicks lane. I am out on a much needed “vacation” (do parents with young children actually have vacations? We’ll find out), and will be back in a few weeks. Until then, here’s something to help you seem busy at your desk and if you work in .NET, it’s job related too!
📝Julie Lerman blogs about using C#9 records as Domain Driven Design immutable value objects in C# 9 I love Julie’s writing, and I hope you’ll enjoy it too.
📝Khalid Abuhakmeh writes about what he’s learned in his time in .NET and there are some good lessons in there. Give it a read.
📝Jennifer Riggins talks about why Tech is still toxic for women Our best days are ahead, but we’re not going to get there if we’re making it impossible for half the population to be a part of tech. Read this article. Internalize it.
📝Dean Ward of Stack Overflow details how they (ab)use IConfiguration If you find yourself with environment and tenet configuration settings; check this post out. (Author’s note: Dean left Stack Overflow during the Great Resignation of 2021 — which happens to coincide with a 6 months after Stack Overflow was acquired by Prosus. I don’t think any of those events are connected, just interesting to see and didn’t want you to think he was still at Stack Overflow.).
🎥 Elegant API Versioning in ASP .NET Core Web API I have not vetted these claims, don’t @ me. (It being the holidays, please @ me, I’d love to hear from you.)
📝 The Author of cURL asks the question: “What if Github is the devil?”. This being a serious subject, I will not joke and say “too Late”.
👐 Microsoft Open sourced the storage engine that powers Exchange Server, Office 365, and parts of Windows. They open sourced the Extensible Storage Engine, or ESE for short, and it’s been a foundational part of windows since Windows NT 3.51. This is cool and I’m still holding out hope for IIS to be open sourced so I can finally figure out this 10 year old IIS bug.
🔮 Brent Ozar talks about the future of SQL Server with Forrest Brazeal. According to Brent, DBAs are safe for at least the next 10 years at least.
🚨🚨🚨 Microsoft releases a whitepaper on mitigating risk when using Private package feeds This dovetails with the security researcher who wrote about how they hijack’d namespaces for private feeds; and Microsoft releases a whitepaper on this issue and how to mitigate this. This is up top because it’s crucially important for teams that use private Nuget feeds. Thanks to Barry “I love Beans” Dorrans for sharing this on Twitter.
⚠ Don’t write async validators in ASP.NET Core. The Pipeline validators run on is synchronous so you’ll run into problems. That’s an important safety tip. Thanks Jeremy.
📢 Dapr 1.0 has been released. Dapr allows you to hot-swap microservice features like queues, data stores, authorization schemes and secrets management. It’s a way to write Microservices for the least common denominator. it’s like Kubernetes for Tech Stacks… and that’s not a compliment.
📝 Do you need a high performing CSV parser in .NET? Cesil has you covered and it now supports source generators. Kevin is a really smart guy and he dives deep into how to use source generators for Cesil and what they do. Thanks, Kevin.
📝 Khalid Abuhakmeh talks about 18 pitfalls you can encounter and EF Core 5 and how to avoid them I’ve hit just about all of these in my work; and that’s either an indictment of me or of the framework itself. You choose.
📝 Blazor Desktop: The Electron for .NET? by Matthew MacDonald asks this question. It’s an interesting way of pitching Blazor that I hadn’t considered previously; and I’m excited to see where this goes. We do already have a perfectly good electron, however.
🆘 [Microsoft has realized leaving Nuget to die probably isn’t a good idea, and so they’re finally paying attention to it](https://devblogs.microsoft.com/nuget/state-of-the-nuget-ecosystem/. Nearly every .NET team in existence relies on Nuget, and yet it’s received less love than a 12 year old dog at a pound. There are signs that Microsoft wants to change this; and that’s a wonderful thing. We’ll see what comes of it.
🎉S4M for .NET It’s a state machine library for .NET, and I’m a big fan of Event Driven Architectures, and when you combine them with State Machines, a whole large swath of both reasoning issues and bugs just go out the window (to be replaced with abusing the state machine; but we can’t have everything). I’m going to give this a try and see how it fares. In a “It better do what it says on the tin” moment, S4M stands for “Short, Simple, and Straightforward State Machine Library”.
🕷👨⚕️.NET 6 introduced the Priority Queue and an enterprising Khalid Abuakumah shows how it works with a nice Avengers example. Black Widow and Dr. Strange are far too down on his list, but other than that it’s a pretty good ranking.
📚Microsoft has Architecture guides for building .NET applications of all sorts. And of course, because Microsoft can’t do anything without pushing Azure, the guides include how architect those applications in Azure. There’s a reason why the Ebooks are free. (Author’s note: It’s because they consider it a lead-gen for Azure, not because they aren’t written well. Realizing some 9 months later that joke was ambiguous).
🤞Edit and Continue support for Linux? Not happening any time soon. The Jetbrains folks received complaints that Edit and Continue support for Linux wasn’t available in Rider, and this particular rabbithole leads right to Microsoft’s door step.
It’s indicative of a bigger problem, that the promise of cross-platform .NET is the sort of promise you’d make like ‘we should get together for lunch sometime’ with a friend you haven’t seen in years you bump into while shopping on a saturday afternoon.
💣Jesse Liberty started off the week with violence by introducing his team’s updated coding standards for C#. For the most part I agree with these standards, but there are a few I have problems with… which I suppose was the goal all along.
💸Jimmy Bogard takes you through local development on Azure Service Bus. Developers won’t pay $99 a year for a tool that saves them hundreds of hours, but will happily pay to develop software in the cloud.
🙋♀️Your top .NET Microservices questions answered The link itself isn’t as interesting as the links available in the post. If you find yourself wanting to learn more about microservices and their structure and communication patterns, these links are a great place to start.
😆Schadenfruede is watching someone else try to set up Microsoft Teams @mcclure111 tries to set up Microsoft Teams to talk to a client, and all hell breaks loose. It’s a fun read if you define fun as “I’m glad that isn’t happening to me” and “Holy cow did Microsoft not think through their user experience?”
🤡Eric S. Raymond believes that it’s easier to tolerate a few jerks than it is to have rules regarding toxicity in a community reaffirming the adage that if you look around the table and can’t see the jerk, the jerk is you.
🔚David Fowler shows off how small ASP.NET Endpoints will be in the future A svelte 7 lines to get an endpoint. Of course, there’s no Authentication, Authorization, or any of the database connection code, but still. 7. lines.
💨EF Core is now at 93.5% speed of Dapper. Well known enough for Microsoft to compare to, but not backed by enough money for Microsoft Legal to care enough to change the name of “Dapr” to something that doesn’t conflict.
🤡 Basecamp lost a third of its employees after a controversional series of blog posts last week A CEO couldn’t destroy their company’s reputation any faster if they tried. This is truly impressive in the depth and breadth of DHH and Jason Fried’s stupidity here.
🎹 David Fowler is playing name that tune with ASP.NET Core We’re now down to three lines (last week it was 7) to have a running web application in C#.
💰 Microsoft’s Barry “I have a bean fetish” Dorrans releases a statement about the commercialization of Identity Server Long story short, The status quo will stay the status quo. For now. This has real Darth Vader vibes to it, if I’m being honest.
🔧 Dave a Brock writes on how to use Configuration with C# 9 Top Level Programs One of the nicer features of C# 9 was pulling out the ceremony of the Main method. Dave uses this blog post to show how you can use configuration in this new world of no Main method. Now if only there weren’t years of documentation showing varying ways to use configuration for varying versions of .NET Core.
⌚ Project Reaqtor is open source and to quote the parent, it “provides a set of framework components that enable devs to build distributed event processing systems across cloud and devices”. It sounds cool, but the number of use-cases that need something like this is small. You can also read about the history of Reaqtor, and @geoffreyHuntley has a twitter thread that includes the highlights.
📃 Azure Application Service feature list, in a tweet; special thanks to Jeremy Sinclair (@sinclairinat0r ) for the screen grab.
🔧 Jared Parsons, member of the Roslyn core team, talks about string vs. String. That is, for those of you listening to this instead of reading it, the keyword string vs. the class String. As it turns out, they’re not the same thing. There is also a special circle of hell for people who override String. @ me on Twitter @gortok if you think I’m wrong about this.
♥ This is one of the best produced virtual keynotes I’ve seen ever Scott Hanselman “and friends” bring you a Build keynote unlike any other. I mentioned this last week, but it’s worth noting again. Watch it. It’s that good.
🤐 MSTIC helped the FBI confiscate the hacker’s wallet from the Colonial Pipeline ransomware hack and they’re being mum on what ‘help’ means. Some commenters note that Windows 10 has a built in keylogger; and I’m seriously reconsidering linux.
🤰 Immo Landwerth wants to make Exception.ToString() useful and if accomplished I’d like to have Immo’s babies. Only one of these statements is a joke and I’ll leave that to you to decide which one.
🏎 New data access benchmarks for .NET 5 and .NET Framework 4.8 This benchmark covers all major ORMs (and Microsoft data access strategies like ADO.NET) and has been updated for .NET 5 and .NET Framework 4.8. Enjoy.
⚔Attack Surface Analyzer is open source and I’m mentioning this because Barry “I wish I had married Beans” Dorrans did not realize it was open source and so it’s news to at least two of us on the internet.
And that’s what you found most interesting in the first six months of 2021. I’ll be back next week with part 2 and hopefully some Disney World anecdotes.