I’ve seen quite a bit of the world thanks to being invited to speak at conferences. Since some people are under the impression that serial conference speakers possess some special talents, I’d like to demystify my process by walking you through my latest talk from start to finish.

[This article has been translated to Russian: Выступать на конференции]

Some of my conference badges.
Some of my conference badges.

Let’s start with a downer: it’s (still) a lot of work to me. I don’t have any special talent for writing talks or speaking at all. I’m also not a native English speaker so being at loss of words is something that happens to me frequently which means I have to practice a lot more than if I’d spoke in Czech or German.

My “secret” to success is an irrational fear of embarrassment and a vicious grind spanning multiple months. So if you came for a magic pill: please let me know if you find one elsewhere. Generally speaking, if you see a speaker give a great talk, and it looks easy to you, it most likely means they put endless hours into preparations.

Of course, sometimes I hear from speakers I admire how they create their slides on the plane to a conference. Or do three presentations within one week. Or complain that they have to spend 8 hours of preparations on their talks – suggesting it’s a lot.

That’s not me and unless I get paid to work on talks all year round to get more practice, it never will.


All this to say: I do only one talk per year that I prepare and practice vigorously for PyCon US (~3,500 attendees in 2017). Afterward, I present it at any conference that invites / lets me.

The road to PyCon goes in ten phases which I’m going to outline to you now. Since this article is sort of a diary that spans over almost 12 months, it’s rather on the long side. Therefore, feel free to consume it in multiple sessions, but I believe it’s easy to read, and it has plenty of pictures✨!

Phase 1: Idea

Until now, I’ve never had to sit down and ponder what I could speak about. Over the year, I run into at least one topic I know something about that appears to be interesting to the wider public. I’m positive that’s true for almost anyone if they keep their minds open and keep looking for it.

My Solid Snakes or: How to Take 5 Weeks of Vacation that I presented on May 19, 2017, started its life on June 25, 2016 – nearly a full year earlier! – at the airport of Līhuʻe on the Kauai Island of Hawai‘i.

I was in the final stretch of the trip that gave the talk its subtitle and I have been tweeting photos for weeks. Eventually, people started wondering how I could be that long away from work and whether I’m ever gonna work again.

At this point it was obvious to me that this would be a popular topic to talk about1. And from this point on I’ve started consciously to collect quotes and material for the talk, adding it to an OmniFocus project.


What this also means is that the material I’m presenting every single year is largely a gut feeling until I start preparing. I’ve been doing this professionally for more than a decade so experiences and wisdom tend to pile up in the subconscious mind. Spelling them out in a coherent, comprehensible way requires me to (re-)consult literature first.

And this requirement of ordering your thoughts and spelling them out is a very useful side effect of giving talks on topics that seem obvious to you.

Phase 2: Call for Proposals

The first intense phase is PyCon US’s CfP. For the 2017 edition it went from October 14, 2016 to January 3, 2017.

At this point I have to start making sense of my material and this is when I start a mind map to order my thoughts. I’m alternating between MindNode and IThoughts. The former is prettier, the latter is more powerful. What’s important to me is to have an adequate mobile companion app, so I can research and work on the go or on my couch using my phone and tablet2.

In the end I have to come up with a good pitch that speaks to as many people as possible and with a speculative outline. Since there are always many more submissions than talk slots, this is the first critical point. There are many reasons why a proposal can be refused, so put effort into not giving the program committee any additional, that are avoidable3.


I have submitted my proposal at the end of November after I’ve let multiple friends proof-read it. All told me they can’t wait to attend it. Therefore, either my friends are liars or I’m on to something!

Phase 3: Waiting for the CfP Result

I don’t start working on my talk until I have a confirmation. Until now, all my proposals have been accepted, but I would not follow through if I get declined one year.

I’m in no way saying other conferences aren’t worth it. As a speaker, I actually tend to enjoy smaller conferences more than the big ones since they tend to appreciate their speakers more. The big ones always carry the assumption that it’s an honor to get a stage there – some more, some less subtly.

But as you’ll see in the following, the work I put into my talks is staggering and small conferences aren’t projectable. I can’t justify putting the work into it without knowing that I’ll get the minimal payoff of getting The Big Stage.

Things would be different if I knew ahead of time how many other invitations a year has for me in store.


I still do passive research, though: if I see something relevant, I add it to my mind map. At this point my mind map looks atypical though: it has a lot of unordered root nodes. I throw in everything that looks interesting and add my own thoughts to it. In the case of the reliability topic, I spend a lot of time to stay on top of it anyway, so a lot of material emerged.

Other than that, this is a rather calm phase until The Email arrives:

PyCon US talk acceptance email.
PyCon US talk acceptance email.

Phase 4: The Road to an Outline

Once the talk is accepted, research intensifies. Books and articles I’ve written down for further research are read and topics extracted. In 2017, this started on January 23.

But before I start writing, I get the mind map into a shape that makes sense and that will support me:

Mind Map in phase 4.
Mind Map in phase 4.

At this point I know what I want to say, but I don’t know how to say it – yet.

This is when I start a new document in OmniOutliner to come up with the actual outline of the talk (and to collect material for the companion page). The transition from ordering to writing is usually triggered by an invitation to a smaller conference before PyCon (cf. Phase 7) which gives me a concrete deadline. This year it was PyCon Ukraine that took place on April 7–8 in Lviv and which I’ve accepted on February 16.


This is the second critical point: I have to come up with a compelling story using the material I’ve collected. Enumerating facts and wisdom a good talk doesn’t make. It has to have a good flow that makes sense and that keeps people engaged.

Of course, I go back and look at the outline I’ve submitted in the CfP. But having collected much more information and inspiration at this point, a different, more natural outline emerges after potentially hours of staring and shuffling around topics.

This is when I start complaining in public that I should never ever submit a talk to a conference and what was I even thinking.

I SWEAR TO GOD I’M NEVER SUBMITTING A TALK EVER AGAIN #thatTimeOfTheYear

Yours Truly, Tweet

Molding a heap of information into a coherent outline is one of the hardest big-picture tasks. However, I do not subscribe to the notion that you have to write out your talk first – at least not anymore. The simple reason is that it’s difficult to write prose that works as well as a talk. Which in the past years meant I had to throw out a lot of material. Also, too verbose notes will seduce you to read much more from the script (which is not the end of the world if you do a good dramatic reading!).

So, my outline is rather coarse and the end of this phase overlaps with the next one: the slides.

Phase 5: Slides

Once the rough outline is in place, the crafting of slides begins. Very soon, I notice problems with the outline that are much more apparent when they have to work as a talk. And fixing an outline is much easier than fixing a completely written talk.

Fortunately, Keynote offers a hierarchy for the slides which means that I can use it as an outliner from here on, too. OmniOutliner is only used to collect material for the talk page henceforth.


I have a very strong opinion on slides: use few, big words. Don’t make people read your slides unless it’s code samples. Otherwise, they’ll be distracted from what you say. You’ll see me rarely use fonts smaller than 100pt (code ~40–60pt) which is readable from everywhere and forces me to be as brief as possible.

If you have to have bullet points, try to make them at most three. Up to five is possible but not recommended. Don’t show them all at once; people will read ahead instead of listening to you.

You’re there to explain concepts, and inspire – not to read your laundry list.

