Last Week in .NET, December 26th 2020 – Fun-sized Holiday Edition

Here’s just a few things I bookmarked last week in .NET.  No episode this week, just these fun-sized things I found:

🐦A twitter thread from Anson Horton that talks about the genesis of .NET *before* C#.  Yes, *Before*.  What *did* you think BC stood for, anyway? 

🧠10 thought-provoking questions that are guaranteed to make you experience ennui from Polina Marinova Pompliano.  

💣A second backdoor was found in the Solarwinds update DLL. This one has been dubbed “SUPERNOVA” with the caps denoting… shouting?

Three more days to learn the lyrics to Auld Lang Syne, and four days until we can say goodbye to 2020.

I hope the holidays are good to you and yours, and I’ll see you in 2021.

Last Week in .NET #23 – Solarwinds gets hacked; Microsoft goes on the Attack

In what I can only describe as a “lead magnet”, here’s a copy of my weekly .NET newsletter, creatively titled “Last Week in .NET”. I’m posting it here in the vain hopes that you’ll sign up for the newsletter or subscribe to the podcast. ♥

Between the SolarWinds hack, Microsoft releasing a working document detailing the problems with the .NET ecosystem, and a bouncy castle crypto vulnerability, it’s been a busy week. Let’s dive in and see what happened, shall we?

🤼 Immo Landwerth, PM for .NET, writes a document on the eco-system problems in .NET. This document is monumental in it being a candid take on the .NET OSS ecosystem problem; and while it says it softer than I will, it lays the blame for the state of the .NET Ecosystem on Microsoft. Building Trust with your community is the first step to solving any problem (and let’s be clear: Building trust if-you-don’t-already-have-it should always be the first step) and this document does just that. Microsoft is its own worst enemy when it comes to building a sustainable eco-system for .NET. Luckily they’re at least aware of the problem. There’s also a github issue devoted to feedback on The Document and you should chime in if you have passionate thoughts on the subject. I know I do.

.NET Core updates are coming to… Microsoft update (not Windows Update!). Well, not exactly. Client updates will happen through “Automatic Updates”, server updates will happen via WSUS and Microsoft Update. Somewhere a sysadmin is crying.

🚨 the Bouncy Castle project has a vulnerability in its authentication module which allows attackers to very easily figure out the hashed passwords. The flaw? It checks that the characters exist in the string instead of checking that the characters are at the correct index. Hugops to the Bouncy Castle team.

👩‍💻 Not to be outdone by Apple, Microsoft is designing its own ARM Chips for its servers and Surface PCs. No amount of designing your own chips will get Microsoft out of the “We must support all of our software from the beginning of time” problem they’ve created for themselves, and that problem is central to why “just making ARM chips” won’t make things better. Maybe this is the business person in me talking; but perhaps some of these 25 year old applications need to be re-written off of Win32?

📝 CodeMaze walks through using Authentication in ASP.NET Core with Angular. I got excited for a second when I thought they were going to cover authorization, but no. No one covers Authorization. Authorization is like married couple sex. You know people do it, but you never see it and they really don’t talk about how they do it that much.

You can win $250 US dollars by taking part in the .NET Foundation “State of .NET” survey. Yes, I have jokes, but I’ll put those aside for a second to say: You should take this survey. The .NET Foundation needs to hear what you find important, and they need you to be as direct about it as possible. Also, how can Microsoft possibly figure out which open source project to torpedo next if you don’t tell them what you’re using?

🚨🚨🚨 The Solarwinds DLL used to hijack systems “Solarigate” was catalogued last week by the folks at Microsoft. In case you missed that fun, Nation state-level hackers found the deployment credentials for Solarwinds updates on Github; engineered an update with a malicious payload inside of it, got into a few dozen government agencies networks, used that payload to install backdoors and laterally move into other systems, and all the while kept it secret for 9 months. This post goes deep into an analysis of that DLL. This is what we need more of. Microsoft immediately stepped up, addressed how this happened and now provides an immensely valuable resource on learning more about the inner workings of this attack.

📝 Lesley Carhart writes up her own thoughts on the SolarWinds attack. No snark here, Lesley is one of the smartest infosec people I know, and her commentary is always helpful in these trying times (gestures broadly).

🎥 Remember when movie tie-ins were terrible video games? Now it’s using the movie to tech people how to code, and we’re all the better for it. Space Jam: a New Legacy is coming out, and why not use it to teach people how to code?

📝 Xamgirl shows you how to implement Multi-binding in Xamarin forms blog posts on Xamarin are the programmer’s equivalent of a gym membership. I read them, and I really want to pick up Xamarin forms; but then I have Ionic sitting right there and I just don’t do it. I can just read the blog posts and learn Xamarin vicariously through that; right?

📝 Telerik reminds you of 10 things you probably didn’t know about Blazor Not covered on the list is that Blazor is the programming language for stoners; and it represents an underground attempt to make Mary Jane mainstream. Sign. I can’t do it. I can’t write satire about QAnon without it sounding completely nuts and completely plausible that someone thinks that all at the same time.

📝 So there’s a blog post by David Pine that shows you how to make localization using machine generated translations using Azure Well that’s pretty flipping neat.

🤼 The team working on System.Text.Json details what’s next. Given that Newtonsoft.Json is functionally stable and doesn’t seem to be getting many more updates, it doesn’t make a whole lot of sense for teams looking for new Json serialization to use Newtonsoft.Json, and so we may as well embrace what Microsoft has created here.

🐦 David fowler shares his progress on improving Http.sys for teams migrating from .NET Framework to .NET core, and given the age of the code in question; this PR serves as a really good way to see how to make performance improvements to code that’s almost 20 years old.

🎙 Dotnet Rocks interviews Laura Laban, CEO of InfiniteFlight on her product InfiniteFlight, which is a .NET and C# mobile flight simulator. Yes, a mobile flight sim written in C# and using .NET. That alone is amazing.

🐦 Nick Craver, Architecture Lead at Stack Overflow, deep dives into a mysterious bug the Stack Overflow team was running into and they found what was causing it it. Stack Overflow runs on .NET 5; and this twitter thread is about as close as you can come to “being along for the ride”. Well worth your time to read.

💸 Microsoft Changes its certification programs and makes them free, but you have to renew them yearly This isn’t so bad, especially given the rate of change these days. One reason why a “Last Week in .NET” wouldn’t have worked before .NET core is that… well… release cycles were counted in years, not weeks.

🎥 Channel 9 deep dives into what is MSAL + Microsoft.Identity.Web to which I have the same question, and a follow up if you will: how is this different from IdentityServer?

And that’s what happened last week in .NET. We’re going to be feeling the effects of the Solarwind attack for years. The sheer patience involved in the attack coupled with the way that systems were compromised and how lateral movement occurred means that it could be quite a while before we know the full extent of the damage. And on that happy note, I’ll see you next week; maybe. Depends on what sort of news comes out this week in the world of .NET. It being close to Christmas, probably not a whole lot.

Last Week in .NET #22 – Microsoft Parrots Google

In what I can only describe as a “lead magnet” for my newsletter, I’ve included this week’s newsletter as a blog post so you can see what you’re in for if you sign up. You could, of course, watch this space for new issues; but there’s no guarantee I’ll remember to put them here, and then where would you be? (exactly where you are right now, which is why I should probably just hire professional marketing copywriters).

This is Last Week in .NET for the week ending 12 December, 2020.

📢 .NET 5.0.1 has been released. Lots of Bug Fixes and Performance improvements in this one; with an focus on EFCore. If you use EF Core, take note.

🚨 There’s a Remote Code Execution Vulnerability in MS Teams that was apparently patched in October 2020. This github repository includes commentary and videos on the RCE itself.

🎥 Microsoft’s ASP.NET Community standup covers “Material Design with Blazor”, which continues the tradition of tech parroting tech. Alternate Runtime that compiles to JavaScript? Check. Design library that mimics a flat design? Check. All we’re missing is a realization that in 5 years, Material design made design worse, not better, as we all relegate flat design to the dustbin of bad decisions, where it belongs.

🎥 Did you know Microsoft has its own TV station devoted to .NET? The Zoomers are probably asking “What’s a TV Station?” but for the rest of us, .NET live is effectively a TV station devoted to… .NET. This is precisely as exciting as it sounds, and that excitement you feel is why you subscribe to my newsletter.

🐦 Scott Hanselmen reminds us, If you’re using .NET Core, you can generate a .gitignore file in one command dotnet new gitignore will generate a .gitignore file that is already set up for working in .NET. This is a pretty neat development and I’m here for it.

🎌 Jetbrains tells you how to make the most of init-only properties and records with Resharper 2020.3 and C#9. ReSharper remains one of the fastest ways to improve your productivity in Visual Studio. Even with VS 2019, which has come a long way in refactorings, ReSharper still beats Visual Studio’s out of the box developer experience, hands down.

👩‍💻 There are cryptography improvements in .NET 5 for the 5 of you that care about this, you probably already know about it. So really the only thing I can say is “Don’t roll your own crypto” and “don’t trust some random blog post on Crypto”, and let’s all ignore for the second that this blog post filled the latter. In all seriousness though: If your code even comes within 50 feet of dealing with Cryptography, hire an “InfoSec” centered developer that knows what they’re doing.

If you use blazor, there’s a library that claims to have somewhere between “0-1000x faster API responses on server side with Fusion’s caching and automatic dependency tracking abstractions.”. Yes, 0-1000x. That’s quite the range. This is one of those situations where I’m thinking “Ok, this could be bullshit”, or “I’d love to interview the developer of this to get a better understanding of what’s going on”, so if you run the Stl.Fusion project, or you know who does, make me an introduction?

🤼 Github Universe took place last week and there are lots of on-demand sessions available for your perusal. Oh, and drop ICE as a contract, please. Best, Me.

🎁 CSLA 5.4.0 for .NET 5 has been released No I don’t know what this does either; but according to the project page it’s a way to “build a reusable, maintainable object-oriented business layer for your app. This framework reduces the cost of building and maintaining applications.”

🎁 Infer# for .NET has been released this library does ‘interprocedural memory safety analysis for C#’, and if you know what that means you probably know whether this is good for you or not. It’s a .NET version of the “Infer” Static Analyzer; and I have no clue how it differs from FxCop or other Static analysis tools for .NET. If you do, let me know on twitter @gortok.

📝 There’s a new site out that let’s you know what blogs to follow, no matter your tech stack Now Rust Developers have yet another way to remind you that they use Rust. This site was built by @monicalent, and is pretty fricking awesome. H/t to Stephanie Morillo for the link.

📝 Claire Novotny shows you how to create Nuget packages that can use Source Link Source Link seems to be “Source symbols” for the 21st century. Instead of an esoteric way of downloading symbols (and the nightmare that ensued), you can now point your nuget packages to your public source repository, allowing developers to browse your source code without using that Godawful Visual Studio dialog to do so.

🎁 Microsoft Edge 89 has been released to the developer channel and I promise not to make any ‘edge’ jokes. I’m coming so close to doing it but I won’t do it. It’s really hard not to though.

🎁 Try-Convert 0.7.160902 Preview has been released this project “tries” to convert .NET Framework projects to .NET Core. This is also a Microsoft based project that for once has no support from Microsoft whatsoever. I consider this an especially good omen.

🌐 Dave A Brock talks about the “Route-To-Code” feature available in ASP.NET MVC Core on .NET 5. One day MVC will figure out what sort of framework it wants to be when it grows up. For my part; I’d be happy with as few files with code in them as possible. That’s all I want out of an MVC framework, to make it dead-ass simple to produce a crud web-app. That’s it. Maybe call it… C# on Rails?

📝 There’s a blogpost from Microsoft detailing what’s new in Windows Forms in .NET 5, and if you think about it, Windows Forms is lucky to be included in .NET 5. Don’t get me wrong, I’m glad it is, but it could have just as easily received the WebForms treatment in .NET 5. It probably would have, too, if Microsoft’s desktop application strategy wasn’t so schizophrenic.

📝 .NET development on Apple’s M1 Silicon is mostly there. With the exception of Docker working (which is a pretty big stumbling block to my own designs on picking up a new Macbook Pro) and some goofiness, it seems to… work, as long as you don’t want Debugger support.

🤼 There’s a working group assigned to address “eco-system growth for .NET” which means that they want to make the open source contributor eco-system for .NET Better. Claire Novotny mentions you too can participate but as of this release time, she hasn’t gotten back to me on how people would participate in this working group, or what type of participation would be most helpful.

📢 Windows 10 Insider Preview Build 21277 is now available Included is the ability to emulate x64 applications on ARM based Windows devices, like the Surface, lots of new emojis, and fixes you probably wouldn’t care about if they didn’t include new emojis in this release. Napolean Bonaparte once said “Man will fight to the death for a colored bit of cloth” and I think that’s a pretty good summation of our relationship to emojis in 2020.

🐦 Zac Bowden shows a screenshot purportedly to be of the new Microsoft Word UI it’s rounder, less cluttered, and still includes Icons people never use in prime real-estate space.

And lastly,

🎁 ReSharper 2020.3 has been released and it includes profiling analysis of .NET 5 applications and lots of other features that look cool but I can’t tell them apart by name, because naming is hard.

That’s what happened last week in .NET, I’m George Stocker, and when I’m not helping teams migrate to distributed systems (a bad idea for most), I’m working with teams to double their productivity through test driven development. That is much less boring than it sounds, and allows teams to focus on features without getting bogged down in regression bugs. It’s only boring until your boss realizes how much money it saves your company, and then it becomes cool. To learn more about how I can help your team save money and be cool again, reach out at https://www.doubleyourproductivity.io, and I’ll see you next week.

Last Week in .NET #21 – Remembering the women of École Polytechnique

Normally I’d start this out with some of the funnier things that happened; but before I dive into what happened last week, I want to talk about this week. Warning: death and violence follow.

Yesterday was the 31st anniversary of the École Polytechnique massacre. If you’re not familiar with this atrocity, let me quote Deb Chachra’s chilling telling of the event:

On December 6, 1989, in late afternoon a man had walked into the École Polytechnique, the engineering school of the University of Montreal, carrying a hunting rifle, ammunition, and a knife. He entered a mechanical engineering class of about sixty students, separated out the nine women, and told them, “I am fighting feminism.” One of the women, Nathalie Provost, responded, “Look, we are just women studying engineering, not necessarily feminists ready to march on the streets to shout we are against men, just students intent on leading a normal life.” She reports that his response was, “You’re women, you’re going to be engineers. You’re all a bunch of feminists. I hate feminists.”

He then opened fire on the women, killing six of them. Then he went from floor to floor in the building, targeting and shooting women.

Fourteen women were killed that day, twelve of them engineering students, one a nursing student, and one a university employee.

Here are their names: Anne St-Arneault, Geneviève Bergeron, Hélène Colgan, Nathalie Crotea, Barbara Daigneault, Anne-Marie Edward, Maud Haviernick, Barbara Klueznick, Maryse Laganière, Maryse Leclair, Anne-Marie Lemay, Sonia Pelletier, Michèle Richard, and Annie Turcotte. You can hear more about these women here.

An additional thirteen people were injured. Nathalie Provost was shot four times, but survived. In the weeks, months, and years that followed, among other responses, Canada implemented stricter gun-control regulations, and began to observe December 6th as a National Day of Remembrance and Action on Violence Against Women. The event remains the worst mass murder in Canadian history.

Our industry has problems with sexism, whether latent or outright. While we hope never to have another atrocity like this one; we should strive for equality and justice in our industry. As a white dude in tech, I’ll do everything I can; and I ask you to do the same. If you’ve never had to fear for your life just because you wanted to be an engineer, then you too need to stand up and help stop the sexism in our industry.

Now, on to what happened last week in the world of .NET.

😁 Christina Warren (@film_girl on twitter) submitted a feature request for Windows Terminal to include a “Stories” feature. It was closed far too quickly, in my option, and we all know how hard it is for Microsoft to design a terminal. This would be a nice way to include video tips about the terminal in the terminal itself. What could go wrong?

📝 If you’re the type of developer that has a need to monitor the Garbage Collector, you should read about the newly updated in .NET 5 GC.GetGCMemoryInfo API from Maoni Stephens. We’re all in the boat where we don’t want to deal with the Garbage Collector until we need to deal with the garbage collector, so read this post, and save it for a rainy day.

📝 Code-Maze continues their blazor series with a post on one-way and two-way binding in blazor applications. I maintain that two-way binding is evil and should be avoided at all costs. Think I’m wrong? Yell at me on Twitter @gortok.

📝 How to Unit Test in Entity Framework Core 5 by Michal Bialecki. My preferred answer is: “Don’t unit test persistence”. Thank you for coming to my TED Talk.

🎥 The Visual Studio team livecasted a Remote office Hours talking about the future architectural changes being made to Visual Studio Visual Studio is older than most college seniors these days, and it’s spectacular to see it still alive and kicking. It is probably the best in class IDE I’ve ever used, and probably the nicest product Microsoft has ever developed for a technical audience.

🆕 MVVM Toolkit PReview 3 has been released. Deeper dive into this is that Michael, the author of this blog post, deep dives into the API. I’m not quite sure what the MVVM Toolkit is for; it looks like some sort of platform-independent MVVM library. Special thanks to Dee Dee Walsh, @ddskier on twitter for the link.

👍 There’s an open feature request to get IDE support for Preprocessor symbols. YES. PLEASE. That is far better than the current state of: “What did we name that IFDEF? I don’t know. Guess I’ll just guess and have a timebomb waiting to blow up in my face.”

🔊 Paul Sheriff talks about what’s new in .NET 5 on the Azure DevOps podcast. I checked, and they did start this podcast after TFS was renamed to Azure DevOps. I hope they’re comfortable with change because the name “Azure DevOps” reminds me of 70s disco. It’s cute but it’s gonna get old fast.

