Eric Evans, creator of Domain Driven Design
Very interesting detour of how to take a well established concept like JodaTime and create your own set of abstractions.
I like his main points:
Produce tension with awkward examples
Generate variation. Look for 'productive' models
Play in code
Drill into one domain for a while
Novelty and overcoming legacy blindness
the choose of the language matters a lot: it is inspirational, it provides constraints.
Geeneric subdomains makes good practice grounds
Why so stable?
JodaTime is good enough. We stop searching
We are used to it; it feels natural
Our minds are captured, unable to imagine alternatives
Legacy blindness - specially when the legacy is good
The millisecond anchor - one of the awkwardness of JodaTime because which culture has these expectations?
Ideas: 1. String Time 2. Time Expressions
Practice breaking out of a familiar legacy model
Might even make a better time library?
Examples that show awkwardness
Generate lots of variations about the model (what are the things you hate?)
The main criteria to evaluate a model is usefulness
Is the model productive? Does it lead to other interesting thoughts?
Loose the connection with the Clock
Allen’s Interval Algebra. James F. Allen, 1983. A mathematical formalism of relations between time intervals.