Talks I Love: The Art of the Keynote

This is part of the Talks I Love series.

I just got back from RailsConf. As usual, I found the keynotes inspiring and invigorating. The keynotes from this year have not been posted yet so for this month’s Talks I Love I am pulling two of my favorites from previous Ruby Central events. For those wondering why there are multiple keynote addresses at an event Ruby Central uses the word keynote for the opening and closing plenary sessions.

Giving a good keynote is harder than presenting a regular session. If it is a plenary session, you need to deliver content that is interesting and relevant to a wide range of skill levels and interests. Speaking first thing in the morning or last of the day also means that you have to be engaging to convince folks to show up or not leave early. In addition to all this, you are often expected to give a talk that is inspiring, uplifting, and relevant to a technical audience.

The two talks I chose are entirely different styles. The first talk focuses on self-improvement. It is a “soft” talk. It is full of anecdotes and stories. The second is intensely technical. It teaches concepts that usually are reserved for upper division CS courses and rarely appear at language conferences.

Kent Beck: Ease At Work (RailsConf 2015)

Kent’s talk is what most folks think of when they think of keynotes. It is inspiring. The material applies to nearly everyone, even those who are not technical. The talk is full of stories and great mental images while also having suggestions for things that can make your life better.

The thing I love most about this talk is all the vivid imagery that comes to mind when I watch it. I especially like imagining my ideas as little mice that consult each other about whether it is worth it to come out. My work (like most of us) is built on ideas. Whenever I indulge one of my crazy ideas another one comes up. I struggled for two years to update my blog regularly but kept running into the same problem. When I had an idea, I did not have time to write and when I had time to write I did not have an idea. So I started feeding the mice as Kent describes and letting myself write, at least a bit, when I had ideas. Lo and behold more ideas came, and I now have a backlog of 50+ possible post topics.

The other big image that stood out for me is when he said, “One magnet can destroy my life’s work.” In my head I imagined him holding up a magnet to a giant floppy disk. It made something I have struggled with, the intangibility of software, much more real to me. Moreover, I liked that Kent had the story about the contractor being able to point to houses he has built to accompany this point.

When I saw this talk the first time the other big takeaway I had was “be a beginner”. Kent has two examples of this. The first is doing ballet which evokes another fantastic image for me. He also talks about learning Haskell, describing it as “It is absolutely antithetical to everything I believe about programming languages,” but he points out that it taught him things. Other inspirational speakers I have seen recommend learning new things to broaden your overall knowledge. Kent recommends it so that you remember that you can get through tough times. That blew my mind at the time but is a technique I have employed several times since.

Jim Weirich: Y Not - Adventures in Functional Programming (Ruby Conf 2012)

I picked this talk because Jim breaks all the rules of keynotes. I had forgotten that Jim specifically calls this out at the beginning of his talk. He sets expectations and makes everyone laugh within the first few minutes. Moreover, even though he is breaking all the rules of keynotes, it is a memorable talk that people still recommend over four years later.

Jim builds up the lambda calculus and y-combinator from first principles. Theoretically, folks in the audience who had not been exposed to these ideas before could follow along. In practice, these concepts are hard and take a couple of exposures before you can understand them. However, by starting with first principles, everyone in the audience can follow along for at least some portion of the talk, and no one is lost from the beginning.

Not only does Jim break the “keynotes are non-technical” rule he also live codes the majority of his presentation. Normally I hate live coding. I find it slows down a talk and get frustrated watching folks correct their spelling. In this case, the live coding made the talk better. The concepts are hard so slowing them down a bit and watching them be built up as Jim typed things out helped me keep up with what he was teaching. Also, Jim is a master of his editor. He uses macro expansions to do all of the refactorings in the talk which prevents errors and also keeps the pace of the talk consistent.

The audience participation is also done extremely well. At first, you are not sure what is going on with the cosines. Then Jim comes back with his prediction which is extremely well timed, to surprise us and bring up the concept of fixed points. He comes back to fixed points later on when he explains that the y-combinator is also known as the fixed point combinator. Bookending his talk with the same idea, fixed points in this case, is a technique I want to try.


There are very few conference talks I have watched multiple times but both of these talks I have come back to time and time again. They are so very different and yet I find both of them delight and inspire me. I left both of these talks wanting to learn and build new things which is how I want people to leave the talks that I give.