The main feature of Clojure and other lisps that jump out to most people is all those parentheses. In this workshop we’ll put them to good use by exploring what they enable – sophisticated macros for compile-time programming. We’ll introduce the the basic concepts of lisp macros, Clojure’s tools for creating them, and work through a series of increasingly sophisticated exercises, building macro-writing skills and learning best practices for when, and when not, to use them.