Problem: every time I started a new Claude session, it didn’t know me. Not in the “we haven’t met” sense — in the “I told you about my coffee three days ago and you’ve forgotten” sense. There’s a model gap there that no amount of context-window engineering closes. The fix isn’t a bigger prompt. It’s a place to put the things you’d…
I should really start blogging again. So I’m gonna. There’s been a bunch of stuff on my mind lately, some of it about software engineering and architecture, some about life and mental health and stuff I’m going through, that kind of thing. So I’m spinning up Hugo, sorting out some hosting and CI/CD pipelines and all that so I can get it all out of my head and on the web so…
Highlights In no particular order… Programming’s Greatest Mistakes An ever-evolving look at some of the mistakes in software engineering over the years that have led to explosions, bankruptcies, world-wide Windows outages, or in one case just a severe telling-off from my boss :) From Devoxx Belgium 2024 How JavaScript Happened A history of programming languages, but limited to the…
Dustin Moris Gorski yesterday published Fund OSS through package managers on his blog over Dusted Codes . In it, he suggests adding payment mechanisms to package managers such as NuGet or NPM , and that’s certainly an option. But it involves creators choosing how much to charge for their packages, and potentially developers having to raise purchase requests every time they want to adopt a…
It’s .NET’s 20th birthday: 20 years since Microsoft released v1.0 of their managed runtime, a Base Class Library, a couple of application frameworks, and the C# programming language. So I thought I’d do a retrospective of my 20 years working with .NET, because I’m extraordinarily vain and I assume people want to read stuff like this. 1.0 beta It was some time in late 2001…
I’ve been working on a fun little project on my stream recently. It’s an app called StreamBadger that adds overlay images and plays sounds on the stream through OBS Studio. It uses the Twitch API so it needs to authenticate with Twitch, and as it’s a desktop application I wanted to build that authentication flow where you log in through the browser and the app sits and waits and…
TL;DR: I’ve come up with a way to gradually migrate old ASP.NET WebForms (or MVC) applications to .NET 5.0, and you can watch me figure it out in real-time on my brand new Twitch channel . I’ve been working on Visual ReCode for a while now. It’s a plug-in for Visual Studio 2019 that helps developers migrate old .NET 4.x code to new .NET 5.0 or .NET Core 3.1. We just released…
I’m a big fan of the Nullable Reference Types feature added in C# 8.0. It lets the compiler catch a bunch of potential runtime errors, and I guarantee if you turn it on you’ll get a bunch of warnings. As of .NET 5.0, the entire BCL is now covered with nullable annotations, and a lot of the extended ecosystem supports them too. But there are situations where the compiler is unable to…
One of the great features of .NET Core is that it gives you a simple way to create and distribute CLI tools via NuGet. You just create a Console application, add a few entries to the .csproj file, and publish it to NuGet. Then other people can install it with the dotnet tool install command. I’ve published a couple of tools this way before, but I’ve just published another one so I…
First up, let me just say that Roslyn , the compiler platform for C# and .NET, is amazing and I love it. I couldn’t have built Visual ReCode without it. But I have run into an issue with the MSBuildWorkspace type that, ostensibly, lets you load .NET solutions quickly and easily. The problem is, when you use MSBuildWorkspace in a .NET 4.x project, it uses the old, full-fat .NET version of…
Ironically, as I am creating a Visual Studio extension that migrates .NET 4.x code to .NET Core 3.1, I find myself mainly coding with .NET 4.7.2 and C# 7.3. While it is technically possible to use a subset of C# 8 features outside of .NET Core 3.x, the VS SDK is a difficult beast and introducing it to new things often makes it unhappy. I’ve lost an afternoon tracking down a reference to…