July 7, 2014

My Top Clojure Articles

Yeah, it's a clip show. Deal with it.

For the past few years, most of my posts have been beginner-intermediate essays on various clojure features and coding techniques. Since a lot of people have told me that they like my blog as a genre piece, I decided to pull some of my favorites into one place, and order them by difficulty, from Clojure beginner on up so that folks don’t have to root around.

I really hope to see Clojure become a widely-used general-purpose language, because, although much has been made of its general elegance and its propensity to be written by extremely clever people, I think it has a lot to offer mediocre programmers (like yours truly) with its practical feature-set, strong encouragement of good practices (immutability, pure functions) and useful tools like Leiningen and the excellent lisp REPL.

With that in mind, and because I’m really not past the intermediate level yet, I try to write articles targeted at people who are new to Clojure. And now I have enough such articles that I think it’s worthwhile to assemble them in once place. I’ll try to keep them up to date as I write more in the future.

Beginner Articles (Read these first)

Clojure in 15 minutes

One of the articles that inspired the creation of Learn X in Y Minutes and a nice primer for experienced developers of other languages who just need to get up to speed.

Five Mistakes Clojure Newbies Make

This one may help to smooth over a few roadblocks you might encounter when trying to do things the newfangled functional way.

Acceptable Error Handling in Clojure

Wherein I demonstrate some techniques for making error handling functional, instead of using try/catch exception handling that validates referential transparancy.

Clojure Web Apps: Zero to “Hello World” in 15 minutes

Write your first web app in Clojure, as quickly as possible.

Martin Fowler’s “Refactoring” Refactored

Another nice basic demonstration of the difference between thinking in terms of data and functions and of objects and methods. Also introduces Protocols, which are a feature many people don’t “get” right away.

Just what does “code as data” mean anyway?

A bit about just what a clojure macro is, in the most basic way possible.

Articles about Clojure features and libraries

Structured Clojure: Protocols and Multimethods

If you’ve ever wondered what Protocols or Multimethods are for, well, I hope this helps.

Clojure Reducers for Mortals

Clojure Reducers Explained (Through Python)

Two essays on Clojure’s “reducers” feature, which allows for efficient stream-processing-style collection processing. The last one doesn’t use Clojure, but I think it has good examples anyhow

Why Clojure? Async Magic

A Clojure Concurrency Smorgasbord

Another pair of articles about Clojure’s simple and effective concurrency features, and related libraries.

Clojure.core: Batteries (almost) included

A tour of some handy libraries from the clojure.core namespace that didn’t quite make the cut to be part of the standard library.

Other Essays

DIY NoSQL in Clojure

DIY NoSQL in Clojure Revisited

Demonstrating the use of atoms as an in-memory data store, first with a naive global static implementation and then with a modular, swappable protocol-based solution.

How RedditLater Works

The gory details about redditlater, a Buffer-like post-scheduling service for reddit that runs on Clojure.