Directed Practice: Aaron Bedra on Clojure Koans, Technical Writing, and Speaking Mastery
Directed Practice: Aaron Bedra on Clojure Koans, Technical Writing, and Speaking Mastery
β’
UGtastic Archive
Full Transcript Available
π Dive into the world of functional programming with Aaron Bedra! Learn about the creation of Clojure Coens, a teaching tool for functional programming, and his experience co-authoring 'Programming Clojure' with Stuart Halloway. π #Clojure #FunctionalProgramming #TechBooks #LearningResources #AaronBedra
The Interviewer
Mike Hall
Interviewer, UGtastic
The Guest
Aaron Bedra
Clojure and functional programming
The Conversation
Mike Hall
Interviewer, 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? Yeah, Clojure Conj, Strangely. Right now we're just looking at the relaunch of the Clojure Coens website and I just wanted to ask, this is a teaching tool, Clojure Coens, it's a teaching tool for, can you describe what Clojure Coens is?
Aaron Bedra
Clojure and functional programming
Yeah, so the whole thing actually started, Jim Wyrick and Edge Case had put together the Ruby Coens for learning Ruby, exploring the language. They were really well done. I picked them up, just wanted to see what was going on and I really enjoyed the teaching style. I really liked how that works. And that style of, you know, explain something very, some simple concept and show how it works is also presented in like The Little Lisper and The Reason Schemer and those books. I really like that kind of very close one-to-one, teach a small concept and kind of evolve it. And you're also so close to the source code, you're not in another tool in a little website or something like that. And, you know, a small amount of work can be done to just kind of bend the language into a little DSL, you know, and Ruby and Clojure both have some great ways to do that. So you kind of bend it to your will and make it work the way you want and you kind of create this little learning environment. So I tried to mimic what Jim had done with the Ruby Coens very closely because I like that style. Right. And then after that, Colin Jones of 8 Lite actually took, I mean, he's contributed, I think, way more than I have at this point. He really put his eye on it. You know, he saw it, he embraced it and really went with it. And the new Clojure Coens website is actually a product of 8th Lite as well. And it's written in Clojure as well. It is, it is. The Judo framework. Yeah. And so, you know, those guys really took, they did all the work here. Right. It really wasn't me. I started the project back in 2010 at CodeMesh. Oh, okay. So this was actually a project at a conference. Yeah. So at CodeMesh in 2010, a full bunch of folks had talked about, you know, the Ruby Coens. They were becoming popular at that point. We said, hey, what about a set of functional language Coens? And we actually started the project as a collection of Scala and F Sharp, Clojure. I don't remember, a lot of these people participated. Yeah, because it originally was just kind of functional and you just had an umbrella. Yeah. It just kind of seems to have focused now. So
Mike Hall
Interviewer, UGtastic
Scala forked off into their own repository over to Bitbucket and those kind of, they're much more popular there now. And so Colin and I talked about just making our own Clojure cones. And that's kind of where that came from and everything kind of started there. Since then, it's actually forked off to its own engine. And then all you do is provide the exercises. Oh, okay. And so other people have approached about doing things like the Caskalog cones and maybe the CoreLogic cones. But it's not known like a plug-in architect. Yeah, there's a lining-in plug-in and there's an engine you install and it actually will set up a cone for whatever, a cones project for whatever you want. Oh, okay, and then you just add the cones. Yeah, you just add the exercises and go. So it's actually a nice little modular thing now. And it's become kind of a nice little way to start to teach something about your project or some concept. But, you know, this was just the Clojure cones is about the language. Right. No add-ons, no plug-ins. The way it's built is, you know, pretty simple, just using a couple of macros and some little tricks. Okay. And I'm going to jump straight from Clojure cones to talk about some of the... Some more education you've done through your book. Yeah. You co-authored with... Stuart Halloway. Yeah, I just... I knew Stuart. I wasn't going to say Smalley or... But you co-authored a book with him. What was that like coming from Clojure and being a coder and then writing a technical book?
Aaron Bedra
Clojure and functional programming
Technical books are, you know, I think this is my first big book, right? I've done work for Peep Code for Jeffrey Grossenbach. I wrote a small book on rail security several years back. It was much smaller. So this was a bigger endeavor. About 300 pages this book ended up being. So, but it was the second edition of Stu's book. So there was already a foundation. So it was much more daunting than the Peep Code book for me, but it was also less because it wasn't, you know, a blank slate. Right. And so with that, I mean, you've obviously been doing Clojure for a very long time and you've contributed to the code base. How much of writing the book was having to learn new stuff versus codifying things you already knew?
Mike Hall
Interviewer, UGtastic
I definitely learned stuff during the process of writing the book. A lot of it was brain dump, right? So that part was nice. It was pretty easy. I was working in Clojure every day. I was working on the language at least one day a week, if not all week sometimes. And so it was nice to be able to kind of brain dump because I was right in the middle of it all. And I think that makes for a good conversation. Did you ever have a point where You're like writing the book and then you're like, wow, when you're researching, you're like, I've been doing it wrong all along. And then like changed what you were, how you were, like when you were digging deep maybe into a topic. I think it might have changed the way I did some things in Clojure, but not for the book. For the book, it was, you know, still pretty introductory teaching concepts and those concepts really didn't change much. Between the two versions of the book, some of the code and examples changed quite a bit. And that was based on learning new stuff in the language and evolving the language, right?
Aaron Bedra
Clojure and functional programming
The first edition that Stuart wrote was kind of pre 1.0, right around 1.0. And this book is targeted at 1.3 and up. So the language that evolved quite a bit and between Clojure 1.0 and 1.3, there were lots of changes. So if somebody picks up the book, it's still relevant. Yeah, absolutely. Yeah, this is, you know, a couple things have been released since then, but there are, this book is still very relevant. You won't find code examples broken or anything like that. Nothing has changed interface-wise. Oh, okay. So the code examples would still work even if you used them with, you know, 1.4 or 1.5, as far as I know. Right. I've tried most of them, so. Okay. Yeah, just the last kind of group of questions is you've gone and spoken at a lot of different conferences. You've gone in RailsConf, No Fluff, Just Stuff, ClojureConf, very different communities. Yes. Just in those three conferences. Yeah. Do you talk about different topics or do you tend to, like, have the same topic but maybe tailor it for that audience?
Mike Hall
Interviewer, UGtastic
I talk about different stuff, you know, and definitely tailor it for the audience, always tailor it for the audience. Having a good conversation where everybody's on the same page is really important. You know, I think the idea of a talk is more to inspire than it is to teach. Right. Because you only have a short amount of time, right? Right. You really can't teach somebody, you can't teach a group of 100 to 1,000 people much in an hour. Right. Right. That's, Brandl basically said the same thing. It's, you come out, you do a little entertainment, you share some knowledge, and then you try to get them to go and. Yeah. It's really about inspiring. It's about somebody taking away something you said that excited them and then going and researching and learning on their own. And you might have just fueled that learning. And that's what the goal of my conference talk really are, is to fuel exploration. Okay.
Aaron Bedra
Clojure and functional programming
Just when you're preparing for your presentations, are you one of those types of people that likes to sit down and figure out, this is my script? Or do you kind of just say, I know this thing, and then you just go with it?
Mike Hall
Interviewer, UGtastic
here's the general gist of what I want to talk about? I always write an outline. Okay.
Aaron Bedra
Clojure and functional programming
So I'll fire up Emacs in org mode and write an outline. And, you know, that has gotten me through lots of things. Okay. And the reason I do that is because, I guess the story is important. And when you break that down, it gets rough to follow. Right. And if you're moving really fast, because, you know, an hour is a long time, so you have to move quickly. If you skip a beat and go off somewhere else and don't really transition well, it's hard to follow. Yeah. If you get off a toot, it's hard of a script. Yeah. So that outline helps make sure the story is going to go the same place from start to finish. And then after that, I fill the details in slides.
Mike Hall
Interviewer, UGtastic
Do you ever go and do, like, some people like to kind of work the user group circuit. Sure. Do you go and do pre-presentations at user groups to try out? Sometimes yes, sometimes no. It just depends on what's around, what user groups are happening. I'll use GeekFest here at Groupon as a platform sometime. It happens more regularly, every week. Right. So there's more chances to hit there. You never know whether or not you're going to be around on a certain user group night. And, you know, they only have them once a month, so it's harder. But, yeah, your user groups are definitely a great place to test ideas. All right, great. Well, thank you very much for taking the time. Thank you. Thanks.