My PyCon talk “Open Source on Easy Mode” is available to watch on YouTube, but I made a bold decision this year to give my talk using an iPad.
It turned out to actually be “PyCon Talk on Hard Mode” instead, because nothing went right.
It’s March, and I’m writing my talk. I care enough about style, typography, and legibility that I need tight control over fonts and themes. I lean heavily on Keynote and Adobe Fonts, with screenshots of oversized 42pt type in my editor of choice to get the best results.
And because I’m never good at extemporaneous speaking, I write a full script ahead of time, and keep that script in the speaker notes, so that in the worst case, I can fall back to orator mode. This all means I need tight control over the device that I’m presenting from.
But the only laptop I have is my employer’s, where installing fonts is complicated and a grey area that would require mixing my personal Adobe account with professional work tools. Every other device I own is a desktop, tablet, or phone.
Even more, I’ve never liked having to bring a big bag and heavy laptop just to give a presentation. Carrying four pounds of gear around all day sucks, and I’d much prefer something small and light enough to fit in my everyday bag.
That’s when I get The Idea:
“Why not give the talk using my iPad Mini?”
Modern iOS includes Keynote, and I can use the Adobe app to install my fonts system-wide, just like on my Mac, and Keynote can use them perfectly fine.
I pulled out my USB-C HDMI dongle, and while normally the iPad just mirrors the device over HDMI, Keynote will actually show the slides at full screen over HDMI, while showing the presenter notes on the iPad itself, just like a laptop. It would even render 16:9 when presenting!
I double check on my monitor’s input stats, and it’s outputting a 1440p signal. This might actually work!
It can’t be this easy, right? Am I crazy?
Seriously considering giving my PyCon talk using just an iPad and leaving my laptop at home. 👀
— Amethyst Reese ✊🏳️🌈🏳️⚧️ (@n7cmdr) March 29, 2022
I tried it with other monitors and my TV, and it seemed flawless. I did full dry runs using my iPad, and even paired my trackpad and keyboard to the iPad and edited the rest of the talk on the iPad. I was convinced I wouldn’t need my laptop.
A week before the event, I committed.
We fly to SLC, and I’m continuing to practice—and edit—my talk on the iPad. The morning of the talk, I immediately head to the green room and test my setup.
This is actually happening!
I come back after lunch. The volunteer walks me to the room I’m presenting in.
I say hi to the staff, drop off my bag, get mic’ed up, walk up to the podium, plug in HDMI, trigger Keynote, and …
The A/V system is only rendering my slides on the left half of the screen, squashed into the wrong aspect ratio.
It’s OK, we’ll just unplug and re-plug.
But no matter what I or the A/V staff do, my slides won’t show up correctly.
We delay the start of the talk; people are still filing in bit by bit. The host tries to lighten the mood and asks me a couple filler questions to stall for time.
Time flies while we’re desperately waiting to see if this can get fixed. Before I know it, it’s about 8 minutes past the original start time, and the host asks if I just want to get started anyways.
I say yes, because bad slides are at least better than no slides—or no talk.
Now, my topic was intentionally broad in scope, and I had a lot to cover. I had already planned to talk fast to get through everything. During rehearsals, I cut content so that I could consistently finish at almost exactly the 30 minute time slot.
But now I’m already behind.
I had Keynote set up to show me a timer, so I would know how I was doing on time. Ten minutes into the talk, and the host is already showing me the “15 minutes left” card. I’m talking as fast as I can, but also stumbling under the pressure. I’ve gone from speaking to reading.
At 13 minutes, an A/V expert manages to fix the output of my slides, but it’s too late for the demo of “thx” that I was the most excited to share. I wouldn’t find out that they were fixed until much later. Nothing mattered if I couldn’t finish the talk.
Moments later and they show me the “10 minutes left” card. They’re not giving me the full half hour. I start dropping phrases or sentences where I can to make up. I don’t think I’ve ever talked this fast in my life.
At 18 minutes, they give me the “5 minute warning”.
I make it to the final section (well ahead of my original expected pace, mind you) and get the STOP card. I power through 8 slides in 40 seconds, but the “ums” return as I have to make it all up on the spot.
I close out the talk with a total runtime of just about 26 minutes.
The polite applause starts, and I manage to get myself off stage with a shred of dignity in tact. As they’re removing the mic, I thank and apologize to the A/V crew for causing so many problems. 😅
I find out that—for reasons I will never understand—the iPad was only negotiating a resolution of 1080i (interlacing!) instead of the 1080p that their system was expecting.
Why 1080i? Because technology!
And why did that break the A/V layout? No idea.
But thankfully, even after my mediocre delivery, the smashed slides, and flickering output, there were still folks that stopped by to say hello, compliment my talk, and ask questions. Sadly, my brain was toast, so I have little memory of who they were or what we talked about. 😓
I don’t know if I’ll have the opportunity to give this talk again in the future, but I’m planning to re-record it at home soon. Maybe I can talk at a more reasonable pace, and actually make it through with all of my content in one piece.
But there’s one thing I know I’m doing the next time a talk gets selected for PyCon, or any of the wonderful regional conferences I love attending:
I’m using my iPad to present! 💪
Back in 2019–remember the before times?–I gave a talk at North Bay Python 2019 on the topics of coroutines, AsyncIO, and how they work. It’s a crazy journey from bytecode and runtime instructions to building our own terrible event loop in pure Python using nothing but generators and tears. Enjoy!
And if that was too slow, don’t miss the shorter rendition of this talk that I gave at PyCascades 2020, right before COVID ruined everything.
A week ago today, I gave a talk at PyCon Australia in Sydney. I discussed refactoring in Python, and how to build refactoring tools using nothing but the standard library, building up from concepts to syntax trees to how the lib2to3 module works. The talk finished with the announcement of the open source refactoring framework I built at Facebook, Bowler, which I built using those same concepts. I really appreciated the questions from the audience and in the halls afterwards, and we really enjoyed our time in Sydney. Thanks to everyone that made PyCon so great!
This past Friday, I presented a talk at PyCon US 2018 – the first time I’ve been fortunate enough to attend. The talk was focused on achieving high performance from modern Python services through the use of AsyncIO and the multiprocessing modules. The turnout was better than I could have ever expected, and I was really happy to hear from everyone that stopped by the Facebook booth to ask questions, discuss Facebook engineering practices, or even just say “hello”. Thank you to everyone who made my first PyCon amazing!