Screencasts, talks and tutorials on the Clojure programming language.
NYC Clojure 7/20/2011
Lighting Talk
Lightning Talk
A quick review of what programmers have to say about simplicity might lead you to the following (incorrect!) conclusions: every language/design approach/tool under the sun lays claim to simplicity, usually as a key virtuesimplicity means many different things and is so subjective as to be worthless In fact, simplicity is objective. It has a definition, and an etymology, that are very useful to software developers. In this talk, we will: cut through the noise to the definition of simplicitydemo...
Everyone is probably familiar with the basic Leiningen workflow: new, deps, test, swank, etc. But there's more to our resourceful friend than meets the eye. Learn how to customize Leiningen for your project and how to teach it new tricks through plugins.
Ring is a tool for writing web applications in Clojure. It provides some functionality itself, but also acts as a binding between various other Clojure web libraries. In this talk I discuss how the Ring spec enables this interoperability, show examples of Ring-based libraries, and discuss the emerging Clojure web development ecosystem. I suggest that web development with Ring is an example of the more general idea of composable, functional abstractions.
In this talk, I will present Counterclockwise aka ccw, a set of Eclipse plugins aimed at easing the development of Clojure projects. First, I will give an overview of the features, focusing on some with an interactive demo. Next, I will take my hands off of the keyboard to explain my goals as the core committer of ccw, starting with a brief explanation of why I chose to get on board, and a tentative projection of where it could be in the near and middle future.
Concurrency is commonly mistaken for parallelism, but the two are distinct concepts. Concurrency is concerned with managing access to shared state from different threads, whereas parallelism is concerned with utilizing multiple processors/cores to improve the performance of a computation. Clojure has successfully improved the state of (single VM) concurrent programming, and now the goal is to do the same for (single VM) parallel programming. A promising approach to achieving this goal is to le...
Clojure's existing persistent collection types cover many usage scenarios, but do leave a few gaps. Finger trees can fill gaps such as sorted sets with efficient support for 'nth', sequential collections that can grow at the front, the back, or even insert values anywhere in the middle, and more. In fact, finger trees can be customized to support a variety of application-specific needs while remaining persistent and playing nicely with Clojure's sequence and collection abstractions. We'll look...
Too often, one writes a DSL by starting with macros. However, this is often a case of premature optimization. An approach centered around "DSV" (domain specific values) and an interpreter leads to greater dynamicity. Macros can be added afterwards for optimization purposes or as syntactic sugar.