📝 Khalid Abuhakmeh talks about Module Initialization in C# 9. If, like me, you have no idea what this is, you can probably skip it. But if your team bandies about “Secure coding” and “Threat Model” as terms of art, you may want to read this post. Basically it gives you a way of loading environment variables or code before your your code gets run.

🧪 Microsoft is testing Windows Feature Experiance Pack updates with Windows Insiders. The Windows Feature Experience Pack, so named because Microsoft’s Marketing department has a minimum character limit quota; includes improvements to windows. In this case, an updated Snipping tool, text input panel, and a suggestion feature for the windows shell. According to this article, Microsoft wants to make future improvements to the…. Feature experience (Sorry not sorry) available through this… pack. If you are A Windows Insider, let me know how you like these updates.

📰 Microsoft Teams adds support for answering calls via Apple Carplay, transferring calls between mobile and desktop, and adding call recordings to onedrive. Oh for fucks sake. Instead of someone saying “You know what? Enough is enough. This “Work from anywhere while you’re doing anything is nucking futz and we aren’t going to do it any more. The eight-hour workday is hereby abolished for a four-hour workday that you’ll actually be able to make it through and still get things done. I’ve never seen technology workers productive for an entire 8 hour day; and it’s about time we stop pretending that they will be.

🎥 The .NET team hosts a community standup talking about LLBLGen. I have to be completely transparent here: I forgot LLBLGen existed. After Entity Framework came out, it sort of sucked the oxygen out of the room for ORMs in .NET. Which, I guess, was the point.

🎥 Abel Wang, the Principal Cloud Advocate and DevOps lead talks about the history of DevOps at Microsoft. You can tell it’s Microsoft because of the heading: “Microsoft’s Enterprise DevOps Transformation Story”. It details how they went from a waterfall-esque organization to a waterfall organization on github. I’m kidding. They’re agile and they do devops now, and I’ve reached my monthly quota for saying the word “DevOps”.

💩 Garter named Microsoft a “Leader” in the 2020 Magic Quadrant for Cloud DBMS platforms. “Leader” here means “Behind Amazon in Vision and execution, and behind Google and Oricle in vision, but beating them on Execution”. Or, they’re #2 in the space for execution, and #5 in the space for Vision, behind… IBM.

📝 Jaana Dogan talks about things she wished more developers knew about Databases. Please tattoo these items to your architect’s forehead in reverse so he can see them every time he proposes a new architecture in the mirror.

📝 Infoq details the performance improvements made in .NET 5 You’ve probably seen other writeups, but you haven’t seen this one. Short and concise, it’s worth your time.

📝 InfoQ details ASP.NET Core Improvements in .NET 5 Did I say I love the InfoQ concise format?

🐦 Zac Bowden claims that Microsoft is hoping to sign off on an “RTM” build of Windows 10X sometime [this] week. Windows 10X is the OS for hot-shit Developers. I’ll be here all week. Try the veal.

🎥 The Xamarin team released a MAUI update. MAUI is the ‘Multi-platform User-Interface’ project meant to unify all of the different UI frameworks into a common framework. The tag line for MAUI is “the next generation of Xamarin.Forms to build Cross-platform mobile and desktop Apps”, and I couldn’t have said that better myself.

📝 Derek Comartin talks about Idempotent Consumers in distributed messaging architectures. One of the most crucial part about developing a messaging or event driven architecture is getting the consumption of messages right. Idempotent messages and enforcing idempotency in your system will make it much easier to reason about problems that will inevitably occur because you chose a distributed messaging architecture.

🎥 David Wengier is building a game in .NET and has videos to bring you along for the ride. I missed Episodes 1-57, but I’m going to add this to my binge list.

🐛 Don’t put the word ‘Android’ in your Xamarin App Namespace Apparently that can lead your application not building and you generally having a very bad day. Thanks to James Montemagno for having that bad day and then blogging about it so we wouldn’t.

💔 Kubernetes is removing Docker from version 1.20. TL;DR: Docker the program has several ‘sensible’ defaults that Kubernetes does not want or need; and while docker containers will continue to work just fine, Docker the program will not work with Kubernetes.

📝 How to use OpenAPI Auto-generated clients in ASP.NET Core Another one for the microservices crowds, but still pretty awesome. The tooling has come a long way since 2016, and at this rate by 2022 Microservices will be a viable development paradigm.

And finally,

📝 There’s a recommended way to run EF Core Migrations in Azure DevOps and this blog post tells you how. Since I neither run Entity Framework Core nor Azure DevOps, I can’t be held responsible if this is considered ‘bad intel’.

And that’s what happened last week. I’m George Stocker, and I help teams double their productivity through test driven development because TDD helps you focus on what you’re doing, and not on the hellscape that is 2020. To find out more about how I can help you and your team, visit www.doubleyourproductivity.io, and I’ll see you next week.

Last Week in .NET #20 – Microsoft reclaiming the “Creepy Spying Company” mantle

In what I can only describe as a “lead magnet”, here’s a copy of my weekly .NET newsletter, creatively titled “Last Week in .NET”. I’m posting it here in the vain hopes that you’ll sign up for the newsletter or subscribe to the podcast. ♥

Welcome to Last week in .NET; and last week was a holiday week so things will be lighter than usual.

📝 Matthew Jones talks about Expressions, Lambda, and Delegates in simple terms. Lambdas were one of the hardest concepts for me to learn; and 12 years later, I’m glad I did.

I still don’t use Func<T> and Action<T> to the extent I’ve seen in other codebases; but that’s because I don’t want the maintenance programmer to hunt me down.

🔎 Why does JavaScript use 0 as January and 11 to denote December? Good @&*#ing question. Good news, is Hillel Wayne dove into old unix systems to find the answer. If you don’t follow Hillel’s work, you should.

🎥 David Fowler Deep Dives into the ASP.NET Core architecture. This is an incredible deep (and I mean deep) dive into the reasons why the ASP.NET Core framework behaves the way it does; provides a nice history of where we came from, and reminds me that we need a good MVC framework for ASP.NET Core but we’re probably not going to get it.

