Software Development

Twenty-odd years of writing line-of-business software in .NET, and this is where I write up the bits worth passing on: the patterns I use every day and what they’re actually called, the performance problems I keep finding in code reviews, and the occasional gotcha that ruined a Friday.

No toy examples. Everything here comes from code that shipped.

Design patterns in real code

Most developers are already using half the Gang of Four catalogue without knowing the names. This series takes the patterns one at a time, each explained with an everyday comparison and a real example out of an application I work on.

  1. You're Already Using Design Patterns, You Just Don't Know Their Names
  2. One Screen, Many Searches: Strategy and Keyed DI
  3. I Called It a Factory Without Knowing If It Was One
  4. The Sale Doesn't Know About the Integration: The Observer Pattern
  5. The Base Class That Won't Let You Forget: Template Method
  6. A Builder That Stores Questions, Not Answers
  7. The Menu That Hides Itself: The Composite Pattern
  8. One Endpoint for Everything: The Adapter Pattern
  9. An Action, and the Question of Whether to Offer It: The Command Pattern
  10. The Chain That Knows When to Stop: Chain of Responsibility

Merging two systems

Two installations of the same product, a decade of separate development, and a decision to run them as one. What that actually takes, in the order the foreign keys make you do it.

  1. Two Systems That Drifted Apart: Merging Databases With a Common Ancestor
  2. Before You Can Migrate, You Have to Build Somewhere to Put It
  3. Writing SQL as if Both Databases Were One: Synonyms
  4. Never Compute an Id, Look It Up: Mapping Tables
  5. The Order Is Not Up to You: Migrating in Dependency Order
  6. One Flag Between a Rehearsal and the Real Thing
  7. What Went Wrong Anyway

.NET

The things that are easy to get wrong, explained without the computer science.

SQL Server

The ones that look right, run clean, and quietly give you the wrong answer.

Building this site

Jekyll and GitHub Pages bits, mostly written up because I’d forget them otherwise.