Intro to Clojure

Dates: November 14-15th, 9 am - 5 pm (2 days)
Instructors: David Chelimsky (@dchelimsky), Craig Andera (@craigandera)
Price: $300 (includes lunch both days)

This course is intended for new Clojure developers with some programming experience in another language. Sessions will include a mixture of lecture and hands-on guided labs.

The goal of the course is to achieve a thorough understanding of the basics of Clojure syntax and usage. Topics will include the Clojure syntax and evaluation model, collections, sequences, functions, flow control, namespaces, records, protocols, multimethods, state, and concurrency.

The course covers two full days (Sat Nov 14 and Sun Nov 15, 9-5 pm) and includes lunch, snacks, and beverages both days (all other meals on your own). Wifi and power will be provided. Attendees are expected to bring a laptop - instructions will be sent later on workshop setup.

Datomic Conf

Dates: November 15th, 9 am - 5 pm (all day)
Price: $40

Datomic Conf is a 1-day symposium covering the theory, architecture, and practical applications of Datomic, presented by the Datomic team. Sessions will be suitable for both current users of Datomic and those looking to learn more about it.


Attendees are strongly encouraged to watch the Day of Datomic videos ahead of time.
9:00-11:30 am
Why Datomic?
Stuart Halloway
In this session, Stuart Halloway will introduce Datomic and the problems that it solves. You will see:
  • A database that actually remembers where it has been, via datoms.
  • The unparalleled flexibility that comes from Datomic's universal schema.
  • How Datomic simplifies database architecture into three separate layers: peers, transactors, and storage.
  • Automatic caching in your application process, with no configuration or pre-planning.
  • How ACID transactions facilitate reasoning about your data.
  • The expressiveness of attribute schema in describing a wide variety of data domains.
  • The importance of a powerful query language (Datalog).
  • The extensions to logic that make query sing: functions, aggregates disjunction, and negation.
At the end of this session, you will know the key capabilities that distinguish Datomic, and where and how you might want to use Datomic in your own designs.
11:42-1:00 pm
On your own
1:00-2:00 pm
Lightning Talks
2:00-2:45 pm
Understanding and Using Reified Transactions
Tim Ewald
Datomic models everything in terms of datoms: your schema, your domain, and even your transactions. This talk introduces reified transactions and explains how you work with them. Then it explores how they can be used to track data provenance, ensure transaction idempotency, and help implement work that can't be completed in a single transaction.
2:45-3:15 pm
Afternoon snack
3:15-4:00 pm
Clients in Control
David Nolen
Heterogeneous UI clients introduce a surprising amount of incidental complexity into distributed software applications. A good portion of this complexity arises from an overreliance on out-of-band information for correct state transfer. By shifting control just a little bit into clients we can deliver dramatic reductions in our complexity budget. We'll see how Datomic is particularly well suited for designing systems that give clients more control.
4:00-5:00 pm
Datomic Team
5:00-7:00 pm
On your own
7:00-10:00 pm
Datomic Conf Gathering
Light food provided, cash bar

Property-based Testing With test.check

Dates: November 15th, 3 pm - 5 pm (2 hrs)
Instructor: Gary Fredericks (@gfredericks_)
Price: $150

test.check is a Clojure property-based testing tool inspired by QuickCheck. The core idea of test.check is that instead of enumerating expected input and output for unit tests, you write properties about your functions that should hold true for all inputs. This workshop will cover the use of data generators to create random input data, the definition of properties, how shrinking works, and advanced property modeling techniques.