Pre-West Interview: Anthony Marcar

Talk: Clojure at Scale

Anthony Marcar's talk at Clojure/West is about how to build larger Clojure applications.


Clojure was released in 2007. That means it's coming up on 8 years. It is also a powerful language for parallel computations, like we see in Cascalog and Storm. As big data has become more popular, Clojure's ease with processing lots of information has given it a great role to play recently. It came about at just the right time to take advantage of the big data boom. Several large companies acquired smaller Clojure companies, including Walmart, Staples, and Twitter. And because Clojure runs on the JVM, it's perfect for the enterprise. But we don't have many experience reports about how they have learned to use it.

Anthony Marcar works at Walmart using Clojure. I'm sure there will be some great information in this talk. I don't know specifically what it will be about, but it might be interesting to contrast it with Reflections on a real-world Clojure application, a talk by Malcolm Sparks.

About Anthony Marcar

GitHub - Twitter


Anthony Marcar generously agreed to do an interview about his talk at Clojure/West. The background to the talk is available, if you like.

Interview How did you get into Clojure?

Anthony Marcar: About 4 years ago, I decided that java wasn't cutting it for me. I needed a new language, but I wanted to be on the JVM. So Scala and Clojure were the obvious contenders. I decided to spend 3 months building an online card game in both languages to see which I liked more. Scala at first was easier to get into, whereas Clojure was thoroughly alien. But over time, In Scala, I found I was spending more time building abstract Type graphs and waiting for compiles to finish, whereas in Clojure I was having a lot of fun and moving faster. I also loved the emphasis on immutability in Clojure. After that I was hooked. Clojure is relatively new, so you don't really get many experience reports of large production systems. When you hear someone talking about Clojure who has used it maybe only hobby projects or small projects, what are the common things that strike you as untrue?

AM: I don't know if "untrue" is the right way to put it, but things people generally haven't thought about before embarking on larger Clojure projects are things like how do you deploy your application, how do you go about logging and monitoring? How do you protect your application from going down if downstream dependencies start timing out? And how do you grow a code base across multiple projects? There still aren't many resources in the Clojure space to answer these kinds of questions. Have you had experience bringing programmers who don't know Clojure onto your team? What were the challenges? What surprised you?

AM: Yes I have had rubyists, node.js and python people join the team. Not surprisingly the JVM was a big challenge. Things like the local maven repository, logging, and common java libraries can be hard to grasp. I was however surprised how easily everyone picked up on Clojure's fundamentals such as immutability. I guess it's because that's what attracted them to the language in the first place. Do you think Clojure is a good fit for large companies with lots of software?

AM: Clojure is great for large companies. I think it's greatest asset is its focus on data structures. In big companies, this is a big deal as there are layers and layers of legacy systems, each with their own outdated data formats and protocols. Clojure's focus on data transformations and concurrency makes it perfect for working with many different services to produce the right business outcome. That, combined with the the fact that it runs on the JVM makes it perfect for large companies. Do you have any advice for the folks out there working for big companies who want to introduce Clojure to their work?

AM: If you want to introduce Clojure at a large company, get ready for a very tough road ahead. Work from both the bottom and top of the organization. Try and find the engineers who are always looking at new technologies. The kind who get home and build side projects. Then infect them. At the same time, scour the organization for VPs, or SVPs who "get" technologists. Buy them a beer. Ask them to be a champion for you, to protect you every time a more "traditional" team tries to block your progress. You'll need all the help you can get and will have to work well past your normal hours, but it's worth it.

If you want to take a shortcut, build a company that does Clojure, and then get acquired by said big company ;) Is there anything else you'd like to add?

AM: All I would add is that working in Clojure is extremely fun. If you're not already working in it full time, go and apply for a job somewhere where you can! If Clojure were a food, what food would it be?

AM: An ice cream sandwich. Because it's awesome. That is all.