Over my years of blogging, I sometimes publish groups of stories that I call Deep Dives. These series consist of multiple related posts, and cover large or complicated topics, from design patterns to sorting algorithms to learning C#.

On this page, you can find all of my mega-series posts, including links to each part, a summary, more downloads, details, etc.

The individual series that comprise the Deep Dives are:

C# In Simple Terms

This series aims to introduce programmers to the C# language, including concepts, syntax, features, and more. It is intentionally written in the simplest possible language (which makes it perfect for newcomers to C# or people who do not speak English as a first language), and each post includes a glossary that defines terms used in that post.

The introductory post for this series is here:

Introducing C# in Simple Terms!
We’re starting a brand-new mega series all about C#!

eBook Available

You can also get C# In Simple Terms as an eBook by becoming a paid subscriber. The eBook even includes a bonus chapter about asynchronous programming that was not published on the site. Become a subscriber today!

The Daily Design Pattern

In this Deep Dive series, we explore how to implement Software Design Patterns using C#.

Don't stare too long. Photo by George Pagan III / Unsplash

The introductory post for this series is here:

Design Patterns in C# - The Daily Design Pattern
Lately I’ve been on something of a design patterns kick, from realizing that patterns are tools, not goals[/software-design-patterns-are-not-goals-they-are-tools/] to developing andrecording an extensive course for my employer and my fellow programmers at mycurrent employer. It’s been enlighteni…

This series covers the following design patterns:

eBook Available

You can also get The Daily Design Pattern as an eBook by becoming a paid subscriber.

Modeling Practice

This Deep Dive series aims to give readers a change to practice their real-world modeling skills by taking known problems and designing them as C# applications.

One kind of real-world problem that must have a clearly-defined set of rules is board games. So, this series shows how to model certain board, card, and video games as C# applications.

China chess
Photo by Damian Patkowski / Unsplash

The games we have modeled so far in this series include:

Candy Land

Modeling Practice - Candy Land in .NET Part 1: Overview
Let’s build the classic children’s game Candy Land as a C# program!
Modeling Practice - Candy Land in .NET Part 2: Programming the Game
Let’s complete our C# model of Candy Land, and run it to show that it works.

Uno

