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.
- You're Already Using Design Patterns, You Just Don't Know Their Names
- One Screen, Many Searches: Strategy and Keyed DI
- I Called It a Factory Without Knowing If It Was One
.NET performance in plain English
Why the code feels instant on your machine and falls over on real data, explained without the computer science.
- Lists, LINQ Where and Dictionaries — .NET Performance in Plain English
- Async/Await Does Not Create New Threads
Gotchas
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.