🎁 Do you write nuget packages? If so, you should know about the NuGetPackageExplorer. Also apparently it can help you find incorrect configurations for your packages

📝 Want to use C# 9 for your Xamarin projects? James Montamagno tells you how. For most of us, we’re still waiting for .NET 6 MAUI to unify the runtimes.

📝 Dave A Brock shows you how to isolate and test your service dependencies in Blazor. This addresses one of my chief concerns about blazor; and it’s good that there are people minding the testing store.

📢 Visual Studio for Mac 8.8 now supports NuGet 5.8 The dirty secret about Visual Studio for Mac is that it’s MonoDevelop reskinned; and it has a long way to go to match the power of Visual Studio for Windows; but I’m glad for Microsoft putting effort into a Mac client.

📝 Do you like VB.NET, Winforms, and .NET 5 I’m sorry, I’m sorry, and good! Kidding aside; Winforms is still the way to build a line of business desktop application; and chances are if your business is at least 20 years old you have a lot of internal applications written in at least one of the three. Anyway, this blog post goes into how you can use all three together in .NET 5.

🎁 Versioning your .NET code doesn’t have to suck. How many times have you created a custom build script to versioning your releases? Do you use Git? Do you want to stop writing custom code to do this thing that should be available out of the box? Andrew Arnott has your back with NerdBank.GitVersioning.

🕵️‍♂️ Microsoft wants to make sure your employer knows when you’re working and when you’re slacking off. Microsoft has added a feature to allow you to calculate “productivity scores” for your ‘team members’ in Office 365, and there’s no word whether or not it compensates for Microsoft’s own terrible UI choices.

😂 Immo Landwerth (PM on the .NET Team), makes a funny about Microsoft naming: “People still complain about the .NET Core naming. Just keep in mind that it’s named by Microsoft so it’s a miracle we didn’t call it “.NET Framework without AppDomains, Remoting, and most of WCF but for multiple operating systems as long as you promise to run your cloud on Azure”. Yea, that about sums it up.

📝 How to implement CSS Isolation in .NET 5’s Blazor You now get “CSS Isolation” in blazor. What that really means is that now in Blazor, you can have CSS scoped to a component, just like in Angular (and probably other SPAs). This is a fundamental feature for SPAs, and I’m surprised it wasn’t in 1.0.

🤯 Do you have Assembly version conflicts? Trick question: We all do. Good news is that there’s an in-depth blog post that will help you resolve these issues and restore your sanity.

📝 Andrew Lock has a preview from his new book about how to apply the MVC design pattern to Razor Pages. It’s a bit of shoehorning, but let’s go with it.

📝 There’s an F# newsletter out with what’s new there F# is a great language; but I don’t spend a lot of time in it.

📝 Scott Hanselmen shows you how to create a Self-Contained Deployment with Single file Publish and Winforms on .NET 5 This is crucial for Desktop applications and far overdue. I hope this rekindles interest in desktop applications.

🐛 There’s a breaking bug change with .NET 5 and VB.NET that will cause you problems if you run into it. Be careful if you use VB.NET .? OR GreaterThan, And AndAlso; and my apologies to you if you’re listening to this instead of reading it.

😂 There’s a comic about Debugging tactics and how often we use them For some reason “The Ballmer Peak” wasn’t listed. I consider this an error.

And that’s what happened last week in .NET. It was the American Thanksgiving Holiday, and I hope you and yours enjoyed it. I’ll see you next week.

Last week in .NET #19 – Throwing TFMs at the Wall to see what sticks

In what I can only describe as a “lead magnet”, here’s a copy of my weekly .NET newsletter, creatively titled “Last Week in .NET”. I’m posting it here in the vain hopes that you’ll sign up for the newsletter or subscribe to the podcast. ♥

📢🐛Visual Studio 16.8 has been released; and it might have uninstalled the .NET Core 3.1 SDKs on your behalf.

🎲Random Street View shows you a place in the world randomly. Hopefully this gives you something fun to do during this holiday week while waiting for the clock to hit 5pm.

📢 Do you like the idea of using C# for scripting? dotnet-script provides that. Personally I’m of a mind that they should have modified C# for Scripting a long time ago and not invented Powershell, but we don’t all get what we want.

🛑 Github reverses course and re-enables the youtube-dl repository. The RIAA had issued a takedown notice, since the youtube-dl repository allows for command line accesss to Youtube. Initially Github caved (because they thought they had to?) and removed the repository; but after the Electronic Frontier Foundation (EFF) stepped in with a supporting letter as to why the RIAA was mistaken in their claim, Github re-enabled access to the repository and created safeguards so this “doesn’t happen again”.

💔 If you have a class with a private default constructor in .NET 5; SignalR can’t deserialize it. The author of this blog post suffered so we wouldn’t have to.

📝 AppVeyor has a helpful (short) blog post on Version pinning for .NET 5 and the .NET Core SDK. There’s something valuable here but I fear I’m missing the context to know what it is.

📢 .NET Framework November 2020 Security and Quality Rollup Updates have been released. This is a release of the “Preview” I mentioned a few weeks ago; although the word ‘security’ is in the title, there aren’t any security updates in this release.

🤦‍ Jimmy Bogard released a galaxy brain meme on how to see if a string is null in C# It’s funny and sad. It’s funny because it’s sad.

📝 You can see all the differences between the .NET Standard 2.1 and .NET Core 3.1 APIs vs .NET 5 here. It’s pretty cool to see all the API differences in one place.

📝 Roadmap for WinUI 3 should be out in the first half of 2021. I’ve said this before and I’ll say this again: I have no idea what WinUI is or how it’s different from all the other UI strategies Microsoft has had; but maybe we’ll get lucky and it’ll finally unify everything.

📢 Along the same vein, WinUI 3 Preview 3 has been released.

📝 Julie Lerman shows you how to deploy containerized .NET 5 applications using AWS’s fargate. Also maybe one day AWS will unify its containerization strategy.