Other rules I follow include:

  • Dark on light. Yes, the inverse looks cooler and has some better aesthetic properties. But you’re relying on a dark room, good projector, and good contrast. A projector cannot project “black”, only lack of light. If the room cannot be sufficiently darkened, your slides are unreadable. It’s rare, but there isn’t a compelling reason for me to take that chances. This is especially important to me, because I like to speak at smaller conferences that may not have top-tier equipment.

    Make no mistake: you can make good or bad slides using any color scheme.

  • Important stuff goes to the top. Smaller conferences often use regular meeting rooms that have screens at a low level. So people not sitting in the first two rows often cannot see the lower third of your slide. More content cannot always be avoided, but it’s good to keep it in mind.

  • Don’t rely on colors. Many more people than you may think have color vision deficiencies to a certain degree. I do use colors, but I try hard to make them unnecessary to understand my slides.

  • …or your slides in general. My slides are supposed to support my talk, not carry it. Which means that listening to my talk without seeing my slides (you’d be surprised how many visually impaired programmers there are!) is useful but on the other hand looking at my slides alone won’t tell you anything.

    I’m not perfect at this, but I try to read out all quotes and describe all graphs. This also means that while I do need my speaker notes, I could present most of my material with a broken projector if I had to.

  • Standalone usefulness of my slides is a non-goal. I design my slides to help me bring my point across with as little noise as possible: context, not content. That makes them completely useless for flipping through. Sorry, you’ll have to watch the video. ¯\_(ツ)_/¯

  • Keep your bio short. I find it painful when speakers spend endless minutes on explaining who they are and what they do. It’s a complete waste of time for everyone in the room. I do understand that you may want to establish your credibility for the topic you’re speaking on but guess what: the people are already there. You’ve convinced them to listen. Don’t waste their time by explaining how amazing you are. Say 2–3 sentences and get right to the meat.

    For the same reason I find it exhausting when people waste their valuable speaking time on why their topic is interesting. We came to hear about the topic! Talk about the topic!

  • Agendas spoil the fun. I learned it at school too: a talk starts with an agenda about what you’re gonna talk about. But why‽ I like to write my talks as storylines with twists and turns that keep people engaged. If you watch a TED talk, how many speakers spend time talking about what they’re gonna talk about?

    I usually give a rough outline, but you won’t see me showing a slide with a table of contents. This seems like some weird relict from academia that people just kept doing without questioning it. Or a tool to survive boring talks because you always know how much material is left.


I use OmniGraffle for diagrams. I used to do them using Keynote’s on-board tools, but they are just prettier with a proper application. If I need to reveal parts step by step, I use layers. Fortunately, you can copy and paste directly from OmniGraffle into Keynote. I should look into automatization for positioning though because it gets obnoxious to paste, resize, and position whenever something changes.

Update: I’ve moved back to using Keynote’s on-board tools. It’s just so much more effective and looks good enough.

OmniGraffle with the graph of a circuit breaker.
OmniGraffle with the graph of a circuit breaker.

For photos, I like Unsplash. If I don’t find anything there, I search flickr for CC-licensed material. I credit all creators – whether the license requires it or not – on my talk page.

Additionally, I have bought a bunch of icon packages from Symbolicons that come handy regularly.


Eventually, I come up with something very rough that qualifies as a first draft. It hasn’t perfect typography and may even have stand-in graphics. But it has the complete story arc. This is a moment of great relief because the rest is mere busywork. Annoying as it is; it’s not as anxiety-inducing like the creative groundwork.

I’ve reached that point on April 2. That’s late by my standards, but I had a vacation and a bunch of social responsibilities (annoyingly including my birthday) shortly before.

Lightbox with first draft in phase 5.
Lightbox with first draft in phase 5.

This draft is about to change a lot!

One thing of note is my final slide which I just keep up after I finish talking until I get kicked out.

Final slide.
Final slide.

It contains three things:

  1. A short link (and a QR code) to the talk page with additional material,
  2. my Twitter handle because I’m a shameless attention seeker,
  3. and a link to Variomedia, my employer that generously allows me to spend my time on writing and giving talks.

Around this time doubts come up whether anyone will learn anything at all and whether I’m not just wasting everyone’s time. I’ve been told this is very common among speakers regardless of their experience.

Speaker Notes

As for speaker notes, there is a spectrum for “Exactness of Planning.” On the left hand is “Wing it” which is something I’ll never be able to do.

On the other side is “Follow an exact script” which is what I did for my first two talks.

An exact script is the safest, but also most tedious bet unless you want to read it out (which – again – is just fine if done properly). I knew my first script Happy-Birthday-level by heart. Word for word. And that’s what could be found in my notes. The downside here is that such notes are useless if you forget your line while presenting: you have to work yourself through a wall of text to even find the spot where you are.

