Talks
Events

Clojure/conj 2014

Talks

Variants are Not Unions

Some of the most confounding design problems occur when a value can be more than one type of thing. Variants, a.k.a. tagged unions, are an elegant solution to this problem that is not supported in an obvious way in Clojure and is not supported in ...

Jeanine Adkisson

Clojure

Datomic

Generating Generators

Property-based testing provides good test coverage and automatic shrinking of failure cases. However, coding universal properties with the test.check generator combinators is somewhat of an art. In many cases, it's easier to start from a declarati...

Steve Miner

Clojure

Helping voters with Pedestal, Datomic, Om and core.async

Democracy Works has been using a combination of Pedestal, Datomic, Om and core.async to build software to help voters know the status of their mail-in ballots. And we're ready to condense months of work to under an hour. We will write (on stage...

Nathan Herzing, Chris Shea

Clojure

Datomic

Cursive: A different type of IDE

Cursive is an IDE for Clojure, based on the IntelliJ framework. In contrast to the majority of Clojure development environments, Cursive uses static analysis of the source code to work its magic rather than taking advantage of the REPL. IntelliJ a...

Colin Fleming

Clojure

Unlocking data-driven systems

It is becoming increasingly common to see Clojure-based systems express their primary interactions with data (e.g. Datomic queries) - but what's the rationale? This talk analyzes the merits of that design decision, the qualities that emerge, an...

Paul deGrandis

Clojure

Datomic

Inside Transducers

Rich Hickey, the author of Clojure and designer of Datomic, is a software designer with over 25 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and finger printing, database desig...

Rich Hickey

Clojure

Always Be Composing

The Clojure ecosystem, we're told, is made up of small, composable libraries. In practice, though, it's all too common to find that two libraries simply will not cleanly compose. This typically will lead to another library that does the same thing...

Zach Tellman

Clojure

Making Games at Runtime with Clojure

Games are a modern art form, and like other artists, game designers need to experience their work as they create it. This talk will explore the benefits of making games "at runtime". Through both abstract discussion and concrete demonstration, we ...

Zach Oakes

Clojure

Exploring four hidden superpowers of Datomic

This session will explore four common problems, and the unique and surprising tools Datomic provides to solve them elegantly: HTTP caching - How to generically generate and validate Last-Modified and If-Modified-Since headers Audit tra...

Edward Wible, Lucas Cavalcanti

Clojure

Datomic

The evolution of the Emacs tooling for Clojure

A session dedicated to the evolution of CIDER (the Clojure dev environment for Emacs) and all the new features that have been added since I took over the project exactly one year ago. The talk would examine briefly the shortcomings of the old "...

Bozhidar Batsov

Clojure

Stewardship: the Sobering Parts

Programming language design is not just about type theory and grammars. For evolving a mature programming language like Java, it is about finding ways to add capabilities while maintaining compatibility, both with existing code and with the expect...

Brian Goetz

Clojure

Generative Integration Tests

Functional programmers are already aware of generative testing libraries like test.check as a supplement or replacement for traditional unit testing. Since unit tests alone cannot cover an application, integration tests are typically used to assis...

Ashton Kemerling

Clojure

Cló: The Algorithms of TeX in Clojure

Cló is a typesetting library for Clojure, implementing the core typesetting algorithms of TeX as composable functions. Although much work remains before Cló is useful in practice, even at an early stage it is instructive, providing interestingly c...

Glenn Vanderburg

Clojure

JVM Creature Comforts

Far from its history of focusing on one language, the JVM has evolved into a platform for hosting all sorts of guest languages whose execution semantics don’t necessarily align with Java’s. Hosting dynamic languages like Clojure poses unique chall...

Ghadi Shayban

Clojure

Om nom nom nom

Have you ever needed an easily customisable dashboard? Or needed to visualise data in a browser but was overwhelmed by d3.js? This talk will cover basics of React and Om, some data visualisation libraries and techniques, ways to handle live data a...

Anna Pawlicka

Clojure

Developing Music Systems on the JVM with Pink and Score

Pink and Score are two libraries for music systems development, written in Clojure and targeting the Java Virtual Machine. Pink is a low-level library for audio signal generation and processing, event handling, and audio engine design. It comes wi...

Steven Yi

Clojure

Persistent Data Structures for Special Occasions

Clojure(Script) programmers know the power of sophisticated data structures; after all, the built-in suite of persistent data structures is a major factor contributing to the elegance with which complex ideas can be expressed in Clojure. This pres...

Michał Marczyk

Clojure

ClojureScript

Applying the paradigms of core.async in ClojureScript

Applying the paradigms of core.async in ClojureScript In this talk you’ll see a Clojure program that visually demonstrates Clojure’s concurrency semantics and then see how to solve the same underlying concurrency problems using core.async. You’...

Julian Gamble

Clojure

ClojureScript