Shawn McCool

Reasons Against Using Value Types in Domain Events

Domain Events are Super Ice

Domain events are frozen. They don't change. They're so cold that if an event needs to change we instead version up a new event and leave the old one alone.

They're SO cold in fact that they freeze whatever they touch. Freezing strings and shit is no big deal, because that's the . . .

Read More

April 12, 2019

Avoiding Unified Data Models

a talk about boundaries in architecture

Recently at the Dutch PHP Conference (DPC) I gave a talk on architectural boundaries.

I target Laravel developers as an audience and use some Laravel syntax. But the talk is not about Laravel and it doesn't require any prerequisite knowledge at all.

The talk is purely about architecture.

Read More

August 13, 2018

Social Media Extremism

becoming our ugliest selves

On social media voices carry and extreme voices carry the most.

We're exposed to much more extremism than we would normally be exposed to. It's natural to react to extreme positions by forming extreme positions.

We see some ridiculous thing that someone does in the name of civil rights and it becomes a little bit . . .

Read More

December 13, 2017

More Relaxed Typing with DVORAK

Excel at your most frequent activity.

Human Interface

In high-school I maxed out at 125 words per minute on a QWERTY keyboard. It didn't cross my mind that there were alternatives for another 10 years. I remained locked at that typing speed, using the same typing techniques that I nurtured as a child.

After some reflection, I concluded that I was often . . .

Read More

August 06, 2016

Event Sourcery

Introduction to DDD, CQRS, and Event Sourcing.

A few years ago, my associate Mitchell van Wijngaarden and I were looking for some techniques for handling an increasing amount of complexity in some of our applications. We ended up discovering Domain-Driven Design and interfacing with that community. This led us through a process that significantly improved both of us as developers and . . .

Read More

July 20, 2016


A comprehensive look at and around the pattern.

The Goal

The goal of this post is to contain as much information related to the ActiveRecord pattern as possible.

My motivation is in the fact that I've found it difficult to engage developers in analysis of this pattern due to political factors.

Do you want me to update something? Post in the comments and . . .

Read More

February 22, 2016

Domain Modeling

What is a Domain?

Software modules operate against a context. That context may be the rendering of windows, the construction of HTTP responses, database persistence, or the definition of business requirements.

The context of the problem in which a module is designed as a solution is called the domain. All applicable contexts . . .

Read More

February 22, 2016