Jason Lewis By Jason Lewis • December 17, 2014

Clojure/conj 2014 in Five Talks

By Jason Lewis and Milt Reder

We were fortunate to be able to attend Clojure/conj this year in Washington, D.C. Below you will find some commentary on our five favorite talks followed by some highlights from the conference.

Read the post, then click on the titles to go directly to the videos.

Zach Oakes - Making Games at Runtime with Clojure

Zach Oakes is an amazing guy. In his talk he talks about how he pivoted his life from the lucrative world of cryptography and steganography to teaching computer science through game development. He's produced several open source projects to simplify onboarding, including the Nightcode IDE, Nightmod, a tool for making live-moddable games, and the play-clj library to support easy game development.

 He's currently teaching programming at his local library (and not getting paid for it), so you should fund him on Gratipay.

Rich Hickey - Inside Transducers

As usual, Rich's keynote is a little hard to summarize without getting into technical minutiae. In fact, if you haven't seen his Strange Loop talk on transducers, you might want to go back and watch that one first. Now that you have plans for the next two hours or so, we'll try to briefly explain why these are cool.

Functional programming languages generally include powerful higher-order functions for manipulating collections. Especially Lisp. Especially especially Clojure.

The most common ones are functions such as map, which given a function f will map than function over a collection, and reduce, which will apply a function to each element of a collection, returning the production of combining them. So for instance, (map inc [1 2 3]) would map the inc(rement) function over the vector and return [2 3 4]. (reduce * [1 2 3]) would reduce the collection with the * (multiply) function, and return 6.

Transducers let us write that (map inc) or (reduce *) or (filter odd?) piece, without supplying a collection, and get back a transducer, reducing function transformers that we can compose together.

Okay, that's probably a lot for this post. Watch the videos, it'll make sense eventually.

Lucas Cavalcanti & Edward Wible - Exploring Four Hidden Superpowers of Datomic

Lucas and Edward are building a bank from scratch in Brazil, using Clojure and Datomic. Their company, Nubank, netted 14.3M from Sequoia. In this talk, they explain why Clojure (and particularly Datomic) provide an ideal basis for building financial software, whether that's the temporal component of Datomic or its transactional integrity, or machine learning applications for underwriting and fraud detection.

Bozhidar Batsov - The Evolution of the Emacs Tooling for Clojure

We both love the GNU Emacs text editor, and Bozhidar Batsov (Bug for short) has contributed some amazing tools to the Emacs/Clojure communities, including Prelude, a batteries included set of default configurations to get started with Emacs, and CIDER, which turns Emacs into a powerful IDE with an integrated Clojure REPL.

Bug talks about future developments for CIDER and cider-nrepl. Exciting stuff for the world of Emacs and Clojure.

Brian Goetz - Stewardship: The Sobering Parts

This was the closing keynote of the conference, and it was incredible. If you only watch one of these talks, watch this one.

The JVM has been around since 1995, and in that time has evolved significantly. With over 9 million developers, change happens incrementally, in order to support extant code while making progress possible. Brian talks about changes coming in Java 8 and 9, and some of the design decisions supporting them. Two of them are especially interesting.

First, it's been public knowledge that Java 8 is getting lambda expressions for some time. What we didn't know is that the Java 8 lambdas are actually syntactic sugar over interfaces and anonymous inner classes.

Second (and this is potentially huge) is the removal of what Brian called a "stupid security model" in Java 1.0. Since the beginning, Java's security model has been based on frame counting, to prevent frame injection. What this means for developers (and especially for a Lisp like Clojure) is that functions can't re-use stack frames, so tail call optimization is impossible on the JVM. With this change (coming in Java 9, I believe), we might start to see tail call optimization on the JVM. Not guaranteed, but at least possible.

Around the Conference

Like all good conferences, Clojure/conj threw an awesome party. This year it was at the National Museum of Crime and Punishment, one of the best interactive museums we'd never heard of. So in addition to free drinks and incredibly geeky conversation, we got to crack safes, get our fingerprints taken, and shoot rifles (not real ones).

The Unsessions were also great. Stu Halloway and Tim Ewald did an unconference session on Datomic, the database technology that underpins a lot of our infrastructure. It was great getting to have a live Q&A with the folks who actually built the tech you're running your business on.

All in all, one of the best dev conferences we've ever been to.

If you're interested in Clojure but couldn't make it to the conj, all of the talks are available on the Clojure/conj 2014 YouTube playlist, and don't forget Yet Analytics hosts the Baltimore Clojure Meetup the third Tuesday of each month!

Subscribe for Weekly Updates

Posts by Tag

see all

Popular Posts