Reactive Extensions in the Cloud -- Clojure, Java, and All the REST of That
Track: (Post)FunctionalLocation:Seacliff A/BAbstract:
In bringing up Netflix's RxJava Clojure language adapter, I discovered parsimonious use for all of Clojure's agents, atoms, refs, futures, and promises. The only one of Clojure's concurrency constructs that didn't naturally arise in my application was Dynamic Var. Before this experience, I might have characterized Clojure's collection of concurrency primitives as a grab-bag; after, I realized that it's a minimal, complete set of interoperable constructs (physics analogy: a complete set of commuting operators). In this live-coding talk, I walk through my discoveries in thematic contexts: growing and shrinking collections, implementing distinct and distinct-until-changed, working famous exercises. I end with speculations on mixing Rx with mini-Kanren (a.k.a., clojure.core.logic) and on hosting large reactive computations in the cloud.