0345 4506120

Advanced Clojure

Are you an experienced Clojure developer ready to take their skills to the next level? Then this course might be right for you! Learn to use Clojure's core function library to build up elegant programs.

About the Authors

Jon Pither

Jon Pither

Jon Pither has led development of large Clojure projects at an Investment Bank, an online newspaper website, a major property portal, and is now working on various other Clojure projects. Jon is a co-founder of JUXT, a consultancy specialising in using Clojure.

Malcolm Sparks

Malcolm Sparks

Malcolm has been writing Clojure since 2009, has led Clojure teams and been involved in many successful Clojure projects. He is an experienced Clojure trainer and has written numerous open-source libraries including bidi and yada. He is also the founder of JUXT, a consulting and software development firm that uses Clojure exclusively.


Are you a developer who already has some working knowledge and experience with Clojure? Are you ready to take your skills to the next level? This course is for you!

We don't currently have any courses listed for Advanced Clojure, would you like to view all courses for Software Testing?

Learning Objectives

Learn how to:

  • Create elegant programs from the building blocks provided by Clojure's core function library.
  • Utilise existing Java APIs from your Clojure programs
  • Write programs that use multiple threads without the risk of dreadlocks and race-conditions



Some working knowledge and experience working with Clojure.

Bring your own hardware

To participate in this Advanced Clojure course you are required to bring your own laptop so you can develop with your own tools and languages.

Course Content

1. Prismatic Schema

  • Introduction - why we recommend schemas as ’data firewalls’
  • Writing and composing schemas
  • Validation
  • Coercion

2. Application structure with the Stuart Sierra Component library

  • Intro to the Component library - what and why
  • Project skeleton
  • The system
  • Adding custom functions in the dev namespace
  • Schema integration to protect integrity
  • Dos and Don'ts – Use functions, Don’t put (too much) code in records
  • Testing – Testing with component – Testing without component - testing individual functions

3. Transducers

  • Basic transducers: composing map, filter & mapcat
  • Channels, sequences & eductions
  • Stateful transducers

4. core.async

  • channels and go-blocks
  • »! or >! or put!
  • mult / tap
  • pub / sub
  • using transducers
  • Dos and Don’ts

5. HTTP services

  • Building HTTP services with yada
  • Swagger API documentation
  • Asynchronous processing of inbound and outbound bodies
  • Parameter coercion
  • Security (authentication and authorization)

6. ClojureScript with Om Next (basics)

  • Building an application in Om Next
  • Integrating HTTP requests and Server-Sent Events

7. File processing

  • Techniques for dealing with large files (jackson, clojure.data.xml, etc.)
  • SAX

Privacy Notice

In order to provide you with the service requested we will need to retain and use your contact information in accordance with our Privacy Notice. If you choose to provide us with this information you explicitly consent to us using the information as necessary to provide the request service to you. If you do not agree please do not proceed to request the service from us.

Marketing Permissions

Would you like to receive our newsletter and other information on products and services which we think will be of interest to you by email. We will always treat your information with care and in accordance with our Privacy Notice. You are free to withdraw this permission at any time.


Online Courses

You may prefer an online course if you are looking for a flexible and cost-effective solution. Online courses allow you to study at your own pace, at a time that suits you.

We have the following eLearning options available:

Our Customers Include