by Chris Houser
If you've done much work in any language with polymorphism, you've probably encountered the expression problem, whether you knew its name or not. Chances are even come up with a solution or two yourself. I'll define the expression problem, demonstrate some common solutions, then dig into how Clojure's multimethods and protocols each solve the problem while avoiding weaknesses of other solutions. Along the way you'll get a sense of how Clojure's approach to datatypes differs from classic object-oriented languages.
by Bryan Weber
This talk is not only for Ninjas! One of the most frequently cited benefits of Clojure is being able to take advantage of the Java libraries and ecosystem. This talk will cover calling Java from Clojure and just as importantly calling Clojure from Java. Any ninjas that attend will come out of the session knowing how to use Clojure on a Java project without being detected... well, almost anyway.
by Jim Duey
Writing applications that are distributed across multiple machines implies sending messages between the different logical portions of the code. The book "Enterprise Integration Patterns" went a long way towards documenting the various standard ways this message passing could be envisioned. Libraries like Apache Camel provide concrete implementations of these ideas, but have limitations that come from the languages they are implemented in or target.
I introduce a library, called Conduit, that provides a clean conceptual framework for thinking about and composing distributed applications. EIP patterns can easily be constructed, reasoned about and connected using a small number of basic operators that hide the complexity of sending and receiving messages across various transports. The library can be extended easily to implement any transport that a user might require. An AMQP transport will be demonstrated and methods to extend to other transports explained. Establishing a foundation for thinking about distributed applications is the primary thrust of the talk so that developers will have a different perspective to approach such problems with.
You should attend if you want to stop doing distributed and multi-threaded apps the "hard way". This talk will show you a better way of thinking about and then implementing your designs.
by Adrian Cole
This session will overview cloud provisioning tools written in Java and Clojure. First, we'll overview general provisioning concerns and how devops relates to the java landscape. We will show examples that work on several clouds via use of the jclouds framework. Examples will include using Whirr to manage Hadoop and Zookeeper clusters, Chef to manage all of your cloud node configuration, and Clojure for ad-hoc cloud administration tasks.
by Nathan Marz
Cascalog is a tool for querying data on Hadoop with Clojure in a concise, expressive, and highly readable manner. Cascalog combines two cutting edge technologies in Clojure and Hadoop and resurrects an old one in Datalog. Cascalog is high performance, flexible, and robust.
Most query languages, like SQL, Pig, and Hive, are custom languages -- and this leads to huge amounts of accidental complexity. Constructing queries dynamically by doing string manipulation is haphazard and leads to further complexity such as SQL injection attacks. The nature of Cascalog being a domain specific language in Clojure avoids these accidental complexities and allows a programmer to manipulate queries as first-class entities within the language. The Datalog syntax of Cascalog is simpler and more expressive than SQL-based languages.
Besides being a valuable tool in itself, Cascalog is a demonstration of the power of the Clojure programming language. Building an integrated query language like Cascalog is just not possible in any other language.
This talk will include a live demo of Cascalog.
by Ryan Senior
Determining what RDF repository to use for a project can be a daunting task. With so many repository choices, benchmarks and usage scenarios, where do you start? This talk discusses how Revelytix answered that question. The talk will cover the test framework written by Revelytix in Clojure, including a language for defining tests, a harness for executing the tests and using CouchDB to store the results. Example Clojure code will be included along with a discussion around the available RDF benchmarks. The talk will also discuss the test harness using EC2 instances for cheap performance testing and how we interpreted those results using Incanter.
14th–15th October 2010