The most exciting feature of the upcoming Clojure 1.9 is clojure.spec, which delivers a game changer experience in a dynamically typed language such as clojure. With this new tool your code will be able to express constraints that are traditionally very hard to encode in traditional type systems, like describing a function that only accepts a sequence of strings of increasing length of which the third element starts with a capital letter. In this talk I'll start with the spec basics up to some of its advanced usages, from data validation to generative testing.