02 Feb 2019

Thoughts on Elixir Community by a Clojure Developer

I have been building systems in Clojure/ClojureScript for the the last 7 years or so. I enjoy using it to solve day to day problems. It is still my go-to language of choice and I love the fact that it guides me to think about problem at hand with very data centric way. As a tiny example of this, consider a feature where you need to toggle the sort ordering:

(defn toggle-order [order]
  (order {:asc :desc
	  :desc :asc}))

It is tiny but mighty. There is no if/else/case etc and it is easy to read, which is extremely important as your program grows due to needed complexity. Speaking of being easy to read, I could not help but to quote following from SICP book:

Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of gettng a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems.

For me, Using Clojure and Datomic professionally has been a game changer not only in terms of being more problem solving focused but more importantly a paradigm shift for taming domain complexity. It has helped me deliver robust, high performance systems within time and budget. However, having bitten by half baked distributed systems made up of tiny services done as afterthoughts, I have always been on the lookout for more robust distributed system development story. Then I found Elixir, a functional language running on Erlang VM called BEAM. After spending some time attending ElixirConf US and couple of meetups in ErlangElixirSF, I am posting what I really liked about Elixir community that Clojure Community might benefit:

I hope someone from both community find above helpful.

Tags: clojure elixir