Carin Meier is a veteran of the Clojure Conj scene having attended both installments and a true asset to both the Ruby and Clojure communities. As a visible member of the Clojure community she's a contributing member of the team responsible for the delightful 4Clojure Clojure practice problems website. I had the privilege to talk with Carin at the 2011 JRuby Conf and found her enthusiasm for the art of programming infectious. Additionally, her contributions to 4Clojure and open source contributions clearly show a person interested in teaching others and spreading the joy.
How did you discover Clojure?
I was interested in learning a language that supported concurrency. Coming from a Java background, the interop was important as well, so I was considering Scala or Clojure.
I had heard that the most challenging part of learning either language was to think functionally. I decided that the best way for me to learn was to immerse myself in a language that was purely functional. While I was attending a No Fluff Just Stuff conference, one of my friends mentioned that I should look into Clojure too. I saw Stu Halloway's Programming Clojure there and picked up a copy. I have not looked back since.
What are your impressions of the Clojure community compared to say the Ruby community?
I love both the Ruby and Clojure communities. One of the things that I really enjoy about the Clojure community is its diversity. There are developers from the Java enterprise world, the Lisp world and the Ruby world. I think the ability to draw on the strengths from these backgrounds is a real advantage. From the Java world, I see people bringing pragmatic experience with concurrency, big data and scaling. From the Lisp world, I thoroughly enjoy the contributions of Logic Programming and other traditionally academic ideas. From the Ruby world, I see people bringing over the fantastic tools and processes to ease the development process. Both the Ruby and the Clojure community are quite vibrant. The Clojure community is really an exciting place to be right now, because there is such exciting growth and innovation. Every day seems like it brings something new.
How would you compare and contrast Ruby and Clojure?
I enjoy the dynamic and concise nature of both Ruby and Clojure. Both languages are very powerful in their expressivity. Ruby is just fantastic for its intuitive syntax. I had my 5 year old daughter try playing on the IRB in Ruby the other day. She mastered printing out strings and doing simple math in no time. Clojure, in my experience, didn't seem to be intuitive at the beginning, but then simply stunned me with its simplicity and elegance. I am not sure if I fell in love with Clojure first or Lisp, but since it comes bundled with concurrency and Java interop, I'll happily take the whole package.
Describe your typical day at Edgecase
Since I have small children, I am usually the early bird in the office. I slip my shoes off, put on my coding moccasins and setup at my standing desk. I am a fan of proper English tea, so I bring in my thermos from home and start out the day by reviewing Pivotal Tracker with a hot cup of tea. I start to dig into some code and then pair up with one of the other guys once they arrive and get properly caffeinated. We merrily hum along until lunch time, when an argument erupts over the supremacy of Emacs vs. Vim. We call it a draw in order to eat - walking to our local deli. After lunch, I jump back into the code. In the late afternoon, the strumming of a ukulele is heard, while one of the guys practices in between his tests. Later, we all gather around for a quick stand up call with the rest of our remote team. I reconvene with my pair, we put the finishing touches on our code for the day and plan out our course for the next day. The coding moccasins come off and I head home to see the kids.
What's it like to work with Jim Weirich?
Jim is one of the nicest guys that I have ever known. Of course, he is brilliant too, but always approachable. He has a genuine love for teaching and it shows. He is always ready to help out if you need his guidance. The local Functional Programmers group that I help run, benefits from having him so nearby as well. He agreed to do a talk for us last month and blew us all away with a live coding session of deriving the Y-Combinator from scratch. Oh yeah, he plays a mean ukulele.
What would you recommend to someone interesting in trying Clojure for the first time?
For books, I would recommend starting with Programming Clojure and then moving on to the excellent Joy of Clojure. For online resources, http://tryclojure.com is an great resource for the casually curious. It allows you to play with the language in a REPL without ever installing any code. For a guided tutorial, I would recommend checking out the Clojure Koans out on Github. Once you have mastered that, http://4clojure.com is a cool site that allows you to work koan like problems online. I also encourage people to get involved in contributing to an open source project. It is a great way to learn, participate and contribute to the community, and have a lot of fun.