Tue 18 February 2014

First few months of Clojure

I've been learning a bit of Lisp on and off for a few years, I first read (about half of) Land of Lisp, then Practical Lisp then I came across Clojure a modern Lisp that runs on the JVM and since I've been reading Clojure Programming and working through koans and katas.

I've also built a small Clojure library and command-line app GridRef to convert between an Ordnance Survey GB grid reference and British National Grid coordinates. While I was at it I built a web API GridRef Web which exposes the conversion functions via a Ring web app, hosted on Heroku and available at http://gridref.longwayaround.org.uk/. Having a real (all be it small) project to work on has helped massively in learning and while I found the move from Python and JavaScript initially challenging I'm finding that I'm now thinking more functionally elsewhere.

A few months in I'm really enjoying working with Clojure which feels like a thoughtfully designed language that incorporates sound theory in a practical way. The way the language and tooling favour interactive development really suits (especially lein and vim-fireplace) and I'm really drawn to the Lisp everything is an expression and code-as-data principles.

What little contact I've had with the community as been positive, it feels like a community of bright individuals from a range of backgrounds which give it enthusiasm and a healthy balance.

I was a bit hesitant of it being hosted on the JVM at first and it does suffer in places from the "window into hell" syndrome where you are exposed to the guts of the implementation but the infrastructure provided by the JVM seems to largely make up for this.

I'm sure Clojure is likely to my language of choice for a while, I'm now looking forward to getting on to exploring some of it's key features such as concurrency which I've only scratched the surface of so far.


Some links to resources I've found useful or interesting while learning the basics: