Clojure Gazette 1.4

Logic, history, and more!

Clojure Gazette

Issue 1.4 - April 4, 2012

editorial

Little Interconnections

I remember a few years ago looking at Clojure news. It was often just about wrappers for existing Java libraries. It was an important step in the growth of Clojure, but nothing to get excited about.

Now when I look out across the Clojure landscape, I see new libraries emerging that would have been incredibly difficult to do in Java. I see Clojure libraries built on top of other Clojure libraries. And I see rich ecosystems where libraries can meet and interact, like Ring.

There is also an exploration of Javascript and the fascinating browser/web server interactions possible with Clojure. And Clojure is exploring running powerful Datalog queries over data in the cloud.

All of this is very exciting.

Eric Normand

PS Let me know your thoughts or if you have a link you would like to share. All you have to do is hit reply and it will go to my personal email.

library madness

Quil

Quil is a Clojure wrapper library around Processing. I have tried out some of the examples and it looks like the easiest way yet to start drawing in Clojure. Obviously inspired by _why, the library seeks to meld the awesomeness and simplicity of Processing with the abstracting power of Clojure. A fine weapon, indeed.

blast from the past

Lisp 1.5 Programmer's Manual (PDF)

An interesting and historical read. So much of the Lisp world we take for granted was forged well before many of us were born. As I flip through the pages, I see the birth of many high-level programming concepts that we normally take for granted today.

random ranting

Three Kinds of Error

Stewart Sierra turns on his potty mouth to break program errors into three different types. An interesting read.

on the shoulders of google

clj-browserchannel-demo

Just as on the JVM, Clojure managed to gain a huge advantage by making interop with existing Java libraries easy, it seems to be panning out for Clojurescript as well. Namely, Clojurescript can borrow from the expansive Google Closure library, whose depths have yet to be plumbed. Browserchannel is one example of a nugget of gold from Google. GMail Chat uses it for bidirectional communication between browser and server. And it works in nearly every browser. Someone has managed to get a browser/server example working in Clojure and Clojurescript.

purely logical

mimir

I hereby predict that 2012 will be known as the year that logic came to Clojure.

webby

clj-oauth

Ring is beyond awesome. It is as simple as possible, but no simpler. This library promises to rock the Ring by creating an OAuth middleware, which would make it devastatingly easy to get OAuth working. OAuth is a secure way to grant access to a user account without giving the username and password. I have not used clj-oauth yet but it looks promising.

tip

Working on Multiple Clojure Projects at Once

Clojure lets me abstract and modularize (decomplect!) so well that I often find myself spinning off smaller projects from my larger ones. This tip helped me this week to do just that without losing my mind. I thought I would mention it.

clojurescript in london

London Clojure User Group: Clojurescript One

Neale Swinnerton demonstrates building a single-page application using Clojurescript One. Watch it fullscreen to see the code.

theory

An association-based model of dynamic behavior(PDF)

While rarely implemented this way for efficiency reasons, Ian Piumarta lays out a theoretical framework for using dictionaries (hash maps) to model many types of dynamic programming semantics, including prototypical inheritance (like in Javascript). Lisp was originally conceived of as a language of linked lists, the fundamental building block of data and code. What would a programming language look like that was built out of hash maps?

video

The Computer Revolution Hasn't Happened Yet

Where was computing headed before the personal computing commoditized software? A nice introduction to the computer science side of Alan Kay, one of my personal heroes.