Resemblance and Likeness Testing Patterns

The Resemblance and Likeness patterns improve the readability and diagnosability of developer tests.

September 15, 2023 · 5 min

Patterns in practice

Patterns are generally taught in isolation (separation of concerns), but application of patterns is often highly interconnected. Here I’ll show how my most used patterns come together as a design system.

July 9, 2021 · 3 min

The Place for Ambient Context

Ambient context is a useful design pattern, but a recent project got me thinking about how universal this context should be.

April 30, 2021 · 3 min

Static Member Enums Update

I previously wrote on how static members on a struct work as a more extension-friendly enum. This pattern has gotten even better as of C# 9.

April 16, 2021 · 2 min

Service Locator Hides Circular References

Many have discussed the issues with the service locator anti-pattern for dependency management. However, I’ve repeatedly run into an issue that I haven’t seen discussed yet: it causes circular references.

March 12, 2021 · 3 min

Building a Monad Intuition

Like most people, I’ve found monads hard to pin down. I know things I can do with them, but I don’t understand them at an intuitive and flexible level. Here I’ll try to build my mental model by relating to other tools.

February 19, 2021 · 7 min

Ports and Adapters

Understanding Clean Architecture has transformed my approach to architecture. Now I feel like my understanding has evolved one step further by understanding its parent pattern’s name, Ports and Adapters.

December 19, 2020 · 4 min

Notification Refactor Case Study

A general design for integrating notifications (email, text, push, etc) has long eluded me. However, a recent refactor using the concepts of Synthesizing Project Organization Methods has settled my search. Here I’ll explore my refactoring experience and why the conceptual shift is generically more stable.

August 14, 2020 · 7 min

Why Static Structs are Better Than Enums

C# (and Java) offer a type call enum (aka enumeration). It represents a fixed list of possible values and is a powerful tool for communicating intentions through the type system. However, a recent legacy project forced me to face the shortcomings of enums and realize an even more powerful pattern, struct named constants.

August 7, 2020 · 6 min

Rediscovering Options - Design Matrix

I got to thinking about the Rediscovering Options post. The volatility analysis portion is an important artifact of my design process. The current version requires reading the whole list to comprehend the results. How could I make it better?

July 31, 2020 · 5 min