All Articles

Addressing Tech Debt without Killing Quality

So you’re going to start fixing some of your technical debt? Great! Just remember the one cardinal rule: Don’t break the application. Think about it — when we get to take on technical debt the business paying an opportunity cost for us to refactor code instead of making new features or even […]

Communicating Tech Debt

Many developers feel that product management and executive leadership don’t “get it” when we talk about technical debt. At the same time, if you ask developers about factors vital to the long-term success of a project, paying down technical debt is high on the list. So, how can we communicate […]

Creating a .NET Core 3.0 F# Console App

This is part 1 in a new tutorial series on creating a genetic algorithm in F# and .NET Core 3.0. This tutorial is focused on creating a new console application and learning some of the basics of F#. By the end of this tutorial you should be able to: Understand the […]

Learning to Succeed Through 96 Failures

I have no idea how many different hobbyist software projects I’ve started and abandoned over the course of my life. Let’s just take an average guess and say I’ve worked on 3 side projects each year since 1987 when I started programming for fun. That’d put the number at 96 […]

Building Text-Based Games with Compromise NLP

In this article I’ll walk you through using the Compromise NLP JavaScript library to interpret player input in text-based adventure games. Interactive Fiction In text-based games, also known as Interactive Fiction or IF, the game describes a room to the player who then types in a command and the game […]

A Love Letter to .NET

With Microsoft’s official release of .NET Core 3 today, I want to give you my perspective on .NET and tell you how the platform continues to innovate solutions to modern problems. I’ve been using .NET since beta 2 of the framework back in 2001 and have seen a lot of change over the […]

Discriminated Unions in C# using OneOf

Ever wish you could act on different types of variables — effectively switching by object type and taking different action depending on which class is present? Discriminated Unions from functional programming languages offer an answer to this. In this article I explore the good and bad of Discriminated Unions in C# and […]

How TypeScript squashed all known bugs

You know that application that keeps you up at night hoping you won’t have to change it? It seems like we all have one. Mine was in JavaScript. It was a single page application made with just jQuery and JavaScript and it was the most brittle thing I’ve ever worked with. […]