Recent Posts


Imagine the following. Up on the twelfth floor, the rain gently pitter-patters against the windows of your apartment. In the distance across the dark sky, a thunderstorm is brewing. It's late. Too late. You should have been in bed already. You sigh as you force yourself up and off the couch. Then, just as you turn off the lights in your living room, a bright flash of lightning illuminates the sky and it is in that ... read full post

One .NET to rule them all

So .NET 5 was released earlier this week. This is the next .NET Core release after 3.1, and drops the "core" part from its name to signify that this is the singular .NET implementation going forward. Microsoft continues the tradition of total confusion when naming things. We move from .NET Core 3.1 to .NET 5, which is not a continuation of .NET 4.8 (also known as the Full Framework and now in support-only) but represents the future of .NET nonetheless and is the only ... read full post

Hello World

The evolution of software development, as illustrated by Hello World. Hello World (beginner) namespace HelloWorldApp { using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } Hello World (student) namespace HelloWorldApp { using System; class Program ... read full post

A pure T-SQL replace-all function using PATINDEX

Although SQL Server is a powerful and fully-featured database engine, one of the things it has always lacked is support for regular expressions. This isn't a super big deal, because you don't (or at least shouldn't) need regexes in your database all that often, and if you do need them you can always write a trivial C# extension for it thanks to the SQL CLR. Or, well, at least you can if you're running SQL Server on prem. In Azure, it's another story. In the ... read full post

A template for Dependency Injection and Configuration in .NET Core console apps

One of the nice things about working with ASP.NET Core is that dependency injection (DI) and configuration is wired up right out of the box. Working with console apps, you don't have this luxury. However, it turns out it's very easy to set this up yourself. In this post, I'll set up a minimal template for using DI and appsettings.json configuration from a .NET Core console app. I'll be using .NET Core 3.1, which is the current latest LTS version. The first thing ... read full post

Creating a Companion Cube in Blender 2.8

The Vital Apparatus Vent will deliver a Weighted Companion Cube in three, two, one... I've been learning Blender recently, and after following along with some courses I wanted to try and make something on my own. What better first project than an iconic object from one of my favorite video games? Plus, it's just a cube, so how hard could it possibly be? Well, not all that hard, really. This ... read full post

Visual Studio 2019 is kind of a disappointment

Microsoft Visual Studio is over 2 decades old at this point, and is currently still the way to work with the .NET ecosystem. It's a solid IDE, arguably one of the best around. Earlier last month Visual Studio saw the release its latest major version: version 2019. Despite having been around for such a long time, this is actually the first release of Visual Studio that took place in the face of genuine competition ... read full post

Security Analysis of the Aperture Science Turret Production Line Turret Integrity Arbiter Integrity Judgment Protocol

Abstract We analyze the behavior of the Integrity Judgment Protocol, which is used by the Turret Integrity Arbiter on the Aperture Science Turret Production Line to determine the integrity of assembled Aperture Science Sentry Turrets. This analysis is primarily an assessment of the security of the Integrity Judgment Protocol. Overview The Turret Integrity Arbiter is a junction on the Turret Production Line where freshly assembled Aperture Science Sentry ... read full post

How much Pi do you really need?

Last Thursday was Pi day, at least in those parts of the world with a month-before-day date format. Google celebrated this event by computing a record-breaking 31.4 trillion digits of Pi. There's no practical applications for this whatsoever, but it did get me wondering: how much Pi is enough? Let's figure this out by using ... read full post

Why I don't have a very active GitHub profile

I was approached by a recruiter on LinkedIn the other day with yet another unsolicited job offer. I get these every week, and usually I just ignore them. This one stood out to me, however, due to the way the candidate profile was described. This guy was unironically looking for a "rockstar developer" who "lives and breathes code," maintains an "active GitHub profile," and spends a lot of time on reddit and hackernews. Yeah. I don't see ... read full post