Summary: My upcoming Clojure/conj talk is fast approaching. I recorded two rehearsals in two days. Watch them!
About four weeks ago, I wrote an essay in the Clojure Gazette about how I want to develop my Clojure/conj talk in the open.
I've been working on it off and on since then. I discovered that it's even more work to produce something that is sharable. Random notes jotted down while watching Conal Elliott's talks for the fifth time are not really worth sharing.
But last month I gave the talk at a local meetup. That forced me to get some slides together and slap some code together. It was rough. I didn't really have the time to make it shine. But I was among friends and got some excellent advice as well as interesting objections.
Well, I guess I should talk about what I'm talking about. I'm on a mission to develop a process for building robust, composable abstractions. My talk is a presentation of the current iteration of that process. The process has been inspired by some of the greats from the field and then reinterpreted and churned through my experience as a teacher. As a teacher, I was trained to take complex skills and break them down into learnable processes.
The process has three broad steps:
- Physical metaphor.
- Construction of meaning.
And it's that first one that got the most objections. The thing to do in that first step is to elaborate a physical metaphor about the thing you're coding. We often begin abstrating before we've really thought about what it is we're abstracting. And then once it's abstract, it's hard to talk about.
The main objection I got when I presented it was "maybe your problems have physical metaphors, but mine don't". But then I had them state their problem and it was all physical. I think people (maybe programmers?) read in a lot of meaning into "physical" that is not warranted. Talking is physical. Writing stuff down is physical. It's still true that I've never met a problem that didn't have a good physical metaphor. But I'm glad these objections were brought up because I don't want people to get stuck there.
Then I realized that my talk is less than a month away. So I set aside some time to rehearse. Here's the first rehearsal, using the same slides as in the local meetup. The code was not ready:
Then I spent about a day working on the code and "showing my work". Then I recorded it. And it's way too long. But you can watch that one, too. I'm not sure if the delivery is improved or not. And there are still things I need to add and things to remove.
Slides. The script is the same.
I'm not really expecting you to watch this, though please do if you're interested. Even just writing this has given me more ideas about what I should share with you. I'd love to hear any advice you have, questions you have, etc. .