Episodes
In this episode, I introduce the stratified design lens, which talks about how and why we split things into layers.
Published 09/25/23
Published 09/25/23
In this episode, I introduce the time lens, and I posit a law about representing time in complex domains.
Published 09/19/23
In this episode, I introduce the volatility lens, which seeks to help us write code that deals with a changing world.
Published 09/11/23
In this episode, I introduce the architecture lens, its questions, and its goal of modeling architectural domains to manage complexity.
Published 07/31/23
In this episode, I introduce the executable specification lens, its questions, and its goal of getting to runnable, testable code as quickly as possible.
Published 07/24/23
In this episode, I introduce the composition lens, its questions, and its goal of figuring what's true when you perform multiple operations in a row.
Published 07/10/23
In this episode, I introduce the operation lens, its questions, and its goal of capturing the use cases of your software.
Published 07/03/23
In this episode, I introduce the data lens, its questions, and its goals of capturing relationships among data values in data.
Published 06/26/23
In this episode, I introduce the domain lens, its questions, and its goal.
Published 06/19/23
In this episode, I compare executable specifications to UML, DDD, and software design.
Published 06/12/23
I've found a better title for my book: Executable Specifications. Listen to find out why it's better.
Published 06/05/23
I'm organizing my new book in terms of lenses. Each lens focuses our attention on one important aspect of software design. In this episode, I briefly introduce each lens.
Published 05/29/23
I talk about the progress I've made on my book and why I'm throwing it away and starting over.
Published 05/22/23
I give another reason why I don't encounter so many type errors in Clojure.
Published 05/15/23
Watch the creation of a simple refactoring to turn functions into data.
Published 05/08/23
One important skill in domain modeling is learning to see the semantics of your language, past the habits you've developed. To do that, it helps to see the same example in multiple languages. So how do I show examples in multiple languages without expanding the size of my book?
Published 04/24/23
An isomorphism is a one-to-one mapping from two sets, and encoding your domain model involves finding a mapping between the real world and your code. So does domain modeling involve isomorphism?
Published 04/17/23
Domain modeling also works after you've already got lots of code. How can we apply domain modeling analysis to existing data structures?
Published 04/10/23
We discuss the commutative property, why we use it, and three different possible meanings.
Published 02/20/23
We look at several examples where the associative property gives us expressive power.
Published 02/13/23
We describe a three-step process for discovering conceptual models.
Published 01/30/23
I discuss the closure property, which creates operations that can be nested. It's one thing that makes an API feel like a DSL.
Published 01/23/23
What do I mean by algebra? And how do we get from level 0 to level 3?
Published 01/09/23
All sophisticated models need to include time. We discuss two main ways to do that.
Published 12/26/22