The Pallet Workshop at Clojure/West was cancelled. We continue to offer on-site training. Contact us if you are interested.

Registration is now open!

We are very excited to announce that Clojure/West will be hosting a 2-day Pallet training session on March 14-15 with both Hugo Duncan and Toni Batchelli as instructors. 

Clojure/West will be held in San Jose on March 16-17 and registration for the conference is also open. Make sure you book your hotel rooms soon for an exceptional discount.

Below is the official announcement:

Cost: $1200 ( Sign up before Jan 27th and get $200 off!)

Included: breakfast, lunch, breaks, power, wifi


Instructors: Hugo Duncan, Antoni Batchelli



  • Basic knowledge of Clojure is assumed (this class will not teach Clojure)
  • Comfortable with installing and building open-source software.
  • Knowledge of configuration management systems is not assumed.
  • Bring your own laptop (computers are not provided).
  • You should have the following software installed prior to the class:
    • Clojure 1.3
    • Preferred editor set up for Clojure
    • Leiningen

Course Description:

Learn to use Pallet from the library's primary developers.

If you care about building infrastructure as code, for deployment locally on fixed infrastructure or to public and private clouds, then Pallet is the tool for you.

Pallet is a library for building infrastructure automation. Built on many of the principles of Clojure, Pallet uses functional programming techniques, such as composition, to support creating high level abstractions over different cloud providers, OS distros and versions, package managers and tasks. Using Pallet, you will code your infrastructure to directly express the components of your system, so that it can managed and scaled easily across OSs and cloud providers.

Pallet lets you:

  • Apply all your software development skills to managing your infrastructure.
  • Write re-usable infrastructure components, that can be used from development through to production, on local virtual machines, or on the cloud.
  • Make infrastructure and deployment an integral part of your applications.
  • Eliminate the low level work of maintaining the connections between the servers in your architecture by leveraging Pallet's first class support for discovering connection details at configuration time.

What will you learn?

How to code your infrastructure in Pallet. The course will be hands-on. You will learn Pallet by starting and configuring virtual machines, on a real cloud, implementing some common components.


  • Functional infrastructure: Learn how stateful infrastructure can be built using pure functional programming.
  • Actions: Pallet's actions provide a rich library of functions that form a language used to write code that will run on remote machines. Actions are designed to work across the whole range of operating systems supported by Pallet, giving you freedom to move between operating systems and versions.
  • Crates: Build high level abstractions by writing crates, which are clojure functions that call any mixture of actions or other crate functions.  You are familiar with building abstractions using functions in Clojure, and the same techniques are used when you write crates in Pallet.
  • Phases: when configuring and running your infrastructure, there will be many operations you will wish to automate.  We'll show you how Pallet's phases provide an open framework for you to automate as many tasks as you need, while taking full advantage of the composability of pallet.
  • Servers and groups: server-spec's in Pallet provide a mechanism for directly describing the configuration and operation of (software) server components in your architecture. group-spec's allow you to map the server-spec's to individual nodes. Using server-spec's, you will see how to code your infrastructure on a single vm, and then use the same server-spec's to deploy to a horizontally scaled cloud environment.
  • Stevedore: For some special cases, Pallet's actions may be too restrictive, and for these cases Pallet allows you to write script using clojure, enabling the use of all the rich data available about you infrastructure in arbitrary scripts.
  • Upcoming: Review the driving forces behind enhancements that will be coming to Pallet, and discuss how these will benefit you.