Over the years – as my English improved, and I got more experienced at speaking – I started moving more and more to the middle: “Talk through a set structure.” Nowadays my notes are nothing more than just a list of bullet points and catchphrases. This is easy to navigate even under stressful situations and makes sure I don’t forget anything.

In any case: the so much feared “blackout” simply is not an issue at all as long as you have comprehensive speaker notes. You may blank over words but that can happen to anyone at any time. Just make sure that important keywords are part of your notes.


After all these years, I’m still very self-conscious about my speaker notes because they’re tailored to the way I think. Giving them out in advance to translators and stenographers feels like exposing my inner mind.

Phase 6: Polishing

Once the first rough cut of the talk is done, a virtuos and exhausting cycle starts:

  1. practice out loud
  2. take notes while practicing
  3. fix slides/notes
  4. goto 1

I don’t count the cycles (and sometimes I just work on a single section or transition) but I do iterate a lot.

Notes after a practice round in phase 6.
Notes after a practice round in phase 6.

This phase is not only about polishing my deck, it’s also practicing. Before I enter the stage for the first time, I went through the material dozens of times. You also get a feeling for the timing and what you need to cut (in all the years, I never had to add – there’s always so much more to say!). My first iteration usually takes more than twice the time I actually have. This year was no exception.

TFW the first run of your 40min talk takes 90min.

Yours Truly, Tweet
I firmly believe that this phase makes or breaks a talk. Only by practicing again and again you’ll notice rough spots, weak transitions, and redundancies. Each iteration makes the talk a bit better both regarding the slides and my ability to present it. Each iteration adds impressions that my subconscious mind chews on and makes things fall in place and give me inspiration in unlikely moments.

In this phase I also prepare the talk page with all the material I talk about including continuative topics. I find URLs and credits on slides pointless and distracting, so I dedicate them a proper page. I’ve been using iA Writer for Markdown prose for a while now (I like to have a different editor for prose than for code).

On April 6 – the day before leaving for the sneak preview – I’ve managed to finish the talk in the allotted time (45 minutes) which means I’m “done”. At this point the slide deck has shrunk by 22 slides.

Phase 7: Sneak Preview

In the past years I was blessed with the opportunity to test my talks in front of smaller audiences. I thought that’s what I’m doing when I accepted to come to PyCon Ukraine in Lviv.

It turned out that the conference – as low-key as it appears – had 500 people attending and given I was keynoting, that was probably more people than will ever come to my talk at PyCon US. No sudden increase in pressure at all.

Interestingly, I’ve come to take smaller events more seriously than the big ones. If a small conference pays for my travels and gives me a prominent slot, I have both more responsibility and attention than if I paid my way to an event where I’m one of many speakers.

So for example at PyCon US most people I’ll meet in the hallway neither know who I am nor that I speak at all. In Ukraine I was busy talking to people all the time, which is what I love about speaking at conferences in general.


It went well in the end (I even had some time for questions) and I quite enjoyed the experience. That made me a lot more relaxed about PyCon US!

Phase 8: Refinement and More Polishing

When I get back from the preview, I take a step back for a few weeks and catch up with other duties. However, inspiration keeps hitting me, so I keep taking notes. But the changes are just minimal polish.


About 1–2 weeks before PyCon US I start practicing again; May 5 in this case. The first session is always just going through all slides, reacquainting myself with my deck. Then it always takes quite a bit of will power until I do a full practice run again: the first time always pretty brutal because I tend to forget pretty fast. On the other hand, it rather quickly comes back too. Which makes it even harder to motivate myself to start.


Ideally I’d have access to a video recording from phase 7 to have a closer look at what work could be improved. But since it’s usually smaller conferences, I don’t. At least I coincidentally found an encouraging report from PyCon Ukraine:

His [talk] was fun, dynamic and spirited. There was an aim to put all attendees in a good mood, and that’s where Hynek delivered high-quality fun to the audience.

Oleh Marshev, PyCon 2017 Report: More Than Python

My this year’s talk has a keynote-y vibe to it through its generality so it’s only fair to treat it as such.


