Your current filters are…
by Neal Ford
Everyone who has used Clojure for more than 5 minutes realizes that it's the best thing since puppies and double rainbows. So why hasn't it dominated the programming landscape? And, more importantly, what is it going to take to make everyone else realize what many of us already have? This talk outlines plans, strategies, and plots to finally get the rest of the world up to date. For your convenience, I tag each idea with #hashtag to facilitate arguments over drinks later.
by David Nolen
When designing functions that can leverage more than the type of the first argument, the Clojurian reaches for multimethods. Yet after some experience, he/she might realize that multimethods have considerable limitations, particularly the closed nature of the dispatch function itself. How can we fulfill the promise of open extension? Predicate dispatch as described by Craig Chambers and Weimin Chen seems promising, but their implementation hardwires many important details. By leveraging the literature around high performance pattern matching compilation as found in Standard ML, OCaml, and Haskell and by driving the compilation with a logic engine, we can achieve a fully open predicate dispatch system with considerable performance gains over multimethods.
by Keming Labs
In this talk I expose some of some of the insights I gathered while turning an inherently linear process (parsing) into a sublinear (bestcase logarithmic) process. This is a tale of datastructures (featuring 2-3 and fingertrees), inversion of control, twisted memoization strategies, profiling and optimizing.
A unifying principle of Clojure's design is expressing programs in terms of a few universal abstractions such as functions, maps, and sequences. Such unification allows us to apply Clojure's powerful library to diverse problem domains and to compose programs that cross these domains. We?ve previously seen this principle applied to HTTP servers and runtime exceptions. In this talk we examine the traditionally-overlooked area of logging in light of the unifying abstractions of functions, maps, and sequences. Treating logs as a sequence of maps and log analysis as the application of functions over map sequences allows logs to become an enormously powerful and general tool for metrics, analytics, alerting, and debugging in production systems. In additional to a general discussion of logs-as-data, we examine the paradigm in detail for Clojure applications on both the producing and consuming sides. On the producing side, we show how a Clojure application can be instrumented to capture log data and to emit it in a way that is orthogonal both to the application's execution environment and to the one or more possible consumers of the log sequence.
On the consuming side, we discuss the Pulse service. Pulse is a distributed log consumer, analyzer, and aggregator, written in Clojure, that processes the log firehouse from the Heroku cloud platform and uses it to power a real-time Heroku operations dashboard.
by Chas Emerick
Some of the most challenging problems that programs can face include classification, prediction, and making decisions in the face of messy or incomplete observations, data, or understanding. Bayesian networks provide a basis for implementing solutions to many of these sorts of problems, and Clojure offers excellent raw materials for building them. This talk will briefly introduce the concepts of Bayesian probability and networks, demonstrate the usage of an open source generalized Bayesian network modeling library, and discuss its implementation - highlighting the Clojure facilities that made it possible.
My ideas are naturally about Clojure and Android. The first is primarily about the technical challenges to making Clojure a first-class language for Android development and would appeal primarily to developers who are interested in hacking the language or are interested in lower-level language details. This talk would first start with some background on the Android platform and how it differs from a traditional Java stack. The next part would concentrate on how I got Clojure fully working, including dynamic compilation, on Android. I would then talk about how the change from 1.2 to 1.3 affected Clojure on Android and conclude with my thoughts on what barriers are left to making Clojure a first-class choice for Android development.
by Rich Hickey
10th–12th November 2011