My First Meetup Talk
A month ago I gave my first meetup talk ever. For those who are thinking of doing this or have been there know it’s not necessarily easy to make the decision to go talk to a bunch of seasoned programmers about any topic. The bar definitely feels high even when it shouldn’t be.
At the end of October, my colleague invited me to talk about this curious side project of mine in a Clojure meetup that would be held in Oulu, in the northern half of Finland. Little wonder as I'd been blabbering about my side project during friday coffee sessions, demoing it to colleagues, and thus had gathered interest in the topic. I slept on the decision and ended up accepting the invitation.
The meetup was set to be held on December 1st and was hosted by the kind Enhancell folks within their cozy office premises in the heart of Oulu city.
Clock starts tickingLink to Clock starts ticking
The countdown began with four weeks on the clock. I decided on my title right after receiving the invitation. For me, it was important to have an explicit title so that the contents of that talk would be clear beforehand and potential guests could make their RSVP decisions more easily. The title of my talk was:
Creating an experimental GraphQL formatter using Clojure, Instaparse, and GraalVM.
I knew I had to put some buzzwords in there, so I put all of them there. Some old, some new - all good, as they say!
At end of the week, I started preparing my presentation at a high-level using markdown Gist and bullet points. This allowed me to create the narrative without spending too much time on the graphics, typography, demo code, and other embellishments at this point. Crafting the bullet points took me one friday evening.
Three weeks leftLink to Three weeks left
At this point, I still had ample amount of time to get things right. Yes, even my editor code style schemes.
But I still had to get my bullet points right as I knew my draft was still very rough. I spent the entire next week fixing all my typos, bending the narrative to my will, and thinking about the lessons in all of this. This retrospective process involved going through the code and commits from the beginning and reflecting on my feelings about the problem/solution space, and also digging up my notes on different experiments and reflecting on those.
Another week began, and I already knew I had to start fleshing out my slides. The sand was sifting through the hourglass and I didn't have any memes on my powerpoint yet.
And to add to my bikeshed woes, no way people would be reading markdown Gist with enhanced grandpa font sizing (if only I had enough time to learn emacs org mode)! Where were those company slide templates again? Which template was the least stale out of the three?
Pretty soon I would have to start throwing that clay into something far more beautiful. So that's what I started doing.
At the end of the week, I had something that I could call "graphical" (in lieu of a better word). I also wrote some demo code to showcase parts from the Abstract Syntax Tree processing pipeline that I had built for my formatter, and then continued working on my slides, spit-polishing the graphical parts, making sure I was using the right font sizes consistently everywhere, etc. You know, the important stuff.
Final week: the hustle editionLink to Final week: the hustle edition
On the final week, I solely focused on presentation notes, refining both the content of the slides and rehearsing what my notes would sound like when I actually presented it.
My goal was to aim for a maximum of 20-to-30 minutes which I thought would be a good meetup talk length. I basically adjusted this to the time we had in total and the number of talks we would have, plus adding into the consideration the fact that people probably wanted to socialise as well.
Being on stage can make you forget ALL kinds of lines, improvised or not. It was very important to write those notes down. For me, this was extra important as I have a habit of forgetting a lot of words and things when under stress.
Initially, I’d set myself the goal not to improvise too much during rehearsal. I only did it during times when I really couldn’t come up with anything that I could write down in my notes. If something good came up during practise, I would write that down. Repeat ad nauseam.
My final rehearsal in the hotel room before the meetup was strictly on-script only with very minor changes to my slides and presentation notes. Also, before the presentation, I added some very quick and small amendments to the notes. Nothing too fundamental.
Stepping into the frayLink to Stepping into the fray
I already knew well in advance that I couldn't just read from the script. I would have to up the ad-libbing during the actual talk to make it more interesting for the crowd.
In fact, when I watched Jarppe Länsiö, a Metosin colleague of mine, present the Architect’s Case where he explained the architectural rationale for selecting Clojure I became more confident of my decision. His talk was a tour de force and contained little if any notes (or any that I saw at least). He made it appear as if he had improvised the whole talk. It was fun and engaging, not least because of its blitzy tempo but also because some new war stories were shared.
After Jarppe's talk, it was my turn to talk. While I’d clocked my presentation during rehearsals to stop somewhere during the 20-to-30-minute mark, my actual talk took me 43 minutes! And with the after-discussion I went well beyond overtime, clocking in at 50 minutes.Me, tuning the ad-lib to 11
The presentation itself went without major problems and there were some questions during the presentation as well as after the presentation. There were also a couple moments where I struggled a bit in trying to explain the concept of Instaparse in a beginner-friendly way. Something I had not planned in my notes. I also didn't expect that there would be people who hadn't really done much with Clojure, but I probably should have!
Show must go onLink to Show must go on
Besides these two presentations, we also heard from Martín Varela about his historical path towards Clojure from the academic world and his current work where he’d, among other things, produced a whitepaper pinpointing anomaly events in logs from stability testing using N-grams or Deep-Learning as part of his normal day-to-day programming work. This was insightful and also gave me some ideas on how to leverage something like this, only simpler, for structured logging data as well (something which the whitepaper did not focus on primarily).Martin Varela, opening up on the perceived difficulties of ze parentheses
All in all, the Clojure Meetup Oulu was really nice with friendly people from diverse backgrounds. The guests had really good questions throughout the presentations and they seemed to have enjoyed their time there! The hosts were also super nice to us even when we went slightly overtime.
And finally, let’s not forget the second most important bit here. The food. We had vegan and gluten-free pizza for all plus inclusive drinking options.
After the meetup, we switched locations to discuss on the meetup topics but also other programming-related topics such as emacs and technical metal. All in all, what a blast!
ReflectionLink to Reflection
If you’ve never held a talk at a meetup before, I warmly recommend doing so as it’s a great experience. It’s not necessary to set a high bar for yourself or strive for perfection nor do you need to write code for as long as I did.
All talks will be different and interesting in their own way, both in terms of content but also presentation style. The most important part is that you feel you want to talk about it.
For me, this was a unique and inclusive first-time experience. I definitely encourage everyone to try it out once you’ve reached a certain level of comfortability to start blabbering about something in front of a small crowd. :-)
Here is the link to my presentation slides: https://www.slideshare.net/metosin/creating-an-experimental-graphql-formatter-using-clojure-instaparse-and-graalvm