Learning Clojure

Over the past few months, we’ve been making a pretty aggressive move towards using Clojure in our model at World Singles. We still have a CFML-based application in a ColdBox framework, but our model has seen a lot of CFML re-written as (fewer lines of) Clojure.

Before anybody asks, or leaps to conclusions, there will be no Helms-ian type blog posts where I bid adieu to the CFML community. Learning and using a new technology does not, and should not automatically equate to closing the door on any other. I’m not learning Clojure to replace CFML. I’m learning Clojure in addition to CFML. CFML will always be a tool in my toolbox. It just won’t be so lonely anymore.

Why Clojure? Why Functional Programming at all? Excellent questions. To be honest, I’m not at a point (yet) where I can clearly or intelligently explain. But fear not, for others have already taken the time to extol the virtues of both Functional Programming as well as Clojure.

I’ll be blogging about this particular journey. It’s been pretty slow going so far, as it really is a significant paradigm shift. Function programming versus OO, Clojure syntax versus CFML… it’s quite a bit to take in. I’ve been working my way through Practical Clojure (Affiliate Link), but have found myself re-reading chapters two to three times, just to make sure I really understand the concepts before moving forward. Unfortunately I’ve also been sidetracked with side projects, like moving this blog from BlogCFC to WordPress, and moving my VPS from Windows to Ubuntu. And when I find the time to get back to the Clojure book, I feel that it’s worth going back a chapter or two as a refresher.

But now with the blog and server migrations “mostly done”, I should be able to dedicate at least an hour a night to my foray into Clojure. It really is a whole new world, which is both exciting and terrifying. Not unlike a roller coaster. Or marriage.

Next up I’ll explain how you can get Clojure up and running locally in ~ 3 minutes, in case you want to play along at home.