One nice property of having a good talk ready early, is that your mind keeps working on it and you’ll keep having insights and ideas. Watching a movie, reading blog posts, walking in the park…inspiration on how to improve the talk and make it even better keep coming up.

Other than that, it’s back to the old “practice, take notes, improve” routine.

Phase 9: Travel

Whenever I travel to conferences I bring everything I need for my talk and then some. To make sure I don’t forget anything essential, I have a packing list for my business trips (and vacations too – the differences are so minimal that I use a unified list).

My epic packing list for business trips.
My epic packing list for business trips.

I print it out the day before departure and cross stuff off as I pack. I highly recommend to anyone to emulate this since packing is a lot less stressful if you just follow a checklist4.

To me, the most important conference-related items are:

  • My own presentation remote. Having a familiar piece of hardware in my hand gives me some peace of mind and not all conferences provide the speakers with one.

    • Extra batteries!
  • My own display adapters. I always carry Thunderbolt → VGA and Thunderbolt → DVI on me because I don’t want to stress out about how to connect my notebook 15 minutes before my talk. I could probably get away with the former because it’s 2017 and VGA is still the dominant standard.

    Occasionally, I even have to lend them out so I have my email address on them because people tend to forget to return them (looking at you, Armin R. from V. in A.!). I probably should get Thunderbolt → HDMI too because there are occasional problems with my Mac’s HDMI output and it seems like HDMI might finally end VGA’s 30 years long reign.

  • My presentation on an USB key. And in my Dropbox. Just in case iCloud Drive or even my Mac die on me.

  • Proper clothes. While presenting, I wear light shirts without any patterns. Everything else is at the risk of looking bad on video: dark clothes can make you look like a talking decapitated head and patterns may give moiré effects.


I make sure to plan my travels to have at least one day of buffer to account for jet lag and incidents like my airline getting me dragged from their plane dazed and bleeding because their workforce allocation sucks.

Phase 10: Showtime!

The time to worry is three months before a flight. Decide then whether or not the goal is worth the risks involved. If it is, stop worrying. To worry is to add another hazard.

Amelia Earhart, Last Flight

So this is it. The moment everything else led to. People who suffer from fear of public speaking think this is the worst part. But if you scroll back you’ll realize: this is the payoff! This is what you worked toward. This is the fun, easy part.

Once you stand in front of the audience, the work is done and you get to enjoy the ride.

Which absolutely does not mean I don’t get nervous when 200–800 eyeballs are pointed at me! My pulse goes up and my hands start shaking like anyone else’s. But I came to accept and kind of enjoy the rush which makes the symptoms taper off. It’s like bungee jumping except the biggest risk is causing a viral video of you tripping over a cable or forgetting your own name.


But, the day doesn’t start the moment you stand on the stage – there is still a last mile to go. And some of my last-minute routines are specifically intended to help me to cope with my flurry.

So I get up really early. This year my talk was at 1:40pm, and I got up around 5:45am (jet lag might have played a role too). I start a very deliberate routine then: I do a quick (less than 10 minutes) but intense workout, pick my clothes, get a shave, brush and floss my teeth, shower, and do my hair.

Afterward, I make myself one of those disgusting hotel coffees and go through my talk one last time, fully dressed, in the quiet of my room.

I never skip the conference opening but I did skip the keynotes and hung around the green room until my talk. The closer my talk comes, the more I isolate myself (headphones + music all day, basically), the less caffeine I consume (less jitters), and the less I drink in general (a full bladder is not great when on stage).

I keep going through my slides and look at transitions. But mostly it’s just waiting at this point.

On the Stage

After entering the stage, connecting my laptop, and getting wired to a microphone, my last important steps are putting my phone, watch, and conference badge into my backpack so they don’t distract me or the audience. Then it’s just waiting for getting introduced.

If necessary, I’ll ask the audience to move to the front rows while waiting. Having 10 people right in front of me is much more fun for everyone involved than having 100 people scattered all over the room. The connection and chemistry between a speaker and their audience are at least 50% of the fun and they can’t really develop if everyone in the audience is isolated. It takes some courage to boss your audience around but if you do it in a lighthearted, candid way, they usually gladly oblige.