🎥 Monsters weekly releases a video on how C# 9’s Pattern Matching can make your job as a developer easier.

🎥 There’s a new Git Experience in Visual Studio 2019 16.8. If you use the UI; let me know how much better it’s gotten.

💡 Exception Filters allow you to pare down what you’re catching, and as the old adage goes, if you can’t handle it, don’t catch it.

💡 Microsoft edge allows you to add ‘notes’ to a PDF document Keep this up, Edge and I may install you on my PC.

📝 Top 5 features of EF Core 5.0 from 4 Entity Framework Experts. While we’re running the numbers, it turns out there were 240 enhancements, 380 bug fixes, and around 200 updates to documentation, and to give you an idea, EF Core 3.1 was released On 3 December 2019; so all those changes were made in the span of 11 months.

📝 The Roslyn team wrote a blog post detailing what’s new in the .NET Productivity Realm If you use Visual Studio 2019, it’s worth your time to check this out since you’re likely to find something to help you out.

📝 Joseph Guadagno shows you how to add .NET 5 support to the Azure App Service I’m not sure why this is a thing we as developers have to do; but here we are.

📢 Microsoft Research released a fuzzing tool for HTTP and REST APIs. A fuzzer is a real life incarnation of the saying “Throwing spaghetti at a wall and see what sticks”.

📢 TypeScript 4.1 has been released. Here’s my periodic reminder to you that TypeScript does not respect SemVer and therefore not pinning to the exact version of TypeScript you’re using (major.minor.patch) is a good way to cause random build breakages whenever typescript releases a new version.

💡 Don’t use the TFM without the SDK, says .NET team. Basically if your TFM is readable, you’re not using the right thing. Include both the TFM and the SDK number so you’re pinned to the exact right thing.

📢 Microsoft.Data.SqlClient 2.1 has been released with lots of bug fixes and performance improvements — and they mean it this time.

📢 Microsoft’s WebView 2 now uses Chromium Edge for when you need an integrated web browser in your .NET application The joke here is that we’re stuck with Desktop UI toolchains but we’d all rather be using web toolchains.

And lastly,

📝 Explaining Chains, Funcs and Actions in C#. Honestly this all sounds a bit like a kink; but I assure you, it’s all SFW.

Did you like what you read? This is a weekly newsletter you can sign up for at https://www.lastweekin.net. If you’d prefer it in audio form (hi, we should be friends), you can subscribe to the podcast version at https://podcast.lastweekin.net.

Last Week in .NET #17 – EF stands for “Ever Frantically” shipping code

In what I can only describe as a “lead magnet”, here’s a copy of my weekly .NET newsletter, creatively titled “Last Week in .NET”. I’m posting it here in the vain hopes that you’ll sign up for the newsletter or subscribe to the podcast. ♥

📝 Not about .NET, but relevant to our interests: Pintrest Engineering talks about they decreased their build times by 99% by changing one line in their build process. If you use Git and you use Hosted CI, you’re going to want to pay attention to this. Hell, even if you don’t use Hosted CI, taking a look at what tricks may speed up your build time is always a good idea. This post also re-inforces that good API naming is a must. If you’re a git expert, you probably know this trick, but for the rest of us, this stuff comes down to discoverability, and I’m not exaggerating when I say the git API is… opaque at best.

🎁 You can now tell the HttpRepl where to find your OpenAPI files. If you use HttpRepl (Microsoft’s command line version of cURL or Postman) you can now tell it where to find your swagger or other OpenAPI files. This is one of those “I really need to check out HttpRepl” moments. One of the problems with cURL and Postman have been the… well.. generic nature of the tool. Having a tool that is aware of the modern web application stack is helpful. Special thanks to Brady Gaster on Twitter (@bradygaster) for making me aware of this.

🎥 Progress Telerik is hosting a “The State of .NET” Webinar. This is clearly a cash grab for your email address so that they have you on their sales list, but regardless, it should be informative. Since I already have your email address, you can always wait for the podcast episode to drop where I cover everything that Microsoft released during .NET Conf.

📅 .NET Conf is November 10th – November 12th. If you’re listening to the podcast version of this, that means it’s tomorrow. I’ll be live tweeting this from @gortok on twitter and I’ll have a special wrapup afterwards on the podcast… like I just said above.

📝 Scott Hanselman talks about Path.DirectorySeparatorChar gotchas in .NET Core when moving from Windows to Linux This is an informative blog post on what can happen when you hardcode special characters in your application, and it is something that just about every production .NET Framework Application has hiding in it… somewhere. Stay Frosty.

🐞 Not content to ruin everyone’s day with the String.IndexOf linguistic comparison problems in .NET Core we talked about last week, Jimmy Bogard found that a target framework moniker of NET50 and NET5.0 both work in Visual Studio. Both work due to Nuget parsing rules, and it’s going to be interesting to see if this causes a problem come .NET 10.

🎥 Progress Telerik also hosted a “Future of Desktop” webinar on .NET last week, and while I missed the announcement before it happened, the video is available to watch. If you write .NET Desktop applications, check it out.

📝 Are Records in C# 9 immutable by default? Dave Brock asks this question and deep dives into the answer in his blog post: Short answer is: it depends, and somewhere a software architect is basking in the glow of that answer.

🎁 TypeScript 4.1 RC1 is now available Because TypeScript doesn’t support Semver, there are nearly always breaking changes in minor releases, and this one is no different. If you use TypeScript, it’s healthy to be aware of these changes before they break your build because your package.json file wasn’t pinned to the patch version for TypeScript. This oddly specific failure brought to you by my own experiences trusting version numbers.

And lastly,

🎁 The EF Core folks aren’t sleeping at all if this release changelog is any indication. EF Core 5.0 RC2 is out; and the list of changes is too long to mention here. It’s entirely evident that someone said “Look, EF Core is coming on November 10th, so it’d better be ready”. If you know an EF Core team member, slide them a gift card and a socially distanced hug.

Did you like what you read? This is a weekly newsletter you can sign up for at https://www.lastweekin.net. If you’d prefer it in audio form (hi, we should be friends), you can subscribe to the podcast version at https://podcast.lastweekin.net.

