It's not a bug, just a feature you didn't expect

There's a b^H^H I mean feature with string.IndexOf in .NET 5, and there exists at least one person out there combining Blazor with ABAC. In a way, we're all stronger through this adversity. I think.

Mostly community goodies this week. No releases, but that's not surprising given the impending release on November 10th. Here's what I found last week in .NET:

📢 Github now supports code navigation for C# repositories. If you've ever used OpenGrok, you may have wonder why services like Github never provided navigation between references. Well now they do. This is a phenomenol offering from Github; having the ability to click on a reference for an object and go to that class definition is... long overdue.

📰 Mads Torgerson, designer on the C# team, talks about where C# is going I love C#, and I love that it's touted as one of the most popular programming languages out there. But, let's be real here: It's popular days are still to come. For a long time it was "Windows only" and firmly sucking on the Microsoft Teat. It's still doing that, but now with a veneer of open source, and actual cross-platform compatibility. Let's not kid ourselves: C# was good for businesses, but now it's good for everyone. I just hope it isn't too late.

📝 Did you know you could add AssemblyInfo attributes dynamically using the AssemblyMetadataAttribute (whew!) ... attribute? This is from March 2018 so I'm sure the API has changed a little bit, but a tweet from James Newton-King alerted me to this feature in .NET Core. If you need to modify your AssemblyInfo.cs at build time, this provides a great way of doing that. At least until the Zoomers come and decide that version numbers are passe and we should just deal with CalVer instead. All hail the Zoomers. Also I'm watching way too much TikTok.

🐦 Speaking of TikTok, Microsoft is a little depressed that their acquisition of TikTok didn't pan out so they've been releasing "One Dev Question, One day" videos, and this week's ask "What is C#"? My go to answer of "A really fucking awesome programming language that is tainted by its association with Microsoft" was rejected, quite unfairly I might add.

📢 Microsoft Edge now supports Linux. In a "No really, we've changed" moment, Microsoft now supports Linux on Microsoft Edge. I don't have a snarky thing to say about this, except perhaps to question if their marketing department understands who their customer actually is. Hint: It's not people that use Linux on their desktop. I'd also like to add that the money they put towards the development of Edge on Linux, they could have very well paid off an Open Source author or two. You know, like the guy from Appget?

⛳ In what we will all undoubtedly regret in 5 years, there's a new course out on how to do full stack development with Blazor and WebAssembly. This is of course a terrible idea, but my support goes out to the gentlemen who are profiting off the popularity of Blazor. I don't have a dog in this metaphorical fight, but anyone who has worked with ASP.NET webforms knows how this works out: JavaScript does it easier and better, and you end up maintaining something the community has shifted away from. has released a survey asking the community for its thoughts on Nuget. This survey closes soon, so take it now (I have no idea when it closes, but given that this is a weekly newsletter, we can safely assume it's not long for this world). Microsoft has long ignored Nuget, so please take the survey so its issuers can keep their jobs.

🤚 There's a github issue open that addresses the "MyMeth" problem in .NET Docs In the .NET Docs, (bless their hearts) they had documentation that referred to a "method", and they called it "MyMeth" instead of "MyMethod". It was of course noted and brought up, and sadly for the Breaking Bad fans among us, is going to be fixed.

📝 Apparently OData is still alive In what I will consider a "Holy Shit" moment, apparently OData 8.0.0 preview has been released. If you haven't already jumped ship to GraphQL and still want a hella-insecure way to query your data, might I recommend OData?

📝 Choose a .NET Game Engine Microsoft is back on a "Tout C# for Game Development" kick and I am here for it. No, I do not forgive them for hurting XNA, but I'm going to give Microsoft their due Kudos: C# is viable to use for game programming, and they're doing their best to make sure everyone knows it. Special thanks to Abdullah Hamed for the tweet that made me aware of this series.

🌎 The .NET team has released a site that shows their roadmap, pulled directly from their Github issues This is a good look into the Microsoft machine surrounding .NET, and well worth your time if you're interested in the future of .NET.

📝 Attribute-Based Access Control With Blazor WebAssembly and IdentityServer 4 In what I can only characterize as a bad idea icecream topped with terrible idea sprinkles, there's a series out on Codemaze on how to develop ABAC with Blazor WebAssembly. Personally, I'd be delighted to know if this fits a usecase you have and whether you're going to implement it. Also, please send me a 'before' email so after your project's launched we can commiserate over the idea and lost youth.

📝 Rick Strahl takes you into the process of creating .NET Custom project types with the .NET CLI Project Templates (whew!) Long story short, if you create microservices or otherwise want to enforce defaults and standards when creating a new project, this blog post is for you.

🐛 Jimmy Bogard found a bug in the .NET Core runtime, where string indexOf comparison fails or breaks depending on which runtime you use. As it turns out, Microsoft switched to ICU instead of using NLS (what they were using previously), and this change has the side-effect of breaking string comparison code that doesn't specify a culture or StringComparison.Ordinal. Microsoft views this as the cost of doing business when they switched to ICU instead of NLS, which makes it not a bug, just a feature we didn't connect the dots on.

📝 Jon Skeet takes us through the .NET Functions Framework If you're trying to develop .NET applications that work on 'serverless' architecture, this framework and blog post are for you. It's not for everyone and all usecases, but for some usecases, serverless functions are just what we need.

And that's what happened Last Week in .NET. I'm George Stocker, and I help .NET teams build better systems faster, without the crankiness that inevitably comes from just slapping code together. To learn more, visit []]( and I'll see you next week.

© 2020 Double Your Productivity