If you were to deliver a talk in a conference for Ruby engineers, what would the topic be? That was a question I asked my supervisor during PyCon MY 2025. He eventually answered that he did not have a topic. Somehow it didn’t surprise me: a lot of incredible engineers I have met in life would likely respond similarly.
Including myself.
Code vs. Conversation: The Socialization Problem
My decision of submitting a talk likely raised a couple of eyebrows. Even my partner, Mr. H joked that I had brought the stress entirely upon myself whenever I complained about the preparation work. My former colleague even asked point-blank why I would make such a decision as an introvert. He added that he would not only avoid giving a talk, but he wouldn’t even consider attending the event.
Perhaps our lives take on a different trajectory, but in some ways, I see the ability to effectively communicate ideas being a part of the adulting or socialization process. For instance, I was once tasked with manning a booth in two different trade shows previously in another job. We were exposed to vastly different audiences when we were rotating between the two shows. As a result, the ability to explain the same concept in different contexts is crucial for people to relate to the company’s product.
To a certain extent, that experience alone piqued my interest to improve on my ability to communicate ideas. KitFu Coda, this very blog can be seen as a conscious effort for the purpose.
Just a few days ago, I realized this writing project started slightly over a year ago. Looking back, it expanded to different side ventures throughout the period, including a video, and just recently a talk. For the talk, the story started in late June, where a friend pinged in the community chatroom about the call for paper for the upcoming PyCon MY. With nudges from my mentor and fellow friends, I submitted my entries.
A few days after the submission, I coincidentally received a job offer. Between the new job and a series of family matters, I quickly forgot about the submission. That changed about two months ago when the approval for one of my submissions on AsyncIO hit my inbox. As I was still juggling between work and personal matters, I was somewhat relieved that my lightning talk on creating a DSL didn’t make it.
From 20-Person Meetups to the Main Stage

The title screen of my slide (Background is generated by Gemini)
Speaking of public speaking, I previously co-organized Rust Malaysia meetups, where I had the chance to share my learning journey and host workshop sessions. Most of the time I was dealing with a maximum of just 20 attendees. It is also worth noting that my last talk happened pre-COVID.
I can’t believe that was 5 years ago.
PyCon MY 2025 took place in Sunway University on the 1st and 2nd November. Compared to the meetups I ran, the difference in scale was massive. For instance, in my session I estimated there were at least a hundred attendees; that alone was enough to make me uncomfortable.
Preparation for the talk only started one week before the actual event. Due to the change of domain and tech stack at work and a series of family matters, my life only started to settle down fairly recently. Fortunately, we are living in an era where AI tools are getting increasingly helpful and easily accessible. This is a luxury my younger self wouldn’t have imagined. Naturally, given the tight timeframe due to my endless delay, I started by getting NotebookLM to generate an overview based on the source material.
The generated presentation was almost perfect that I jokingly told my peers that I felt useless.
After that, I turned to Gemini to start drafting the actual script for the presentation. Just as in my usual workflow, I planned the script as a storytelling project. While not perfect, the overview and initial draft did give me an idea of how to proceed.
Moving on, I needed to start preparing the slides. Considering the workshop-like nature, I decided to go with a simpler slide design and chose Google Slides. It still does the job fine; however, some of the controls were either moved to a new position or were completely replaced by the Gemini integration.
The final script was only done about two days before the presentation. I handwrote it on my tablet, as this method is proven to help with memorization. Later, during the dinner hosted by the organizer for speakers, one of the speakers mentioned how he only managed to complete his slides 10 minutes before his session. If I were in his shoes, I likely would have lost sleep in the days leading up to PyCon.
Autopilot Engaged: The Crisis on Stage

Flustered me on stage (photo courtesy of PyCon MY)
Thinking back, my setup was likely overly complicated and hard to execute. My session was scheduled to be in the bigger auditorium hall. Unfortunately, it clashed with a talk by my project partner from SinarProject. Despite that, many showed up for the talk, and that amplified my uneasiness.
Ideally, I was supposed to have my timer on my phone, so as I went through my script on the tablet I would know how much time was left. Even with that seemingly perfect plan, juggling three devices at a time was almost impossible. I ended up forgetting to start the timer, and forgot about referring to the handwritten script, and just autopiloted through the presentation.
While I didn’t really keep track, I likely missed out a rough guesstimate of 40% of the content. On the other hand, I did put in effort to introduce only one idea in each slide so hopefully the core ideas are presented in a manageable pace.
If you are reading this and you attended the talk, feel free to reach out by commenting here for clarification.
The Return: Why Just Showing Up Was the Answer

If I can, you can too (photo courtesy of PyCon MY)
Attending PyCon as a speaker is indeed an interesting experience. While this is considered a smaller conference (my previous ones were PyCon APAC in KL and EuroPython 2022 in Dublin, Ireland), I was considerably more stressed this time having to deliver a talk.
Siang attending EuroPython 2022 - LaLoka Labs
Until I am done with the talk, that is.
One of the reasons I like attending a conference or meetup is getting to know what people are working on. Apparently, quite a number of speakers are already adopting AsyncIO in their work, which made me wonder if my talk really mattered. This revelation does make me wonder about the people who showed up at my session. Were they just curious about the topic, or wanted to discover new use cases, or simply just there to validate their adoption to the feature?
Perhaps the choice of topic is a major consideration; however, the willingness to put oneself out there matters more. I can now appreciate the support my mentor offered when I was complaining about Rust adoption at work: he pushed me into organizing meetups. Sometimes, the act of standing out and yelling is what it takes to attract more feedback. In this case, speaking in a conference calls back to the problem I had when I started writing about AsyncIO — the constant need for shared knowledge on the topic.
Thanks again for joining me in this wonderful journey. I would like to take the opportunity to express my gratitude towards the organizers for hosting me, and putting in effort to maintain the friendly atmosphere. I shall write again, soon.
This article was developed with the editorial assistance of a large language model, Gemini. The model served as a linguistic and structural advisor, helping the author refine the grammar, correct flow issues, and polish the final prose. The core content, personal voice, and experiences remain the exclusive work of the author, Kitfucoda.

Top comments (0)