Last Week in .NET Issue #15 – It’s not a Bug, it’s just a feature you didn’t expect!

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 C# 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.

Nuget.org 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.

🔉 Layla Porter, newly elected .NET Foundation Board Member, talks on .NET Rocks about… The .NET Foundation, specifically, it’s goals and how it needs to evolve.

📝 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 https://www.doubleyourproductivity.io and I’ll see you next week.

Last Week in .NET – Issue #12 – dotnet and .NET Please don’t do this to us again

This is Last Week in .NET for the week ending 3 October 2020. You know, Last week. There were no releases this week, but a crap-ton of goodies abound.

Blazor

🔗Ed Charbeneau talks about Blazor vs. MVC on his twitch stream One bad thing about twitch is the videos disappear after 14 days so you have another 4 days to watch this one.

🔗James Newton-King wrote a Blazor WebAssembly app that shows performance benefits of gRPC-Web over JSON. Tl;dr 70% less bandwidth, 10x faster deserialization; all without gzip.

🔗David Ramel focuses on how much faster Blazor is getting Microsoft already fooled me once with Silverlight, but I’m hoping this time will be different so I’ll dump all of my attention onto blazor and cry when they inevitably abandon it.

🔗How to deploy ASP.NET Blazor WEbAssembly to Azure Static Web Apps (translation: using blazor on a static site hosted on Azure)

ASP.NET Core

🔗David Fowler shows the original design principles surrounding ASP.NET Core IT’s frightening to think that at this point the idea of ASP.NET Core is 5 years old.

🔗Michael Shpilt talks about ASP.NET Middleware and stuff you should probably know but have avoided. If you’re like me you’re about 3 months away from completely abusing middleware because you need to hook into the request pipeline for a dangerous reason.

🔗TheDevTalkShow on Twitch talked with Shahed Chowduri about “ASP.NET Core from A to Z” on their twitch show.

🔗That .NET Foundation meetup about Microservices and Containerization happened and I haven’t watched this yet and the reason you know I haven’t is that I would have started this sentence with a curseword. I’m sure it’s a good presentation but I have ethical issues with Microservices. Like developers should be bound by ethics not to use Microservices.

.NET 5

🔗Have you analyzed your .NET Framework project for .NET 5 portability? You may want to do that, and they may want to update that doc to reflect that it’s now called “.NET 5” and “ASP.NET Core on .NET 5” instead of “.NET Core”.

🔗Anthony Giretti Deep Dives into the System.NET.HTTP.JSON Namespace. If you’re going to serialize JSON in .NET 5 (and you will, t least until the cool kids move to gRPC), you’ll want to pay attention to this, especially since JSON.NET is ‘mature’.

🔗Do you want to see all the new Visual Studio templates? Check that box. Also, go vote and check that box.

🔗netstandard2.0 is the most used Target Framework Moniker by far Immo Landwerth showed the stats of most used TFMs (Do you know how to Read TFMs?) and the most used TFM is netstandard2.0 followed by net45. More deeply, this means that while library authors are hoping to target both Framework 4.7+ and .NET Core 2+, they’re not diving into the netcoreapp only features yet.

Broken Stuff You should probably Patch

🔗Microsoft Exchange Servers Still open to Actively Exploited Flaw. If you’re using exchange I’m sorry and I recognize you already have problems in your life, but here’s another one: An flaw has exploints in the wild. I can’t help but notice that the exploit was patched on 11 February 2020, about a month before the US went into total lockdown mode. I wouldn’t be surprised if that hurt adoption of this patch; but regardless.

Conferences

🔗dotnet Conf is 21 October 2020 and you can register here

this is not to be confused with

🔗.NET Conf is November 10th-12th, 2020 Which is totally different than dotnetconf, Also if you’re listening to the podcast version for this I’m sorry. I will be live tweeting this @gortok on twitter. Mute now, just in case.

People

🔗The .NET team released the results of the survey that asked people about their experiences with the .NET repositories on Github. If you like data and skewed numbers due to sample size, you’ll love this survey.

🔗PM Director of the .NET Team, Scott Hunter sits down on youtube to talk about his job. Clearly enforcing the standard that it’s spelled .NET and not dotnet is not in the job description.

🔗Is it Too-pulls or Tuh-pulls? Maira and Kendra from Channel 9 released a video on Tuples in C#

Speaking of Tuples, I scrupiously commissioned a twitter poll about how to pronounce it. It has also spawned a link to this english.stackexchange question on the subject.

Miscellanous stuff that’s interesting

🔗Brian Armstrong, CEO of Coinbase, released a reprehensible blog post about Coinbase’s mission and got thoroughly roasted for it Good. If you’re going to put profits over people in 2020 you shouldn’t expect much else.

And that’s what happend last week in the world of .NET. No releases, but overall still a busy week.

To subscribe to the Last Week in .NET Newsletter, go to https://lastweekin.NET. To listen to the audio version of the newsletter, subscribe at https://podcast.lastweekin.net.

UBM, and a lament for the software industry

I grew up in tech as a UBM fan. Ok, not really a fan, but a “there’s very few voices writing books about ‘how to write code well’, and this person seems to know what they’re doing, so I’m going to listen to him”. I read all his books; attended talks he gave at SCNA, and thought for a while that his way was the right way.

That, of course, was a mistake. Much like anyone else who has ideas, most of UBM’s ideas are bad, a very few are good, and then you turn the light on and realize he’s about 10 seconds away from outright fascism.

If you’ve read his tweets (don’t), he apparently has a particular affection for law and order in the form of “gosh, we apparently don’t have enough of it since there were shooting deaths over the weekend.”

And normally you’d think this would align him with the pro gun-control crowd, but it doesn’t. Instead his answer is to give the police more money, and maybe they’ll find a way to get their clockwork stat of killing 3.2 Americans a day higher.

It’s grotesque, and I normally wouldn’t spend any further typing on UBM, but I bring him up because it’s instructive of the tech bullshit that’s holding our industry back.


