Home

Steve Fenton is a programmer, (hands-on) architect, and theory-y/human-centric manager mostly working around the .NET space. He enjoys creating software that makes a difference to people’s lives; such as mail transfer agents with zero-day threat detection or clinical decision support engines. Steve has been active in the whole DevOps life-cycle and enjoys coaching people on agile and lean methods (and the theories behind them). He also enjoys finding fractal principles; such as those found in monitoring and alerting, or in queuing theory.

Books by Steve Fenton

Pro TypeScript Second EditionWeb Operations Dashboards, Monitoring, and Alerting by Steve FentonExploring Octopus Deploy by Steve FentonCranked by Steve Fenton

A Note From Steve

This is my personal journal where I store ideas, notes, and information to supplement my biological abilities. My interests are programming, psychology, philosophy and critical thinking, and the Oxford Comma. The journal largely covers the order software progressio and the families modum translitterandi, processus, and populus. I am also secretly S. M. Fenton the author of The Vanishing Room.

Recent Journals

You can review my full archive of journals, but the most recent entries are listed below.

C# 9 Covariant Return Types Posted in: Programming - Just a quick note on a neat feature in C# 9 that will allow sub-classes to return a covariant return type… what?! Okay, it allows you to return a more specific, or narrower type. For example, we used to have to return the same type… // parent class... public virtual Literature GetLiterature(...) { return new […]
Turn an Old Phone into a Programmable Keyboard Posted in: Programming, Windows - It seems like everyone has a high-quality, expensive, programmable deck on their desk these days. Elgato’s Stream Deck, with it’s glowing LCD buttons, comes in flavours that cost between £100 and £200 (depending on how many buttons you want). It’s beautiful bit of kit that glows its way into the hearts of tech geeks everywhere. […]
C# 9 Non-Null Parameters Posted in: Programming - This neat C# 9 feature can be summed up in a tiny snippet of code. You know that code analysis warning that tells you that the argument passed might be null… wouldn’t it be nice if you could refuse to accept null? Well, you can. This is the before… public Book(string firstName, string lastName) And […]
C# 9 Record Types Posted in: Programming - We have taken a quick look at C# 9 Initializers and Immutability and C# 9 Non-Destructive Mutation. Let’s now look at the full transformation from an old class to a super character-light record type. Our original record type is very much just a class with two auto-properties. It looks different to a normal class because […]
C# 9 Non-Destructive Mutation Posted in: Programming - There are some phrases in programming that feel like they belong in a superhero movie. Non-destructive mutation is just such as phrase. It refers to a concept in functional programming that means when you want to change the state of an object, you create a copy with the change – rather than changing the original. […]
C# 9 Initializers and Immutability Posted in: Programming - There is currently a compromise in C# that means you can enable object initialization with getters and setters, or you can prevent external code mutating state by hiding the setter… but not both. C# 9 gives us both with the init keyword. Let’s look at before… public class Book { public string Author { get; […]
C# 9 Simplified Console Apps Posted in: Programming - At Microsoft Build 2020, an interesting new “see less boilerplate” feature from C# 9 was demonstrated. It removes all the code to create the class and static Main method, letting you just start typing your code. It makes your code way-less-nested (okay, two levels), but doesn’t miss any of your usual features. For example, args […]
A Glance at PowerToys and WinGet Posted in: Programming, Windows - PowerToys and WinGet are exciting previews for Windows Users. If you are a civilian, you’ll be getting these in general release soon, but for technical folks might want to try things out early. Or now! PowerToys PowerToys has been in preview for a while. You’ll install it when someone shows off FancyZones, which gives you […]
How to Drop a SQL Server Constraint When You Don’t Know its Name Posted in: Programming - If you are looking after a database that has been haphazardly maintained in the past, you might come across inconsistent naming of things such as constraints. When you come to delete the existing one, it might be tricky if it doesn’t have the same name across environments. That’s when you need to do a lookup […]
Naming TypeScript Custom Type Guards Posted in: Programming - This is a super quick one. Be super-careful about how you name your custom type guards to stop consumers falling into a trap. Basically, the name you give a custom type guard and the return type you specify form a kind of promise that you have to be able to keep. Take this example: function […]