[Last Week in .NET #77] – Letters from Microsoft Culture Jail

It’s Martin Luther King Day today, and as such I’ll share Letters from a Birmingham Jail, and it’s well worth your time to read. Today’s a holiday, and not much happened release-wise last week. That does not mean it was a quiet week, however.


CSharpFritz (Jeff Fritz) sits down and programs a Discord Chatbot with C# 6. I notionally know what Discord is, and I notionally know what a chatbot does, but this feels a bit “Hello fellow kids” for me. Maybe I’m getting old? ๐Ÿง“๐Ÿ›น


.NET Developer? You’re an IoT developer too! according to a company that makes a living selling IoT devices that run .NET. Sardony aside; .NET in the IoT space is one of those things I find refreshing. I’ve done firmware work in C, and I would have given my kingdom for a SoC that could support .NET. (.NET wasn’t there yet in 2015). One of the few reasons why I’d go back to full time employment is IoT with .NET. If you’re hiring in that realm, shoot me an email at george+iotrocks (at) georgestocker.com. ๐Ÿ•ธ


Write cloud free code? What? Is this like Dapr (not the ORM) with infrastruture layer plugins? ๐Ÿ”Œ


VisualStudioMagazine.com writes “With many options, .NET Dev Asks for Tech CHoice Help: ‘I Am Lost'”. Ok, let’s unpack this. Converge360, which operates Visual Studio Magazine, is wholly owned by 1105 Media, and is a B2B magazine service (if you want a magazine for your business, you contract with them and they do it).

So, Microsoft said (either explicitly or implcitly), “We need more eyeballs on our .NET Tech Community Forums”, and this is the best that they could come up with, the trial and tribulations of one NickJ911.

It would be embarassing if it weren’t so on brand for Microsoft. The .NET Tech Community forums have fewer posts than a knitting forum, and as a free bit of advice, let me explain why that is: astroturfing doesn’t work. I’ve said it before: Stack Overflow was the perfect property for Microsoft to purchase. it started with two stalwarts in the .NET World (Joel Spolsky and Jeff Atwood), its initial audience was .NET, and even 14 years later, .NET is most popular. Microsoft keeps trying to make its own .NET watering hole, with Microsoft Q&A and now this, but they’re not getting the traffic they should be getting, because Microsoft’s reasons for doing it don’t match what the community wants or needs. Microsoft is the second largest company by market capitalization, and they should start acting like it. Instead of continually building something that isn’t in their DNA, they need to buy it and let it thrive by keeping their hands off. ๐Ÿ˜ณ


npm (which Microsoft owns, ironically enough), just announced a number of security-focused improvements to npm, including the ability to name access tokens (that wasn’t there before?!?!), enforcing 2FA, improved auditing for 2FA adoption, and adding new organization members to teams. โœŒ


CVE-2021-42278 and CV#-2021-42287 allow a regular schmoe to become a domain admin in under 60 seconds, and I wish they hadn’t become narcs. We could all use this, especially those of us in more restrictive work places. Joking aside it is an interesting in-depth look at how these vulnerabilities operate. ๐Ÿฆธโ€โ™‚๏ธ


Microsoft pulls new Windows Server updates due to critical bugs Symptoms include: Domain controllers rebooting, Hyper-V stops working, ReFS volume systems become unavailable, and password security requirements are neutralized. One of those is not true.

These bugs are quite frankly unbeleivable. How did this get through the QA process? Maybe their reorg is to blame? Or maybe they’re still feeling the effects of their QA layoffs? ๐Ÿ›


State of the Windows Form Designer for .NET Applications Dear god these are terrbile headlines. Though I shouldn’t complain, these terrible headlines are how I have a job. Anyway, They’re putting the “Visual” back into Visual Studio by showing some love for the Winforms Designer. If you work at Microsoft, let me know by blinking (once for yes, two for no) whether or not there’s a legal/team that checks out blog posts before they’re posted to ensure they’re sufficiently bland before being posted. It’s not Klaus’s fault. Part of my work here is reading these things every week to share with you what’s going on, and they’re getting blander by the week. ๐Ÿข


Microsoft has 81 open roles for their #msintelplat team, did someone who wrote c for a living finally discover what a hashtag is? I’m going to assume this means ‘Microsoft Intel Platform’ team… which is probably not what it’s for. Microsoft Intelligence Platform?

Sadly I can’t even click on the hashtag to find out what it means. I guess that’s part of the job process: knowing what their hashtags mean is integral to getting the job. They even shortend “Azure Data” to #azdat, which is most certainly a C-ism.

I’m not against Microsoft has a company (in fact if you’re going to work for a “big tech” company, Microsoft may be the best of them from a human perspective), but

Their culture page is dropping big red flags with one of their values:

One Microsoft: We are a family of individuals united by a single, shared mission. Itโ€™s our ability to work together that makes our dreams believable and, ultimately, achievable. We will build on the ideas of others and collaborate across boundaries to bring the best of Microsoft to our customers as one. We are proud to be part of team Microsoft.

A family of individuals? You mean you’re not gonna fire people? Families can’t fire family members. ๐Ÿšฉ


C# 11 now caches method group conversions which apparently has performance implications. Get your Resharper ready. ๐Ÿ–Š


And finally, old for the internet but new to me, I wrote Task Manager and I just remembered something… is a brain dump from the person who wrote Task Manager, and it has a lot of helpful and interesting tidbits. Worth your time.

[Last Week in .NET #76] – Live Async Collaboration

๐Ÿ“–If you use Windows App SDK (WinAppSDK), there are a lot of samples for you to refer to. Complete source code has always had a leg up over blog posts that omit putting the pieces together.

๐Ÿƒโ€โ™€๏ธWhatโ€™s new in .NET Productivity with Visual Studio 2022 One of the nicest parts is the integration with ‘Source Link’ when you click “Go to Definition”. Previously at best you got an object browser, and now you get to go to actual source code. Other improvements include adding more refactorings so they can catch up to ReSharper. It’s good for all of us, and it was bound to happen.

๐ŸšจEmergency Windows Server update Fixes Remote Desktop issues If you use RDP, update it. This update is not available via Windows Update and won’t install automatically, so make sure you add it as part of your WSUS updates.

โ™ปSystem.Text.RegularExpressions.Capture has a ValueSpan property So if allocations matter to you, you can now reduce yet another allocation by using ValueSpan.

๐Ÿ“›Windows.Devices.Wifi has been renamed to System.Device.Wifi This really only matters for the nanoFramework folks.

โ“The @TechEmails twitter account releases old emails from BillG, one that says “I’m literally losing sleep over Java”. This is a fun bit of nostalgia and “what if” to explore.

๐Ÿ’ฌIntegrated Chat in Live Share for Visual Studio 2022 For when a low bandwidth asynchronous approach to collaboration is what you want when you’re working ‘live’ with someone else.

๐Ÿ”ฒAs a Breaking Change, the Azure CLI v2.32.0 will no longer assign a default contributor role, so make sure to assign one

๐ŸŒฆAzure Support shows you how to create a private Azure Kubernetes Service Cluster and holy hell this is not easy to follow.

๐Ÿ‘€The Azure AD SSO brute force Vulnerability that produces no sign in logs still appears to be working with seamless sso turned on. Um. This is bad.

๐ŸงฑStreamline configuring Azure CLI with az init This is new to me and everyone else but it feels like it should have shipped with 1.0. Regardless, here it is.

๐ŸพAnnouncing .NET MAUI Preview 11 If you’re interested in Microsoft’s offering for multiple platform UIs, check out preview 11. If you need something in production now and well supported now, check out Uno Platform instead.

๐Ÿง“Windows NT and VMS: The Rest of the Story This started from a joke tweet about Windows being based on VMS.

๐ŸซMicrosoft’s OSPO year in review — what we’ve learned The OSPO drives Microsoft’s adoption of open source practices in their own work. It does not mean, however, teaching Microsoft how to strategically improve their standing in the open source community. Sort of like teaching butchers about PETA.

๐Ÿ›‘unprivileged containers with the same privileges as privileged containers. This is also not good.

๐Ÿ›กConfigure and validate Microsoft Defender Antivirus network connections How to set up Windows Defender in an internal environment… securely. Tangentially, there’s a performance analyzer for Windows Defender that SwiftOnSecurity says every customer that uses Defender should run

๐ŸฝThe .NET Foundation would like you to volunteer for one of its committees. And yet we’re still waiting on the Board of Directors to follow up to the issues brought up Last October.

And that’s it for what happened Last Week in .NET.

[Last Week in .NET #75] – Jetbrains, are you out Azure mind?

Happy New Year!

Everyone’s back from vacation and we’re ready to start 2022. Omicron started the party early, and at this point it’s not a matter of ‘if’ you’ll catch COVID, but when.

Stay safe out there, and this is what happened.. over the last few weeks in .NET:

๐ŸŒงAzure had a bit of an outage on December 16th, due to an Azure Active Directory (Azure AD) problem. This isn’t the first outage Microsoft has had with Azure AD last year, but it was the last. However, it being 2022, I guess we can look forward to more outages? I don’t want to be glib about this, but Microsoft sucks at writing post-mortems. They still haven’t told us what the hell was going that caused the ChaosDB incident, and so I’m not holding out hope for an explanation into this outage either. If they want to endear trust, it’s not enough to fix issues, you have to explain why they happened and what you’re doing to keep them from happening again. Microsoft does not do this well right now, whether it’s a leadership problem or a regulatory optics problem.

๐Ÿ‘The .NET 6 Lambda Container Image for AWS has been released. If you’re into Azure Functions, yea, they have that too.

๐ŸฅŒResharper and Ride 2021.2.3 have landed with a giant thud. The new harebrained scheme from Jetbrains is to require you to sign up for a JetBrains account to use the trials for Rider and ReSharper, with the following “reasoning”:

  • We want to protect our products from misuse. We understand that using credentials is not a silver bullet, but it still should help.
  • Weโ€™d love to help newcomers get started with our products, and weโ€™re optionally offering relevant learning materials, tips and tricks, etc. We wonโ€™t send you any emails without your explicit consent.

Or, in other words: SALES FUNNEL.

They need to make sales, I get that. People downloading trials and then just continually downloading trials every 30 days sucks for them. They’d also like to get you to convert to a paying customer, and having your email address is a nice way to do that.

This is a no-win scenario for them. If sales are your biggest problem, then make the trial a credit-card trial. That will kill piracy and ensure your trials convert all at the same time.. Yes, you’ll have fewer trials, but that would be the trials that wouldn’t have converted anyway. I’ll note that they do not have a ‘community’ (free) edition of Rider, so they’re already banking on you paying for it.

๐Ÿ”• Cancelling IAsyncEnumerable in C# Jeremy Sedro-Woolley takes you through how to… well.. Cancel IAsyncEnumerable. Sometimes Cancel culture is good, I guess.

[Last Week in .NET #74] – Automated Legal Problems

Being the holidays, there isn’t much going on, but that doesn’t mean there isn’t anything to talk about.

Microsoft had a bot run amok at change the copyright on a forked project. Jeff Wilcox from Microsoft responded to the Hacker News post and indicated that it was a bug from a bot that was supposed to automate parts of their open-source management process. The bug appears to be a misplaced if statement condition

There have been reports of this happening before, and there are several problems with this, in no particular order:

  1. A human doesn’t have to verify the bot didn’t do something stupid. Given where we are with software you’d think anything that had legal and PR ramifications would have human approval. That is not the case here.
  2. This change had been in place for a month before anyone from Microsoft noticed it (why didn’t the maintainers of that fork notice it earlier? Isn’t it their fork?
  3. The reason why Microsoft gets so much flack when something like this happens is that their company has a reputation of a lack of transparency and a more recent reputation of doing dodgy things in Open Source while claiming there’s absolutely nothing wrong with what they did. Did commentors judge Microsoft too harshly in this case? Yes. Does Microsoft do things regularly that make this sort of Judgement easy to come by? Also yes.

Open Source is a social construct where the only written contract (the license) is about 10% of the equation. The rest of it is built on trust, convention, and a desire to give back. The software Microsoft wrote doesn’t take the 90% into consideration, and it speaks of a larger problem we have in tech:

We think Software will solve all of our problems. The crypto folks are embracing “smart contracts” as The Way. We embrace AI and Computer Vision for Tesla “Autopilot” without regard to the human lives at stake, and we dismiss bugs are minor inconvienences. None of this is as bad as Therac-25 but we’re not far from that with the trust we put into computers.

Sadly, I think this lesson is hard to learn when there’s ‘no harm done’, especially when as big of a corporation as Microsoft is, they don’t have a single person who owns their Open Source work, who is personally responsible for any Open source mistakes they make in that 90%. Even the head of OSPO is inward focused on what Open Source can do for Microsoft, and not outward focused, on Microsoft’s responsiblities to the Open Source community.

And as if to prove my point, given the recent log4j debacle, we’ve still got to figure out how to pay to fix open source. This is where we need Microsoft (and other Trillion dollar companies) leadership: In helping to re-inforce and sustain that 90%, and stop focusing on how they can maximize their value out of the 10%.

[Last Week in .NET #73] – Holiday Road Part Deux

This is part two of 2021’s greatest clicks on Last Week in .NET. Today we’ll cover July-Present, and speaking of Presents… have you bought yours yet? Yea, that’s a Christmas Joke.

Today also marks the day that we’re driving back from Disney World by way of Charleston, because if you have young children, you’re not making a 15 hour drive in a single day. Historic Charleston is beautiful, and a special thanks to Kevin Jones (@vcsjones) on twitter for the Charleston recommendations.

July

Back in July, CoPilot was released, and you all were quite interested in the fact that you could trick CoPilot into coughing up someone’s SendGrid API keys, which is both impressive and a “How the hell did they not have a private beta that consisted of people we would normally put on the naughty list” moment.

๐Ÿซ Oskar Duycz has you covered with an updated readme and tutorial on event sourcing in .NET (Core). If you think of event sourcing like that annoying kid in your 6th grade class that reminds the teacher when she forgot to assign homework and when the teacher forgot to give a scheduled quiz, it makes a lot more sense.

โณ Rick Strahl has a lengthy blog post about converting the Desktop application Markdown Monster to use C#’s Async/Await. This is as an indepth dive into real-world async that you’ll ever see and worth your time.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ You know you can run multiple projects when you hit ‘F5’ in Visual Studio, right? I love the gif method of teaching; and because of that I’ll forgive the horrible experience we’ve taught ourselves is adequate with debugging multiple projects via F5.

๐Ÿช Microsoft publishes its own applications through the Microsoft Store, making it about 95% of the Microsoft Store.

๐Ÿ‘จ๐Ÿผโ€๐Ÿคโ€๐Ÿ‘จ๐ŸผCecil Philips and David Pine talk positional pattern matching in C# and how it works and true to the internet there’s at least two commenters who thinks they know better than the language creators.

๐Ÿ” Christo Matskas has a blog post out on how to Secure Open API (Swagger) calls with Azure Active Directory.

๐Ÿ•ต๏ธโ€โ™€๏ธ Using Secrets in .NET Core Console Applications Console applications remain one of the least documented parts of the .NET Core experience (compared to ASP.NET), and I’m always happy to share content on that topic. Why are console applications important? If you’re in an event-driven microservices world in .NET, using a Console application to connect to your message queue and receive messages and put them into a database of some sort is an integral part of the work; as are services that respond to events but don’t necessarily expose HTTP APIs.

August

๐Ÿฆ One thing I missed last week is that Random.Shared is available in .NET 6. Yes, a threadsafe Random API, as opposed to a threadsafe random API.

โšก There’s word that LINQ statements will be twice as fast in .NET 6 than they are in .NET 5. David focuses on performance so I have no reason to doubt his word, and apparently the benchmarks will be coming soon.

๐Ÿ”ฎ Magick.NET 8.2.0 has been released which is an image manipulation library for .NET.

๐Ÿฅ‰ In a screenshot that is strangely alluring Maarten shows off what VB looks like in the brave new world of .NET 6, with a pattern based XML Literal. If I were to rate VB on this screenshot alone, I’d give it a 12/10. Having worked in VB, I give it a 4/10. It’s slightly ahead of the readability of JavaScript 5, and slightly behind Python. These ratings are final.

๐Ÿคทโ€โ™‚๏ธ The real names of features in Visual Studio. It’s a bit inside baseball, but still a wonderful walkthrough.

September

โฌ‡Download New Azure Architecture Icons now! These icons look rather spiffy but you know some executive at Microsoft wanted the name ‘Azure’ somewhere on these icons.

๐ŸงDavid Fowler tweets a thread explaining the coolness behind Minimal APIs, and I’ve said it before and I’ll say it again. This is why I’m on twitter. This sort of thing would have been too minor to make a whole blog post out of, but is perfect for twitter.

๐Ÿ‘€Minimal APIs at a glance in .NET 6 Scott Hanselman digs into what minimal APIs are and how they work. ‘Minimally’ is apparently the right answer.

5๏ธโƒฃNick Chapsas: 5 open source .NET projects that deserve more attention. The five? NBomber, CSharpRepl, Verify, FluentDocker, Cupboard. If you want to know what these do, watch the video.

๐Ÿ“ฆ.NET 6 will have a package validation tool to make the nuget experience even more decadant.

October

๐Ÿ‘‹ Chris Dixon had gotten the highest of highs before writing this screed on twitter that charitably would be panned as “VC with vested interest in getting people to buy into Web3 says everyone should buy into Web3.” I’m not sure what’s worse: That “web3” is what Web 1.0 was like before Chris and other VCs cashed out on the likes of Facebook, Instagram, WhatsApp, and Twitter, or that if we buy into his vision, in a new world of ‘blockchain’ and ‘NFTs’, we could somehow get back to that web 1.0.

Maybe we could just… I don’t know… go back to Web 1.0? It’s not like Web2.0 hid web1.0 in a basement and tied them up and stuffed a gag in their mouth. We don’t have to ‘find’ web1.0 on a milk carton somewhere. It still… it just works. Right now, today.

If you think I’m full of it and you’ve bought into beanie babies NFTs as the way forward, may I be the first to offer you an NFT of this week’s newsletter for the low, low price of $100,000 โ‚ฟ2.0372698? I’m not saying it’s going to go up in value, but I’m not saying it won’t either.

๐Ÿ˜ก The Executive Director of the .NET Foundation found herself in hot water for merging her own PR in on a .NET Foundation member project and my take on this is a bit more nuanced than you might think. You joined the .NET Foundation, and gave the .NET Foundation contributor rights, or even the copyright to your project. What did you think was going to happen? That they wouldn’t use those rights? If you give someone your toy, you can’t get mad that they play with your toy. You gave it to them.

I’ve been following topics like this for a while, and have asked for an update on the related topic.

โฃ Did you know there was an alternative to Windows Explorer? I did not. Well version 2 of this alternative is out.

๐Ÿ‘€ Webview UI Toolkit for Visual Studio Code This finally puts the ‘visual’ in Visual Studio Code.

Also in October, the “Hot Reload” ‘incident’ happened. I can’t really parse out the links you liked from this without losing the whole context, so in case you missed it the first time:

On October 19th, the PM For “Hot Reload” (which honestly sounds like an urban dictionary term of art), showed off Hot Reload to internal stakeholders. On October 20th, Hot Reload was removed from the .NET 6 RC2 CLI in favor of a Visual Studio only release. On October 22nd, the news broke in the Register and the Verge, with the Verge stating the reasoning was a “business-led decision” by the CVP of Developer Division (DevDiv), Julia Luison. On October 23rd, Microsoft put it back in saying “we inadvertently ended up deleting the source code instead of just not invoking that code path”, and it was also reported by The Verge.

Since then, an internal communication has leaked with the DevDiv rank-and-file up in arms about the decision.

There is ample evidence to draw conclusions that this was not inadvertant, and that Scott Hunter’s blog post is to maintain political cover for the CVP that made the decision:

  1. If this were ‘inadvertant’, then there would have been no reason to close and lock the PR to prevent discussion.
  2. If this were ‘inadvertant’, then the myriad of developers that make up .NET’s online twitter presence wouldn’t have been radio silent on the subject for days.
  3. If this were ‘inadvertant’, then someone from the .NET team would have spoken up to explain what the reasoning was behind removing a working feature from a Release Candidate

I could go on. But unfortunately if I point to the back-channel ways the .NET Team was trying to show that it wasn’t their call, I would get them in trouble with their corporate overlords.

The .NET Community was largely pissed off (a technical term) at the removal of this working feature from the .NET CLI and making it ‘Visual Studio only’, and I can’t say I blame them.

The problem here is the same problem the .NET Community has with the .NET foundation’s governance: Microsoft.

One the one hand, Microsoft would like to be known as a steward of open source; going so far as to showing “We โ™ฅ Open Source”, but on the other, each time it comes down to making a hard decision that would benefit the open source community but potentially harm Microsoft’s business interests, it chooses its business interests, every time.

It happened with the Debugger License Change.

It happened with MonoDevelop.

It happened with Hot Reload.

This is a pattern of corporate interests at Microsoft wanting to lock down development ecosystems to enhance their product’s bottom line while hurting adoption that ends up hurting Azure’s bottom line. It’s like the 90s called and said “Hey, get in, we’re going shopping for Fanny packs, Lowrise Jeans, and Vendor lock-in”.

And that’s the rub. Visual Studio is great — I personally love it, but I also love not having to boot into Windows to write .NET. .NET Core saved me from leaving .NET. Seriously. I like a console-first workflow, and the developer affordances in a *nix based environment outweigh any improvements Microsoft has made, and I go so far as to say that a console-first workflow respects how I work.

October was a wild month.

๐Ÿงต A thread of System.Text.Json features in .NET 6. Which is more memorable: “System.Text.Json” or “Newtonsoft”? Hit reply and let me know.

๐Ÿค” Covariance & Contravariance in .NET C#. Co[|ntra]variance: the ultimate compiler “well, actually”.

November

Microsoft employees are upset about all the “.NET Drama”. As a personal reflection: Anytime someone uses the word ‘drama’ to describe another person’s lived experience, it’s always in a derogatory and dismissive fashion.

๐Ÿ˜’Microsoft MVP told to give up award because they work for Microsoft’s cloud competition. This did not use to be true, but now it is. I guess “Valuable” here relates to “Valuable to Microsoft” not “Valuable to the community”.

๐Ÿ’ผThe Case for C# and .NET Charles Chen compares JavaScript and .NET 6, and makes a case for why you should choose C#.

๐Ÿ™…โ€โ™‚๏ธRemove MS Contributors from .NET Thanks Website. No. Microsoft contributors are people too.

๐Ÿดopen-dot.net, a fork of .NET, has been created by Geoff Huntley This is one of those meme moments where someone following the directions on the tin and yet it’s as if they’ve adopted tinfoil as their chief clothing accessory. .NET is open source, open source projects can and should be forked when you want to change governance models, ergo .NET can be forked. My unease here extends across many levels, not the least of which is financial: Microsoft has a budget of probably around $25 million for the .NET team (including overhead that’s probably low, don’t @ me) per year and .NET is… well.. free. So we know off the bat that “new” development won’t happen in this fork; likely only tooling affordances and changes, but second to that is the extreme culture shock to the .NET community about anything open source. Oh sure, we like open source, as long as we don’t have to pay for it, or hear from it, or it does exactly what we want, and Microsoft hasn’t yet tried to compete it out of existence. So this something to watch, certainly, but I’m not so sure the cart and horse are in the right orientation yet.

December

๐ŸšขAnti-Patterns when Building Container Images There are a lot of little paper-cuts when using container images (docker images, the Xerox of Containers), especially if you want to host your database in a container image. So, read this and file it away for when you invariably run into a problem.

๐ŸงชAlba 6.0 is friendly with .NET 6, Minimal API, and WebApplicationFactory fun fact, I spent a few months reproducing Alba because I didn’t know it existed. If you want an easy way to test your HTTP APIs, use Alba.

And that’s part 2 of the greatest clicks in Last Week in .NET for 2021. Next week is Christmas, and the following week is New Years, so it’s unlikely there’ll be very much in the next few newsletters. If I don’t see you before then, stay safe, healthy, and I’ll see you in 2022.

[Last Week in .NET #72] – Holiday Road

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!

January

๐Ÿ“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”.

February

๐Ÿ‘ 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.

March

๐Ÿ†˜ [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.

April

๐Ÿ’ฃ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.

May

๐ŸŽน 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.

June

๐Ÿ”ง 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.

[Last Week in .NET #71] – We’re all fine here now, thank you. How are you?

Github’s COO exits a month after their CEO left, Github gives a ‘status update’ to their downtime over the past month, and a battle over Microsoft’s corporate culture is being waged internally.

๐ŸšขAnti-Patterns when Building Container Images There are a lot of little paper-cuts when using container images (docker images, the Xerox of Containers), especially if you want to host your database in a container image. So, read this and file it away for when you invariably run into a problem.

โŒ๐Ÿ—Uno aka “MAUI that’s available right now” 4.0 has been released If you want cross-platform .NET UIs, you want to use Uno. They’re not a sponsor, but their business is cross-platform UIs, and Microsoft is still stuck in the 90s image of Microsoft being Windows only, more on that in a minute.

๐Ÿฐ2๏ธโƒฃCake 2.0.0 has been released Last week they released Cake 2.0.0rc0002, and the number of leading zeros on the RC had me a bit worried, but not to fear, they’ve just said f*ck it and released Cake 2.0. There are a ton of breaking changes (not what you want to hear) and feature improvements, particularly around supporting .NET 6. No one really wants to upgrade their build tooling, but they do want their build tooling to support their framework up-to-date.

๐Ÿ“ขฮฒRider 2021.3 goes Beta The Debug UI gets a new ‘fit (that’s what the kids say, right?), and it supports more C# 10 features, like file-scoped namespaces (Which felt like it should have been in C# 1.0), and global usings (which I maintain shouldn’t exist) and string handling changes as well as lambda changes for C# 10.

๐Ÿ™ˆGithub Availability Report: November 2021 You know Github has fully integrated into Microsoft when their blog post titles about bad news are a milquetoast as possible. In this case, Github was down on November 27th, for almost 3 hours. I can hear you saying this now, “That’s unfair, George”, but if we go back to Scott Sander’s release in 2016 from a similar issue (Github was down for 2 hours and 6 minutes that time), Scott starts out by saying:

Last week GitHub was unavailable for two hours and six minutes. We understand how much you rely on GitHub and consider the availability of our service one of the core features we offer. Over the last eight years we have made considerable progress towards ensuring that you can depend on GitHub to be there for you and for developers worldwide, but a week ago we failed to maintain the level of uptime you rightfully expect. We are deeply sorry for this, and would like to share with you the events that took place and the steps weโ€™re taking to ensure youโ€™re able to access GitHub.

Contrast this with the first paragraph of the November 27th 2021 outage:

In November, we experienced one incident resulting in significant impact and degraded state of availability for core GitHub services, including GitHub Actions, API Requests, Codespaces, Git Operations, Issues, GitHub Packages, GitHub Pages, Pull Requests, and Webhooks.

No apology, no personal touch. Not even active voice — did Scott change his entire writing style in 4 years? It’s possible, but the active to passive voice switch and the lack of all humanity leads me to believe the blog post was wordsmithed by Microsoft Legal or Marketing… Or both.

๐Ÿช’Introducing the new Razor editor in Visual Studio 2022 This is a welcome addition. Editing Razor files in Visual Studio has always felt like a high school senior submitting their final a night before it’s due with a ‘f*ck it I’m graduating anyway’ attiude. I’m hoping this continues. Razor is nice enough that it shouldn’t have any rough edges.

๐Ÿ’ธMicrosoft has open sourced their “FHIR” implementation with FHIR Server for Azure. FHIR stands for Fast Healthcare Interoperability Resources, and this is a wonderful thing to open source. The fact that this code is designed for Azure and is not portable between cloud vendors (yes, Between) means it’s the equivalent of getting an in-store credit; but I’ll take it. I wouldn’t be surprised if an AWS implementation pops up forked from this code.

In what has become the Song of my People, Mark Rendle says “Don’t upgrade to Windows 11. Wait for SP2”. I don’t have to hear any more. This has been the case since Windows 3; with a minor exception of Windows 7. Always wait for the first major ‘fix’.

๐Ÿ—ฃGithub Copilot has an experimental feature that explains code to you And this is wild, and the usecase is for those of us that write write-only code. You know, people that use Perl. I bet it doesn’t support Perl, though.

๐ŸฆกMicrosoft Edge’s marketing team is its own worst enemy This is a common thing that happens at Microsoft, so much so that I’m convinced their org chart isn’t accurate. It doesn’t show the giant gun a business unit points at itself. Edge is not a half-bad browser. It’s probably the best browser to ever come out of Microsoft. The problem is they want you to use it, and so they resort to dirty tricks to get you to use it. Someone’s bonus is tied to the usage rate for Edge ticking upward, and it shows.

“This is from months ago, George, how the heck are you bringing this up now?” Well the latest trick is for the Chromium-based Edge browser to call Chrome “so 2008”.

๐Ÿ›คMicrosoft backtracks on windows 11’s controversial default browser changes. They are back-pedaling from the “Let’s make it hard to change the default browser” strategy towards getting their yearly bonuses, however.

๐ŸงชAlba 6.0 is friendly with .NET 6, Minimal API, and WebApplicationFactory fun fact, I spent a few months reproducing Alba because I didn’t know it existed. If you want an easy way to test your HTTP APIs, use Alba.

โžฟAzure Friday: The year in retrospect These are Rob’s favorite videos from this year in Azure Friday, and since it’s getting close to the holidays and you want something to listen to while you’re pretending to work, this is as good as anything you’ll see in the Azure space.

๐Ÿ™…โ€โ™‚๏ธ๐Ÿง™โ€โ™‚๏ธStop Telling me Trust Fund Kids are Finanical Wizards BillG makes an appearance, but it’s an Elizabeth Holmes and Elon Musk hit piece (There are no self-made billionaires).

๐Ÿ™ƒMicrosoft announces an employee only survey on… Twitter Not Yammer, Teams, Sharepoint, Github or Skype for Business, but… Twitter. Even Microsoft doesn’t want to use their own products to collaborate.

๐Ÿš’Create a chaos experiment that uses a Chaos Mesh fault to kill AKS pods with the Azure portal Chaos engineering, already built into Azure, is now available on purpose.

๐Ÿ‘‹Erica Brescia steps down as COO of Github about a month after Nat Friedman left as CEO. This is not great, as planned departures are typically planned months in advance and multiple C-level executives are planned to depart a lot further apart than one month. This typically points to some sort of internal political struggle. Since Github is now underneath the same President that instigated the Hot Reload debacle, is is probable that the old Microsoft is battling the new Microsoft, and the old Microsoft is winning. Github reflected a culture shift; and as they become more integrated into Microsoft, it’s natural for the old guard to want to sink their synergy-laden teeth into the developer network on Github.

With this, Hot Reload, the Core Debugger License issue, and the Edge back and forth, I have no doubt there is an internal struggle being waged inside of Microsoft between the old guard, where everything had to synergistically work on Windows and for Microsoft’s commercial advantage, and the new guard, that understands the best way to get people to buy your products are not through synergy, but through making good products and caring about *their* desires as customers, and not trying to juice the numbers for your own products. The world has changed around Microsoft, and not everyone inside has gotten that memo.

๐Ÿ‘Build Web applications with Blazor a free, gamified experience from Microsoft for learning Blazor.

๐ŸŽจHow to take better screenshots of Visual STudio on Windows 11 using Paint.NET This is good content for those of you that put screenshots of code into your presentation (which is probably better than the alternative).

๐Ÿ’กโš–Jetbrains Fleet is in preview and some people have gotten to try it out. It’s the Jetbrains equivalent to Visual Studio Code, and there’s a video about it. Microsoft folks got a little snippy about the fact that it’s closed source, which is not punching down at all. At all. Totally appropriate for employees of a company that made $143 Billion last year to throw shade at employees of a $398 million company. Totally appropriate.

And that’s it for what happened last week in .NET. I am out next week on vacation, and so next week you’ll be getting the greatest hits — yes, the links you were interested in the most in 2021. Thank you, and see you next week.

[Last Week in .NET #70] – It’s *only* Five Bad Things

.NET Has been forked, .NET Framework 1.1 does run on Windows 11, and Microsoft’s Board of Directors supports Bad Things, apparently.

๐Ÿดopen-dot.net, a fork of .NET, has been created by Geoff Huntley This is one of those meme moments where someone following the directions on the tin and yet it’s as if they’ve adopted tinfoil as their chief clothing accessory. .NET is open source, open source projects can and should be forked when you want to change governance models, ergo .NET can be forked. My unease here extends across many levels, not the least of which is financial: Microsoft has a budget of probably around $25 million for the .NET team (including overhead that’s probably low, don’t @ me) per year and .NET is… well.. free. So we know off the bat that “new” development won’t happen in this fork; likely only tooling affordances and changes, but second to that is the extreme culture shock to the .NET community about anything open source. Oh sure, we like open source, as long as we don’t have to pay for it, or hear from it, or it does exactly what we want, and Microsoft hasn’t yet tried to compete it out of existence. So this something to watch, certainly, but I’m not so sure the cart and horse are in the right orientation yet.

๐Ÿ›ฃ19 lines of code for a ‘functioning’ ASP.NET Web App with OIDC Auth and GraphAPI support in .NET 6 Cool, no doubt; but we still haven’t learned that fundamental problem with trying to make everything concise: The road from ‘this is a beginner app’ to “now let this scale to an entire enginerring team” is bumpy as hell and no one talks about the problems this format will cause those teams. Do we have too much ceremony? Yes. Does eschewing all structure to somehow win the hearts and minds of the node.js crowd make sense? No.

๐ŸซReal World .NET 4.8 migration to .NET 6 performance regarding Garbage collection As always your mileage will vary because no two apps are designed the same way. It won’t vary enough that I’d say “don’t pursue .NET 6”, but it will vary enough that you may not see the whopping 3x reduction in pause times.

๐Ÿ”ฅBecause some people like to watch the world burn, @vcsjones got .NET Framework 1.1 working in Windows 11 It was a holiday week afterall, and apparently this is ‘fun’.

๐Ÿ“The Changelog gives a nice visual as to what ‘iteration’ and ‘agile’ and ‘MVP means. It’s a neat 2 minute video; and although not explicitly stated, the table gap moving is a nice metaphor for the goal-post moving that managers inevitably do in our own projects.

๐Ÿ•ถ.NET Virtual Conference 2022 is looking for speakers This is your chance to give that talk you’ve always wanted to give on why we’re bags of meat water rotating around a nuclear explosion towards our eventual doom. Or maybe on .NET?

๐Ÿ˜ฒMicrosoft supports pay gaps, hiding reports of sexual harassment, selling facial recognition technology to government entities, racial discrimination, and is against transparancy for their lobbying activities. The board recommends voting against 5 resolutions that at least on their face seem like good resolutions to support. If you’ve heard it from me once, you’ve heard it a thousand times, but I’ll make this number 1001: Capitalist institutions are amoral. If it increases their bottom line, they’re for it. It’s how they’re structured. They may be bad people but they’re creating shareholder value. And in a capitalist society, that is the goal. It’s really almost not fair to pick on Microsoft for this, except they’re a 2.5 Trillion dollar company and they are filled with leaders who by all rights should be better moral agents than they are.

๐Ÿ›๐Ÿ’ฐThe .NET Bug Bounty Program now covers Preview Features which apparently took some doing. It never made sense to me not to reward someone for finding a bug before you release a “GA” version. You would rather have that Zero-day be an actual zero-day? OK.

๐Ÿ™Š There’s a whole lot of words I don’t understand here but Expanding Azure Confidential Computing with new AMD-based confidential VMs Shhhhh. I guess?

๐Ÿ—Have you heard of CliWrap? It’s a library allows you to safely execute a .NET console program with redirected I/O and handle its signals This has always been a frustrating part of building Microservices in .NET; but now I’m going to slap CliWrap on and give it a try.

๐ŸฅฉWhat’s new in C# 10: Easier Lambda Expressions Action and Func always felt weird compared to JavaScript’s approach to delegates, and it’s nice to see this improvement.

โ˜In that vein, have some lambda optimization tips (kinda). This is the intersection of performance and lambda geekery. Enjoy.

๐ŸฐBecause they don’t eat Pumpkin Pie, the Cake folks released Version 2.0.0-rc0002 of Cake. I’m a little frightened there are that many leading zeros in rc2.

โŒšAppropos of the meat bag filled with water rotating around a nuclear explosion, Jason Resnick posted a tweet with the quote, “Time isnt’ change, you aren’t going to find it in the couch. You have to prioritize it.”

And on that note, that’s it for what happened Last Week in .NET. Thank you and I’ll see you again, next week.

[Last Week in .NET #69] – Our Commitment To .NET News

If there was an award for ‘blandest headline describing really bad things’, Microsoft’s comms team would have won it. Let’s see which story I’m talking about, shall we?

๐Ÿšซ๐Ÿ›  In EF Core 6.0, you can configure a join entity in a many-to-many relationship without any additional conifguration It wouldn’t be .NET without a billion documented ways to do something.

๐ŸŸกHighlights from Git 2.34. Do you work with large git repos?, or repositories with lots of blobs? In the past I’ve always set a git-clone depth=1 to checkout so it wouldn’t try to pull the whole repository over my 4G phone. For a second, I thought the new ‘sparse index’ was about that. But it turns out, it’s not. To put it something closer to what I would use it for, it’s a way to split out parts of a large repository to the parts you care about vs. the parts you don’t really care about. You know, like a mono-repo that houses microservices. You may not really ever deal with a particular set of services, and thus don’t really want to keep track of their history/updates/etc. This gives you a way to set a sparse-index around the boundaries you care about.

The other ‘big thing’ we’ve talked about on this newsletter previously is the new merge strategy, ort. It’s ostensibly recursive‘s twin.. Get it? One day someone will stand in judgment of the names developers give things and that won’t be a pretty day. But anyway, ort is recursive, but faster and better and without the problems recursive had.

๐Ÿ’‰New dependency injection features in .NET 6 AsyncDisposable makes its debut with a new AsyncServiceScope that makes it possible without breaking existing DI container providers. I say this just about every time something changes, but there’s a long tail of outdated information out there on the ‘net, especially in the different versions of .NET Core, and this adds to it. We still haven’t figured out how to deprecate old information, and that doesn’t help new people learn .NET.

๐Ÿ’1.0 stable release of Windows App SDK is now LIVE! The Windows UI story has always been confusing, but apparently this is the App SDK to rule them all, (except where it isn’t).

1๏ธโƒฃUno Platform 3.11: Support for .NET 6 RTM, VS 2022 17.1 Preview 1. Uno is what MAUI wants to be. If and When MAUI ships, that is.

๐Ÿ“‰Monitoring a .NET application using OpenTelemetry If you write distributed applications in .NET, you’re going to want to implement OpenTelmetry; after all you don’t believe in “Not Invented here”. Right? RIGHT?

๐ŸพAnnouncing TypeScript 4.5 This brings with it a lot of goodies, and TypeScript is what C# would have been if they had said “Fuck it” to backwards compatibility.

๐ŸพAnnouncing dotnet monitor in .NET 6 .NET Monitor is a tool that exposes a .NET HTTP API to access all those diagnostics from your application no matter if it’s running locally or in a Kubernetes cluster. This has a ‘this is neat’ and also a ‘Oh god what hell have we unleashed on future generations by making Distributed Applications The Way’?

๐ŸŽThere’s a Dotnet-Boxed template for Orleans I like the name ‘.NET Boxed’ and it makes sense: It provides templates that are opinionated and are optimized to get you up and running as quickly as possible. More of this, please.

๐Ÿ—ฃIf you want WinUI 3 to be Open Source, let the team know I’m torn here. On the one hand, it is ostensibly easier to adopt something if it’s OSS. On the other hand, Microsoft’s recent track record with Open source is more of the “I want a cookie” model, and I’m not sure I can stomach more of that.

๐ŸšขCascade of doom: JIT, and how a Postgres update led to 70% failure on a critical national service This is an in-depth read on a frightening technical scenario, and yes this pushes me closer to the “I’ll just find a deserted island and live there, k thanks” mentality.

๐Ÿ™…โ€โ™‚๏ธRemove MS Contributors from .NET Thanks Website. No. Microsoft contributors are people too.

๐Ÿ™‰๐Ÿ™ˆ๐Ÿ™ŠCorey Quinn reminds us that the Azure security team (there is one, right?) still hasn’t explained how the ChaosDB vulnerability happened. I recommend reading this link in the early morning if you want to sleep at night.

๐Ÿคฆโ€โ™‚๏ธI give TypeScript a lot of crap for breaking changes, but every version adding a new way to do something is not fun. Like adding another way to add a DBContext.

๐Ÿคทโ€โ™€๏ธGithub’s commitment to npm ecosystem security Yes these bullshit milquetoast headlines are normal at Microsoft, where the chief concern with optics is to not have a headline that sounds bad. It doesn’t matter if the news is bad, as long as the Headline sounds neutral. In this case, Microsoft has no fricking clue whether or not anyone ever exploited and npm vulnerability that would allow an attacker to publish new versions of any npm package using an account without proper authorization. I’ve seen these sort of headlines way too often at Micrsosft for it to be a one-off. They must have a corporate comms team that neuters any attempt to convey actual information in the headline. This does not improve trust, Microsoft.

๐ŸซWe need to have a talk about making life easier for newcomers to the .NET ecosystem Yes, Yes we do.

Why is it so hard to write C# in VS Code compared to Visual Studio Because of their org chart, of course.

And that’s it for what happened Last Week in .NET. It’s Thanksgiving week this week, so I expect next week’s issue will be rather light. I’ll probably be rather heavy from Thanksgiving, but that’s how it goes. I’m thankful for you. Yes, you.

[Last Week in .NET #68] – .NET 6 Passionate Programmers

.NET 6 was released last week; .NET 5 has 6 more months of support, and Chrome decides “view source” is bad.

๐Ÿš„Announcing .NET 6 — The Fastest .NET yet new features include Minimap APIs, Hot Reload for Visual Studio and the .NET CLI, C# 10, better performance, a “Unified platform” for development, and lots, lots more.

๐ŸงฅAnnouncing ASP.NET Core in .NET 6 Hot Reload makes an appearance, of course, as done Minimal APIs, and lots of improvements for Blazor, and as I said at the top, lots more.

๐Ÿ’ผThe Case for C# and .NET Charles Chen compares JavaScript and .NET 6, and makes a case for why you should choose C#.

๐ŸŽ‚Cake v2.0.0 RC 1 released Lots of bug fixes in this one, and the cake is not a lie.

๐Ÿƒโ€โ™€๏ธ.NET Everywhere – Windows, Linux, and Beyond Scott Hanselman demos .NET across platforms, as the title indicates. It’s super weird for Microsoft to have a “Windows Visual Studio only” mentality on one hand and a “but you can run .NET anywhere” mentality on the other.

๐Ÿšซ๐Ÿ› Chrome allows admins to disable “View Source” and this has started a bit of a brouhaha. On one hand, people on the internet are mad that this feature exists, on the other hand people on the internet say it’s no big deal. It’s both. You don’t improve internet literacy by giving in to companies that put the answers to their exams in the HTML, and you certainly don’t lend credence to the idea that View Source is some sort of crime.

๐ŸŽธEF Core 6.0 hops on the minimal API bandwagon. Don’t worry, the kitchen sink is still there.

๐Ÿ•ธOrleans supports .NET 6 with release 3.5.1 Orleases is Microsoft’s approach to ‘distributed .NET’ on public cloud servers. It’s fascinating (and used by Microsoft) and it now supports .NET 6. No word yet on who outside of Microsoft needs this, however.

โŒšEF Core 6.0 has been released. It includes temporal tables, pre-convention configured models, and more.

๐ŸงฏThe Hot Reload docs are live. Microsoft is a bit late to this party, so maybe that’s why they’re all in on the docs? In other stacks, it’s just the way.

๐Ÿ”ฎPowershell 7.2 has been released and it includes bug fixes plus predictive intellisense (if you use PSReadLine), which seems pretty neat.

๐ŸŽญNuget 6.0 has been released Includes Sourcemapping, Package Vulnarabilities…. wait. Package Vulnerabilities? Oh, it can show you package vulnarabilies in Visual Studio. NuGet is a major part of .NET and is still pretty tightly coupled to Visual Studio. Until Microsoft fixes that issue, I don’t see the claims of ‘.NET everywhere’ coming to fruition. If you want a first-class experience with Nuget, you’re still limited to Visual Studio.

๐Ÿ™ŠThe EF Core team fixed 545 issues for EF Core 6.0. The EF Core team is 5 engineers, 1 manager, and a PM. Let’s say they started on work for .NET 6 / EF Core 6.0 On January 15th, 2021 (.NET 5 was released in november of last year; but you can imagine they had to work on patches for that, and hopefully took some time off for the holidays). .NET 6 was released on November 8th, 2021. That means there are 203 work days (excluding weekends and holidays). With 545 issues fixed, and 5 working members of the team, that’s an issue resolved every 2 days per person. That is a frantic pace; and given what we saw for .NET 5; that means the EF Core team has not had a break in over 2 years from a frantic pace. Their manager explains this as “passion”:

Or we’re just that good. ๐Ÿคฃ๐Ÿ˜‰ (Joke)

Five engineers, a manager, and a PM. And we mostly just chug along. We don’t do heroics. What fits, fits. What doesn’t gets punted. That being said, there’s a lot of passion on the team, and it’s more than just a job for some of us at least. (emphasis mine)

I have to say I’m a bit concerned about the work/life balance for the EF team, and it raises a whole lot of red flags to see this sort of pace for the last 18 months.

๐ŸฆJeremy Sinclair livetweets the .NET 6 release .NET 6. Now .NET 6 is the LTS version of .NET that finally sheds the Framework mantle (.NET 5 wasn’t LTS), and so you should see .NET 6 as the first major .NET Version that legacy companies migrate to.

โ‰Steve shows off implicit global usings One of the major problems I’ve had with code samples on the internet is the namespaces not being included in the code sample. This makes that worse, and easier to happen. I like the idea, but the implementation doesn’t help our current set of problems with getting code off the internet.

๐ŸšขNativeAOT coming in .NET 7 This will allow for a statically linked ‘single file’ deployment to all platforms, a la Go.

๐ŸงฅFull-stack .NET 6 Apps with Blazor WebAssembly and Azure Static Web Apps Since Blazor can support WebAssembly, and Static web apps are just that; you can now deploy Blazor apps to Azure Static Web Apps. I’m interested to see what sort of frameworks around Blazor pop up.

๐Ÿ’ธCSharpFritz (Jeff Fritz) plays Pitchman for Mobile.NET’s product that convert’s Webforms to “Native Web App”. This is interesting inasfar as Jeff works for Microsoft on the .NET team, and Mobilize.NET (as far as I know) is a third-party vendor — why is Microsoft pitching other companies’ products?

๐Ÿ“นVisual Studio 2022 has been released and Scott Hanselmen (and friends) take you through what’s new. There’s also a blog post if you aren’t the ‘watching videos on the internet’ type.

โณYou have 6 months before .NET 5 is End of Life and you can read Microsoft’s support policy here.

It was a busy week last week with the release of .NET 6; and hopefully the folks at Microsoft are going to take a bit of extra time off for Thanksgiving. See you all next week.