Finally:

Solid Snakes or How to Take 5 Weeks of Vacation – PyCon US 2017

The final applause is the glorious conclusion of this story and with it, I collapse inside. In the days and hours leading up to the talk I’m very tense, permanently thinking about the talk, optimizing, polishing. People have told me that I’m quite useless around that time. Once it’s over, I need about an hour to get my senses back and the adrenaline leave my body. But then the conference starts for me for reals.


If you watch the talk, you may notice that I don’t do Q&As. That has two reasons:

  1. YouTube is full of videos of me misunderstanding a question and answering something completely nonsensical. The audio environment just isn’t great and I’m really bad at parsing language in it.

  2. I don’t feel I owe my stage to other people and I consider public Q&As the internet comments of conference talks – usually nothing good comes out of it.

    I’m very available throughout conferences and a casual discussion in the hallway – maybe with other people pitching in – is much more useful to everyone than a brief Q&A in public with no proper time for me to think my answers through.

Fortunately PyCon US doesn’t force Q&As on its speakers anymore and we did a wonderful open space on reliability with people from Amazon, Google, Paypal, Yelp, Reddit, and so forth adding their $0.02.

Photo of a full room of people discussing system reliability.
Reliability BoF at PyCon 2017
Mahmoud Hashemi’s Tweet

My thoughts on this particular talk:

  • It’s one of the less cringe-worthy talks I gave to me.
  • I do have a problem with my breathing which really annoys me. It’s something I need to work on.
  • I’m also annoyingly fidgety but I’m not sure I can fix that – it’s kind of my nature and suppressing that may have a negative influence of my overall performance.
  • The turnout was fine – as you can hear in the video, there were people huddling around the entrance at all times. So I guess I judged the interest correctly this year.

Overall I’m happy with the result.

Conclusion

I hope now you understand why I recycle my talks over a year. It’s not laziness or lack of respect towards smaller conferences. I just don’t have neither the time nor the talent to have more than one talk of my usual quality.

More importantly: if you share my privilege of sufficient free time, you can do it too. There is neither talent nor magic. Just hard work and grind.

If you’re afraid of public speaking, I have three things to share:

  1. It’s okay to make mistakes. I mispronounce and get muddled all the time. Nobody cares! Either ignore it or acknowledge it and go with it. Starting over a sentence is perfectly fine. But do not try to play over it or pretend it never happened. That can become cringe-y.

    The worst offense though is if you make a joke, nobody laughs and you laugh nervously at your own joke. Nobody will join you, everyone will cringe. Just move on.

  2. Speaking to 500 well-meaning people is easier than speaking to 5 that might be antagonistic towards you. You cannot compare speaking at PyCon to a business presentation or a school report. If you’ve done your homework, the crowd will be very charitable to you and perfection is not expected.

  3. Choose the proper conference. I’ve seen people making fun of speakers at The Next Web which is a very “startup bro”-ey event. I’ve never seen that at any PyCon or EuroPython. It’s usually very apparent what kind of audience you can expect at a conference. Trust your gut feeling.

So if you’ve found something interesting to share and have the time for proper preparations: Don’t overthink it and do it.


  1. Though take it with a grain of salt after I’ve arguably misjudged the interest in metrics and Prometheus in 2016 and spoke to an only ⅓ filled room at PyCon US. EuroPython and smaller conferences fared much better fortunately. ↩︎

  2. If you’re new to mind mapping, I’ve particularly enjoyed the The Productivity Show’s podcast episode on that topic. Especially when they talk about the different kinds of mind maps and how they differ from outlines. ↩︎

  3. I’ve been part of the PyCon US’s program committee for two years and I can tell you that a lot of proposals were half-assed. I don’t know how much that changed, but I believe that putting effort and attention to detail into your proposal raises your chances immensely just as it does for front letters when applying for jobs. ↩︎

  4. Notice the ledger under the checklist? It contains my printed ESTA and travel itineraries. I forgot it there which cost me an extra cab roundtrip from the airport. Few things wake you up that well in the morning. I didn’t need anything from that ledger in the end. Checklist amended. ↩︎