Lightning Talk: Just-in-Time with Numba - 10-minute Remote Python Pizza 1.0 version[
Quick speaker notes + reflection on my first international lightning talk at a remote conference
Where: Remote Python Pizza 1.0
When: 25 April 2020
Location: Remote (@ your couch!)
- Compiled vs Interpreted Languages - freeCodeCamp Guide
- Just in Time Compilation - freeCodeCamp Guide
- What’s the difference between a compiled and interpreted language?
- Compiler and Interpreter: Compiled Language vs Interpreted Programming Languages
- 5-minute Guide to Numba
- Numba architecture
A recap of what I went through during my talk:
- Bottlenecks in a data science project
- Data Preprocessing + Python as interpreted language
- Compiled vs Interpreted Languages
- Running machine code (executable) vs running bytecode in virtual machine
- What is Just-in-Time?
- Source code to native machine code at runtime
- Just-in-Time with Numba
- Two modes of execution: @jit and @njit (no-Python mode)
- Numba compiler architecture
- Concept of Intermediate Representation (IR)
- Type inference frontend + LLVM backend
- Practical Implementations
- @jit mode with Numba-incompatible types (e.g. Pillow)
- @njit mode with Numba-compatible types (e.g. numpy)
- Key Takeaways
GitHub Repository for Demo
Pending publicly-available recording from Remote Python Pizza
The first time I gave a talk involving Numba was during my first conference talk last year, but the first time I gave a talk focusing on Numba was at PyLadies International Women’s Month Lightning Talks. Encouraged by the warm reception from the PyLadies folks, I submitted a proposal for a 10-minute lightning talk on Numba for Remote Python Pizza without really expecting much - if it got accepted I’m contributing to a good cause through sharing my knowledge with a lightning talk, and if it didn’t get accepted I could still choose to contribute to a good cause by chipping in for a ticket since the conference proceeds go towards Doctors Without Borders. Turns out, my talk proposal got accepted, so I spent some time rehearsing and doing a bit more research on Numba in preparation for my first-ever lightning talk at a conference in a remote setting.
It feels different giving a talk at a remote conference, not knowing how the unknown number of people in the audience feels or thinks about your talk - what more giving a lightning talk at a remote conference for the first time? Initially, I even felt a bit intimidated looking at the impressive lineup of speakers and thinking “oh my goodness I’m like the representative Southeast Asian / Singaporean speaker so I better not embarrass my country” (even though I’m not the only Asian among the speaker lineup) - I was experiencing some form of heightened anxiety during the first week of “Circuit Breaker” and felt the “imposter syndrome” even more strongly.
To ground myself mentally while preparing for my lightning talk, I did the following steps:
- Fear of messing up? Remind myself why I chose to give a remote lightning talk - to try something out of my comfort zone, to get used to giving talks remotely, and to improve and learn how to communicate more succinctly as a speaker from the experience.
- Feeling like an impostor compared with the more experienced folks? Remind myself that I am given the opportunity to speak alongside a great lineup of speakers, and I belong there as much as how they belong there.
- Feeling like I don’t matter as much? Remind myself that every bit of effort counts - I’m chipping in towards raising funds for Doctors Without Borders by speaking, and someone might find my talk useful.
- Still feeling anxious? Acknowledge the feeling, take deep breaths, and listen to motivational podcasts and calming instrumentals.
The speaker-onboarding session before the conference was really helpful though - I tested the Zoom setup, ran through some of the slides, and received crucial feedback that led me to add additional slides on the Numba compiler architecture in order to explain the two modes of execution in Numba.
Numba compiler architecture - a simplified diagrammatic explanation of how Numba works
Back to my lightning talk - I kinda stumbled a bit at the start and towards the end as there were too many similar-sounding words in my talk, but the rest of the talk went pretty smoothly and I managed to deliver everything I planned to speak about within 10 minutes. My setup was a bit clumsy since my “second screen” was my work laptop with my speaker notes, and I ended up looking towards my speaker notes at a slightly awkward angle when discussing about the more technical details. I didn’t dare to look at the conference Discord channel throughout my talk for fear of negative feedback, so I ended up being reminded that my time is almost up on Zoom - luckily I was already towards the end of my talk by then. At the end of my talk, I noticed that I was sweating profusely and my back was drenched, even though I was in a room with air-conditioning.
My initial post-talk thought was “okay I finally did the thing even though I stumbled on my words”. I was pleasantly surprised to see the overwhelmingly warm response and feedback on the conference Discord channels AND on Twitter - turns out, there are people who loved my talk!
As a side note, it’s a coincidence that I came across the advice to “just show up” recently. Guess I need to keep showing up for potential opportunities out there and trust in the process.
Things that could have been improved
- I stumbled a bit while explaining how the two modes of execution (@jit and @njit) works within the Numba compiler architecture - especially when there’s Numba IR and LLVM IR involved.
- When rewatching the livestream, it seemed pretty obvious to me that I was looking at a second laptop with the speaker notes since my face wasn’t looking straight onto the webcam.
- My wireless headset microphone was a bit loud and my voice got distorted on the livestream - or maybe my speaking voice was too loud for my microphone.
- I’m still using too many “so……” and “right……” in my talks until I suspect it exposes my “Singlish-ness” on an international stage. Hand gesticulations and “hand-flailing” don’t work as well for a remote talk either.
Things that went well
- My talk went well without major hiccups and I delivered everything I planned to share within 10 minutes - everything from compiled vs interpreted languages, JIT compilation, Numba, LLVM etc.
- I received a lot more new followers and plenty of praise on Twitter - and more praise on the conference Discord channel!
- I’m really glad that there were people in the remote audience who noticed the non-trivial efforts I put in to explain complex concepts in a way that makes it easier for people to understand. Compiler architecture
- There were Singaporeans among the remote audience - it really means a lot to me as a Singaporean female (and doubly underrepresented) tech speaker when they tell me I did an awesome job and I did Singapore proud! :’)