It's one of the paradoxes of blogging that most every blogger (including myself) is sharing what they know right now (let's quietly ignore those who blog purely for traffic and vanity).
Since everyone is learning (it's essentially a prerequisite for this business), this can result in misleading, obsolete or simply low-quality information being shared just as much as good information.
Keep this in mind as you read any blog - including this one. How experienced is the writer? How well do they really know what they're talking about? Do they blog about their mistakes as well as their successes?
You should consider yourself encouraged to check my ideas for yourself. Keep the date in mind as well - in our fast moving field, even good ideas can become obsolete.
Sunday, January 25 2026
smart-code
Over a decade ago, a project manager at my work approached me with a proposal. You see, we had a minor quality problem, and he wanted us to do better.
Sunday, October 26 2025
admin
Digging through some backups, I found some additional old blog posts worth restoring.
Tuesday, October 21 2025
go
Table-driven tests are a cornerstone of good unit testing in any language, Go included. They allow us to group related test cases, making it simple to cover numerous inputs, outputs, and edge cases in a concise and readable way. When you have functionality that needs to be exercised in a variety of ways, a table test is often the right tool for the job.
Saturday, April 26 2025
testing
go
When writing a Go test, don’t just assert that an error occurred - assert that the error you have is the one you expect.
Sunday, March 31 2024
good-samaritan
The integration between the Windows Subsystem for Linux (aka WSL) and Windows works spectacularly most of the time, but occasionally things get a little troublesome. One such case was a change in browser behaviour that I noticed recently after upgrading to a new laptop.
| Code Gardening | 17 |
| Equality in .NET | 7 |
| Immutability Matters | 16 |
| Immutable Priority Queues | 15 |
| Psake | 17 |
| Technical Debt | 6 |
| Killing the Utility Class | 5 |
| Instance validation in C# | 12 |
| Redeveloping WordTutor | 42 |
| csharp | 115 |
| good-samaritan | 17 |
| powershell | 26 |
| professional | 88 |
| random | 37 |
| sharpen-the-saw | 51 |
| smart-code | 46 |
| testing | 25 |
| tips | 55 |
| ux | 33 |
| visual-studio | 19 |
| January 2026 | 1 |
| October 2025 | 2 |
| April 2025 | 1 |
| March 2024 | 1 |
| March 2023 | 1 |
| February 2023 | 2 |
| September 2022 | 1 |
| July 2022 | 1 |
| June 2022 | 2 |
| May 2022 | 2 |
| April 2022 | 1 |
| November 2021 | 1 |
| July 2021 | 4 |
| June 2021 | 3 |
| May 2021 | 3 |
| April 2021 | 2 |
| December 2020 | 1 |
| July 2020 | 1 |
| June 2020 | 2 |
| May 2020 | 4 |
| April 2020 | 3 |
| March 2020 | 4 |
| February 2020 | 4 |
| January 2020 | 4 |
| 2019 | 52 |
| 2018 | 65 |
| 2017 | 61 |
| 2016 | 40 |
| 2015 | 30 |
| 2014 | 14 |
| 2013 | 19 |
| 2012 | 25 |
| 2011 | 47 |
| 2010 | 56 |
| 2009 | 78 |
| 2008 | 89 |
| 2007 | 2 |
| 2006 | 10 |
| 2005 | 12 |
| 2004 | 21 |
| 2003 | 7 |
| 1998 | 1 |
| Factory methods and functions | 05 Mar 2023 |
| Using Constructors | 27 Feb 2023 |
| An Inconvenient API | 18 Feb 2023 |
| Method Archetypes | 11 Sep 2022 |
| A bash puzzle, solved | 02 Jul 2022 |
| A bash puzzle | 25 Jun 2022 |
| Improve your troubleshooting by aggregating errors | 11 Jun 2022 |
| Improve your troubleshooting by wrapping errors | 28 May 2022 |
| Keep your promises | 14 May 2022 |
| When are you done? | 18 Apr 2022 |
| Fixing GitHub Authentication | 28 Nov 2021 |
| Sharpen The Saw - August 2021 | 31 Jul 2021 |
| Gesticulation Driven Development (GDD) | 24 Jul 2021 |
| Magpie Driven Development (MDD) | 10 Jul 2021 |
| Sharpen The Saw - July 2021 | 03 Jul 2021 |
| Rockstar Driven Development (RDD) | 26 Jun 2021 |
| Distraction Driven Development (DDD) | 12 Jun 2021 |
| Sharpen The Saw - June 2021 | 05 Jun 2021 |
| Promotion Driven Development (PDD) | 29 May 2021 |
| Complaint Driven Development (CDD) | 15 May 2021 |
| Profanity Driven Development (PDD) | 01 May 2021 |
| Hype Driven Development (HDD) | 17 Apr 2021 |
| The Other Development Methodologies | 03 Apr 2021 |
| Don't be that person | 05 Dec 2020 |
| Weapons of mass (privacy) destruction | 04 Jul 2020 |
| Caching without Race Conditions | 13 Jun 2020 |
| Sharpen The Saw - June 2020 | 06 Jun 2020 |
| Automated Inbox Cleanup with PowerShell | 30 May 2020 |
| Don't Gloss Over Complexity | 16 May 2020 |
| Improved Caching | 09 May 2020 |