Adding the Clojure layer to Spacemacs provides great support for the language via CIDER, Clojure-mode, clj-refactor and lots of useful tools.

The Clojure layer also adds to the auto-completion layer, providing matches for anything currently defined in the current namespace. The yasnippets package also allows you to expand shortcuts for common Clojure code structures, eg. def, defn, let, require.

Using templates to create your Clojure projects can save you a lot of setup time and ensure your team is using the same base configuration and dependencies. There are templates on Clojars.org, however I’ll show you how easy it is to create your own with Leiningen.

I’ll create a simple template based on the leiningen default template, adding a section in the project.clj to give a custom propmt when run in the repl.

Templates used to be a Leinigen pluging called lein-newnew and its repo was the only doucmentation I found and was a little outdated. The plugin is now part of Leiningen and there are a few built in templates. There is also information via lein help new.

If you want to create a template in a more automatic way from a more complete project you created, take a look at the lein-create-template Leinignen plugin.

Light Table provides a great development environment for Clojure, ClojureScript & JavaScript. With a few tweaks and some of the many plugins you can make Light Table do even more. Here are a few of the tweaks and plugins I use for my development with Light Table.

After upgrading to Java 8, Clojure development seemed faster due to quicker REPL startup times. So when I saw a snapshot of Java 9 had been released I was hopeful that startup performance would be even faster.

As Clojure runs on the Java Virtual machine (JVM), each time you start a REPL then you wait for a new JVM to start. Other than this REPL startup, Clojure feels faster than developing with Java directly.

Here is how I set up Java 9 Snapshot on my Linux laptop (Ubuntu 14.10), it should be the same for any decent operating system.

When I teach people Clojure I use Light Table because it is really simple to use and its Instarepl gives instant feedback of the code as you type it. This feedback helps you understand Clojure quickly and gives you more confidence when coding.

As I do most of my Clojure development (and most everything else) in Emacs I really miss the excellent Emacs keybindings when I use Light Table. Luckily there is an Emacs plugin for Light Table, so here is a quick guide on how to install & use this Emacs plugin.

Sometimes its the little things that make a difference and after seeing how easily customise the Clojure REPL prompt with Leiningen I had a little hack with words, symbols and colours and came up with something nicer (in my opinion).

Leiningen is a project automation tool (think build tool and them some) that uses a Clojure macro to make it easy for Clojure developers to manage their project lifecycle.

A Clojure project managed by Leiningen uses a simple clojure file called project.clj which allows developers to define a whole range of stuff about their projects. To get started you only have to define a name, a version of Clojure and any dependencies in your project.clj and Leininge does the rest.

So lets take a quick look under the hood of Leiningen and its defproject macro to see what is going on.

Emacs is a really powerful tool for Clojure development, although without a guiding hand it can be a bit of a learning curve. Using the Emacs Live its really simple to get a fully featured development environment for Clojure. I will show you how to get Emacs Live installed and how to start using it for Clojure.