Modeling Practice: UNO in C# Part 1 - Rules, Assumptions, Cards
Note: This post is the first in a three-part series based around modeling thecard game UNO [http://amzn.to/2aMn3ub] in a C# application. You may want to usethe GitHub repository [https://github.com/exceptionnotfound/UnoModelingPractice…
Modeling Practice: UNO in C# Part 2 - Player Behavior
Note: This post is the second in a three-part series which attempts to model thecard game UNO [http://amzn.to/2aMn3ub] as a C# application. Here’s Part One[https://www.exceptionnotfound.net/modeling-practice-uno-in-c-sharp-part-one-rules-assumptions-cards…
Modeling Practice: UNO in C# Part 3 - Final Steps and Playing The Game
Note: This post is the third in a three-part series which attempts to model thecard game UNO [http://amzn.to/2aMn3ub] as a C# application. Here’s Part One[https://www.exceptionnotfound.net/modeling-practice-uno-in-c-sharp-part-one-rules-assumptions-cards…

Minesweeper

Solving Minesweeper with C# and LINQ
Anybody who’s spent any time at a Windows machine in the last 26 years hasprobably played a few games of Minesweeper[https://en.wikipedia.org/wiki/Minesweeper_(video_game)]: I mostly work in the ASP.NET space, and I’d been wondering for a few weeks howfeasible it was to build a program that co…
Minesweeper in Blazor WebAssembly Part 1: C# Implementation
Let’s build the computer game Minesweeper using C# and Blazor WebAssembly! Sample project included.
Minesweeper in Blazor WebAssembly Part 2: The Blazor Component
Let’s build a Blazor Component so we can play Minesweeper with it!

Battleship

Modeling Battleship in C# - Introduction and Strategies
Let’s build Battleship as a C# program!
Modeling Battleship in C# - Game Components
Let’s build the C# classes for the board, ships, panels, and coordinates that we need to play our game of Battleship!
Modeling Battleship in C# - Playing the Game
Let’s complete our implementation of Battleship as a C# program and play a few thousand games!

War (card game)

Modeling the Card Game War in C# Part 1 - Background and Rules
Long time readers of this blog know that I’m a fan of board and card games, andspecifically of modeling them as C# executable programs. In the past, we’vemodeled Uno[/modeling-practice-uno-in-c-sharp-part-one-rules-assumptions-cards/], CandyLand [/simulating-candy-land-in-net-part-1-introduction…
Modeling the Card Game War in C# Part 2 - The Code
NOTE: This is Part 2 of a three-part series demonstrating how we might model thecard game War [https://en.wikipedia.org/wiki/War_(card_game)] as a C# program. Part 1 is over here[https://www.exceptionnotfound.net/modeling-the-card-game-war-in-c-part-1-background-and-rules/…
Modeling the Card Game War in C# Part 3 - Running the App
Our card-game-WAR playing C# app is done! Now we can test it, and prove that it works correctly and fairly... I hope.

Tic-Tac-Toe

Using Blazor WebAssembly and C# to Build Tic-Tac-Toe in .NET Core
Let’s build the classic kids’ game using Blazor, C#,and .NET Core! As always, there’s a sample project included.

ConnectFour

A Blazor Tutorial: Building Connect Four in ASP.NET Core
Let’s learn Blazor in ASP.NET Core 3.0 by building the classic childhood game ConnectFour!

Ticket to Ride

Modeling Ticket to Ride in C# Part 1: Intro and Game Rules
We’re starting a new C# Modeling Practice series, and this time it’s a classic board game: Ticket to Ride!
Modeling Ticket to Ride in C# Part 2: Classes and Board Setup
Let’s model the game board, destination cards, train cards and more with C# classes!
Modeling Ticket to Ride in C# Part 3: Finding Ideal Routes
Let’s go route-finding with our C# classes to determine how to get from A to B!
Modeling Ticket to Ride in C# Part 4: Player Claiming Routes
How does a player claim a route, or even know what colors they need to do so? Let’s make our players smarter!
Modeling Ticket to Ride in C# Part 5: Player Drawing Cards
Let’s have our players draw new destination cards and train cards!
Modeling Ticket to Ride in C# Part 6: Structure, Scoring, and Drawbacks
Let’s do the final bit of work to make our C# Ticket to Ride simulation complete!

Conway's Game of Life

Conway’s Game of Life (With Emojis!) in C# and Blazor WebAssembly
Let’s build the classic cellular simulation using C#, .NET Core, Blazor, and skulls! Or cats. Or aliens.

Yahtzee

Yahtzee in Blazor WebAssembly Part 1: The C# Model
Let’s build the classic dice game in C#, ASP.NET Core, and Blazor!
Yahtzee in Blazor WebAssembly Part 2: The Blazor Component
Let’s finish our Yahtzee implementation using Blazor, C#, and ASP.NET Core!

The Daily Software Anti-Pattern

As a counterpart to the Daily Design Pattern series, this series examine software anti-patterns and how to mitigate them.

Whoopsie!

The introductory post for this Deep Dive is here:

The Daily Software Anti-Pattern
A new mega-series is starting! Let’s learn about software anti-patterns, what they mean, and how to combat them.

The anti-patterns we discuss in this series include:

The Sorting Algorithm Family Reunion

This Deep Dive aims to explain and show how to implement many common sorting algorithms by imagining them as members of an extended family at a family reunion. In the process, we examine which of the algorithms are efficient and which aren't, and explain why this is. This series is quite possibly the nerdiest thing I have ever blogged about.

Guess who is who. "Family Reunion" by Mike Prince, found on Flickr and used under license

The introductory post for this Deep Dive series is here:

The Sorting Algorithm Family Reunion in C#
Welcome, dear readers, to a brand new Deep Dive series [/tag/deepdives/]! Thisone is quite possibly the nerdiest thing I have ever blogged about. It’s alsothe reason there hasn’t been as many posts as normal lately; I’ve been workingon it for nearly a month. Without further ado, welcome to The …

This series covers the following sorting algorithms:

Designing a Workflow Engine Database

This series explores how to make a workflow-style database in SQL. We discuss what tables and objects we need, how they are related to each other, and how requests flow through the engine.

Surprisingly, it's not as complicated as it appears.

You can start this Deep Dive series at Part 1 here:

Designing a Workflow Engine Database
What is a Workflow Engine, and what does it do? Let’s find out and set off on a Database Design adventure (Part 1 of 8).

The rest of the series includes the following:

Drawing with FabricJS and TypeScript

This series explores how to use the FabricJS library to make a drawing application in TypeScript.

You can start this series with Part 1: Intro, Goals, and Setup here:

Drawing with FabricJS and TypeScript Part 1: Intro, Goals and Setup
Let’s see how to start building a drawing canvas with FabricJS and TypeScript!

The rest of the series includes the following posts:

Diary of a Death March

Diary of a Death March is a series of short stories I wrote about a company that was forcing its employees onto a "death march". The stories are written from different points of view, and with different characterizations. This series is a work of fiction.

The posts in this series are: