Ruby Articles

If you are using an Object-Oriented language (writing code in a DSL can change things a bit, it depends on the DSL) you should specify and verify the objects themselves and not how they are implemented.

Slides from RailsCamp Hamburg 2011

When you are creating long-lived abstractions, you should consider using of the many good options of data types provided by Clojure and not just plain maps.