Pre-West Interview: Tom Faulhaber

Talk: Creating Beautiful Spreadsheets with Data and Templates

Tom Faulhaber's talk at Clojure/West is about generating Excel sheets in Clojure.


People are using Clojure for some really interesting work. This one is about using Excel as an output format. It's richer by far than CSV, and it can let non-programmers explore data in a way no other tool can. Tom Faulhaber has created a library for filling in Excel templates with Clojure data. See his blog post for more info.

About Tom Faulhaber

Homepage - Twitter - GitHub

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!


Tom Faulhaber is the next interview participant. He is giving a talk at Clojure/West about using Clojure to create Excel spreadsheets. The background to his talk is available, if you like.

Interview with Tom Faulhaber

Nola: How did you get into Clojure?

Tom: Rich Hickey did a talk called "Clojure for Lisp Programmers." I bookmarked that talk but avoided it because I was scared of it. The idea seemed too interesting and I was afraid I'd get sucked in.

But over Thanksgiving weekend 2009, I had some time and I watched the video. I was sucked in and I've been an active member of the Clojure community ever since.

Nola: What other languages did you do before?

Tom: I've done them all. I'm a creature of the dark ages so I started with Basic, Cobol, Fortran and early Lisps. In the early part of my career, I worked on operating systems, data bases, and networking. This was all C and later C++. Nowadays, I do primarily Clojure and R along with some Python and Scala. One of the things I've learned is that there's no silver bullet language: a clear understanding of of goals and good communication trump language choice every time.

Nola: What do you like best about Clojure?

Tom: I love Clojure, the language, but what I like even better is Clojure, the community. From the very beginning, Rich has worked hard to make sure it was a community of people that was positive towards each other.

Since then, more people have taken up the mantle of making Clojure more inclusive with initiatives like ClojureBridge and diversity scholarships. In addition to the folks using their own energy to make this happen, I have been very happy with the overall supportive tone in the community with respect to these efforts.

Like all tech communities, we clearly have a long way to go, but it's hard not to be pleased that the community is receptive to these goals and always looking for ways to be better.

Nola: What advice do you give new clojure developers?

Tom: This would be my advice for anyone learning a new language: human or computer. Take the language on its own terms and don't try to enforce your own previous assumptions on it. For example, in Spanish the adjective usually comes after the noun. This causes a reaction in English speakers, who often think that Spanish gets it "wrong." That's not a productive approach to embracing the language (and, in fact, one reason to learn foreign languages is to experience those differences and thereby gain perspective).

In the case of Clojure, parenthesis, prefix notation, and lack of built-in typing come to the top of that list. When you're learning Clojure, try really hard not to have negative opinions about these things. Accept what the experienced folks say is "best." Later when you're more familiar with the language, you'll probably agree with the experts. But even if you don't, it won't be because you let yourself be blinded by where you came from.

Having said all that: Do use paredit. It makes dealing with the parentheses fade into the background and is available in most dev environments now.

Nola: What does your tooling look like? emacs or vim or ?

Tom: I'm an emacs user from way back. I've been very thankful for the work that Bozhidar Batsov, Phil Hagelberg and others have done over the years to make the Emacs Clojure environment so nice.

Nola: Your talk is about creating spreadsheets in Excel, have you spent alot of time creating spreadsheets in other languages? what benefits do you get over using clojure?

Tom: Yeah, a friend told me recently that I've been obsessed with Excel for a long time. I have used Excel natively and Excel from .Net (mostly through IronPython) to create live dashboards of systems and businesses in action without the overhead of building a website or buying an expensive tool.

I want to be able to use Excel for the things it's good at and use Clojure for the things it's good at. It turns out that they can go really well together.

For more on that, you'll have to come to my talk which will involve live coding in both Clojure and Excel!

Nola: How would you use clojure to defeat the Kobayashi Maru ?

Tom: That's easy - use destructuring to get the Kobayashi Maru out of the neutral zone without entering it myself:

(defn rescue-kobayashi-maru
  (let [{:keys [kobayashi-maru]} neutral-zone]

Back in the real world, I've found that Clojure's capabilities to handle super-complex deeply nested data structures gets me out of scrapes that users of other languages thought were almost impossible to deal with.

Nola: Thanks for the interview. It was very informative.