I got into tech because I was the first kid on my block with a computer and a LAN. I wasn’t super competitive at sports in the “I want to win” sense, although growing up in America in the 80s meant that your worth as a human being was tied to whether your team won the game. The teams I was on seemed to lose a lot more than we won, and the few times I was on winning teams I could see the Jock’s kids doing it out of some sense of devotion and attention grabbing from their dads.

My dad didn’t really give a crap about sports. He was a reporter. I love him (RIP), but he was an asshole. He liked to find the uncomfortable buttons and push them whether those buttons belonged to politicians or the local school board. It made him a good reporter. He worked for TV, several newspapers, and he was the first reporter on the scene when his eldest son, at the tender age of 7, was hit by a car in the 70s.

That was shockingly hard on him for decades to come, and the alcoholism that ensued doomed his first marriage and almost tore his second marriage apart . Ironically the Congestive Heart Failure put a quick stop to the alcoholism.

What’s that saying about frying pans and fires again? One of the things my dad used to say repeatedly to me was “it’s not the man with the answers, it’s the man with the questions.”

He also liked to say “reporters report the news, journalists make the news.” Ten year old me had no idea what that meant, and 38 year old me has no idea whether he was pro-journalist or not with that statement.

One thing he did focus on was being outside of the story. Never make yourself the story, he would say.

UBM has a volume of work much greater than most of the modern tech space. Having been working in tech longer than I’ve been alive, it’s understandable. He was also one of the agile manifesto signatories, though with the passage of time it too seems to be a relic of another era and another war.

The ire UBM draws seems to be more from his lack of empathy than anything else, and as someone whose father lacked empathy, the signs are all the same.

As of this writing, there are 941 examples of police brutality against protestors that have risen up in response to decades of police abuse and the inhumane treatment of black people and people of color that has culminated in George Floyd’s murder at the hands of police. Let us also not forget Breonna Taylor, whom the prosecutors are currently trying to justify her murder by police after the fact by trying to get her boyfriend to sign a plea deal saying she was a part of his “criminal network”.

These cases of brutality are well documented, and if you follow Radley Balko’s work, they are just the latest in the decades’ long undeclared war on the black populace by police.

It’s during this time, when pain is at its greatest, when UBM tweets, “fund the police.” To which he rightfully got scorned. Only an asshole would say “pour more fuel on the fire” when it had consumed lives, neighborhoods, and our country.

This lack of empathy is present in UBMs talks as well; he has had a constant refrain of “we are professionals and professionals do good work.” He also has some shaker woodshop view of software in calling himself a “software craftsman”, which I don’t think you could get any more white or male by referring to the best software developers as “craftsmen”.


It’s interesting to note he holds software developers to a higher standard of professionalism than police, but such is the way of the fascist. The rules apply to thee, but not to the state.

This is our software industry, and our industry is both responsible for some of today’s woes; but we can also contribute to a economic boom that no other industry can match with the amount of time it takes to become a developer.

That’s the power of being in the software industry: You can go from intern to making six figures in less than 5 years, and some are making six figures right out of school.

But there’s one thing missing: We’ve not yet conquered the racial and gender issues that hurt black people, people of color, women, transgender, and non-binary people especially. The issues that keep them from being a part of this economic boom. And as is often the case, the people in power are the cause. Whether inadvertently through a lack of empathy or intentionally, white men get to play the tech game on easy mode while everyone else has to jump through the hoops we’ve put in place. I’ve benefited from it, and I look around at the talent that we have in tech in under-represented minorities and I realize that if there were a level playing field; this industry would be far more diverse than it is now.

I’ve become rather obsessed with Hamilton, the musical. This in of itself is an odd statement, given that I am (at best) neutral on the idea of a central bank, and harbor a bit of disdain for is historical evolution; but Hamilton the musical warmed me to the understanding of Hamilton the man. A man that previously was the scorn of libertarians everywhere; and this musical humanized him.

More so than that, the Musical showed the range and depth of talent that this unique re-telling of history could bring to the table. There’s nothing quite like Hamilton out there, and there’s no way that would have ever seen the light of day with a mostly white cast and white playwright at the helm. Lin-Manuel Miranda’s work has enriched our society; and it’s past time for us to give diversity its due. His work is just a recent example; and there are dozens of others.

How many Hamilton’s have been squashed in the software industry due to gatekeeping? How many Lin-Manuel Miranda’s have been pushed away? How much oxygen have white “thought leaders” taken out of the room?

Often, when under represented minorities in tech “make it”, it’s in-spite of this climate, not because of it.

One of the things we can do is to amplify other people’s voices, and to me that’s one of the problems UBM has: He doesn’t amplify other people’s work. As someone who has spent a lifetime in the software industry and become famous, he should. He has a large following, and using it to raise others up would improve the entire industry. My disappointment with UBM starts with the idea that as a leader he has an obligation to improve the industry; but he can’t see the injustice in front of his own nose.

We’ve stopped serving humans with the software we build. We’ve stopped focusing on the humans the software affects in search of basis points of engagement to improve. We have created entire industries to serve at the pleasure of investment returns for venture funds while ignoring the costs associated with serving VCs’ interests. And all the while we’ve done this, we’ve hurt the most vulnerable among us. If you’re Anglo-saxon, there’s good money that you identify as a Christian, and Jesus framed his entire teachings around the idea of lifting up and helping those around you.

The irony abounds, and the startup founders cash another venture capital check.

We are missing out on so much by gatekeeping; even if it is unintentional. We lose nothing by adding diverse voices to our teams and we gain so much by intentionally making our teams more diverse; from our leaders on down. If we are really supposed to be the leaders of tomorrow, if software is supposed to revolutionize living, then we have to start with who gets a seat at the table, and if that table is filled with mostly white dudes, we’re never going to reach our potential as an industry or as a force for change.

We need new leaders, diverse leaders who can help evolve our industry past its roots and make it a force for good for all people, and we’re not going to get there by listening to the people who got us here.

I have no answers here, as I have very little experience with this; so I’m going to defer to someone who does.