Directed Practice: Aaron Bedra on Clojure Koans, Technical Writing, and Speaking Mastery

UGtastic Archive
Transcript Verified
The Interviewer

Mike Hall

Interviewer, community organizer at UGtastic

The Guest

Aaron Bedra

Clojure Contributor, Security Expert, and Co-author of Programming Clojure

The Conversation


Mike Hall Interviewer, community organizer at UGtastic
Hi, I'm Mike. I'm here with Aaron Bedra. Aaron has contributed to the Clojure language. He's also spoken extensively on Clojure and functional programming and all kinds of other neat stuff here at GeekFest and a few conferences like No Fluff Just Stuff, RailsConf, and also Clojure Conj?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Yeah, Clojure Conj, StrangeLoop.
Mike Hall Interviewer, community organizer at UGtastic
Right now, we're just looking at the relaunch of the Clojure Koans website and I just wanted to ask about this teaching tool. Can you describe what Clojure Koans is?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Yeah, so the whole thing actually started because Jim Weirich and EdgeCase had put together the Ruby Koans for learning Ruby and exploring the language. They were really well done. I picked them up just to see what was going on and I really enjoyed the teaching style.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
That style of explaining a simple concept and showing how it works is also presented in 'The Little Lisper' and 'The Reasoned Schemer'. I really like that kind of close one-to-one interaction where you teach a small concept and evolve it.
Mike Hall Interviewer, community organizer at UGtastic
You're also so close to the source code; you're not in another tool or a little website.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Yeah, and a small amount of work can be done to bend the language into a little DSL. Ruby and Clojure both have great ways to do that. You bend it to your will and create this little learning environment.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
I tried to mimic what Jim had done with the Ruby Koans very closely. Then after that, Colin Jones of 8th Light contributed way more than I have at this point. He saw it, embraced it, and really went with it. The new Clojure Koans website is actually a product of 8th Light as well—it's written in Clojure using the Judo framework.
Mike Hall Interviewer, community organizer at UGtastic
Okay, so this was actually a project born at a conference?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Yeah, it was at CodeMash in 2010. A bunch of folks had talked about the Ruby Koans becoming popular. We said, 'Hey, what about a set of functional language Koans?' We actually started the project as a collection of Scala, F#, and Clojure. Scala eventually forked off into their own repository on Bitbucket, and Colin and I talked about making our own Clojure Koans.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Since then, it's actually forked off into its own engine where all you do is provide the exercises. Other people have approached us about doing things like Cascalog Koans or CoreLogic Koans. It's now like a plugin—there's a Leiningen plugin and an engine that sets up a Koans project for whatever you want.
Mike Hall Interviewer, community organizer at UGtastic
I'm going to jump from Clojure Koans to talk about some more education you've done through your book. You co-authored with Stuart Halloway. What was that like, writing a big technical book?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Technical books are... this was my first big book. I've done work for PeepCode for Geoffrey Grosenbach—I wrote a small book on Rails security several years back—but this was a bigger endeavor. About 300 pages. It was the second edition of Stu's book, so there was already a foundation. It was daunting, but not a blank slate.
Mike Hall Interviewer, community organizer at UGtastic
How much of writing the book was learning new stuff versus codifying things you already knew?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
I definitely learned stuff during the process. A lot of it was a brain dump because I was working in Clojure every day. I was working on the language at least one day a week, if not all week sometimes.
Mike Hall Interviewer, community organizer at UGtastic
Did you ever have a point where researching for the book made you realize you'd been doing something wrong all along?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
I think it might have changed the way I did some things in Clojure, but not for the book. For the book, it was still pretty introductory concepts that hadn't changed much. However, between the two versions, some of the code and examples changed quite a bit based on evolving the language from Clojure 1.0 to 1.3. The book is Targeted at 1.3 and up, so it's still very relevant.
Mike Hall Interviewer, community organizer at UGtastic
You've spoken at RailsConf, No Fluff Just Stuff, Clojure conferences—very different communities. Do you talk about different topics or tailor the same topic for each audience?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
I talk about different stuff and I always tailor it for the audience. Having a good conversation where everyone is on the same page is important. I think the idea of a talk is more to inspire than it is to teach. You really can't teach a group of 100 to 1,000 people much in an hour.
Mike Hall Interviewer, community organizer at UGtastic
Brian Liles basically said the same thing—you do a little entertainment and then try to get them to go explore.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Yeah, it's about somebody taking away something that excited them and then learning on their own. My goal is to fuel exploration.
Mike Hall Interviewer, community organizer at UGtastic
When you're preparing, do you script everything out or just follow a general gist?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
I always write an outline in Emacs Org mode. The story is important. If you move really fast during an hour-long talk and skip a beat or don't transition well, it's hard to follow. The outline ensures the story goes from start to finish. Then I fill in the details and slides.
Mike Hall Interviewer, community organizer at UGtastic
Do you ever do pre-presentations at user groups to try out ideas?
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Sometimes. I'll use GeekFest here at Groupon as a platform because it happens every week. User groups are definitely a great place to test ideas.
Mike Hall Interviewer, community organizer at UGtastic
All right, great. Well, thank you very much for taking the time, Aaron.
Aaron Bedra Clojure Contributor, Security Expert, and Co-author of Programming Clojure
Thanks.

Critical Insights


durable
"The Clojure Koans were heavily influenced by Jim Weirich's Ruby Koans, adopting a 'directed practice' style that uses the language's own DSL capabilities to create a close-to-source learning environment."
durable
"Technical presentations in large venues should prioritize inspiration and exploration over deep-dive instruction, as the time constraints favor 'fueling learning' rather than comprehensive teaching."
durable
"Structured outlining in Emacs Org mode is a critical practice for maintaining narrative flow and transition quality in fast-paced technical conference talks."
durable
"User groups function as essential 'testing grounds' for technical ideas and presentations, offering more frequent opportunities for feedback than monthly or annual conferences."
time bound
"Evolving a technical book between language versions (e.g., Clojure 1.0 to 1.3) requires balancing introductory stability with updated idioms and interface changes."