Jonathan Graham presents how to implement our own versions of the Clojure functions reduce, count, filter, map and pmap.
Bozhidar Batsov introduces CIDER, an interactive development environment for Clojure, discussing building dev tools on top of Emacs, the history of the project, current state and plans for its future.
Jessica Kerr talks about Clojure and explores the potential of contracts as the best-yet compromise between types and tests.
Tom Henricksen covers Design Patterns in Groovy, compilation configuration, mixing Java and Groovy, and calling other languages from Groovy. He shows how to call Scala and Clojure from Groovy.
Jessica Kerr covers some of the concurrency tools existing in JVM languages including ExecutorService, Futures, Akka actors, and core.async coroutines, providing advice on writing deadlock-free code.
David Tanzer introduces Clojure and ClojureScript, discussing the language basics and some libraries useful for writing real applications.
Stuart Halloway discusses the design of core.async and some of its capabilities: channels, put and take, go blocks, alts! and alts!!, timeouts, showing their use through code.
Christophe Grand tells Clojure stories full of immutability, data over behavior, relational programming, declarativity, incrementalism, parallelism, collapsing abstractions, local state and more.
Thomas Kristensen describes the overall architecture of Composer, a system for composing musing, showing how to build a system that achieves responsiveness while still being flexible.
Robert Martin argues that Clojure is a replacement for C with its simple syntax and minimal semantics.
Mario Aquino discusses the structure and organization of Clojure's Lisp syntax as well as special forms in the language for declaring data structures.
Glen Peterson uses the Expression Problem to compare refactoring in Java, Scala and Clojure, showing how traits minimize changes in Scala when an interface changes and how Clojure avoids some issues.