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