A few days ago, I gave my first conference talk at the German AWS Community Day 2020 and now I intend to take the time to reflect on that experience. I talked about User Management with Cognito, Fargate, Python and the CDK, but the content of the talk is not really my focus now. Today I’m going to share my experience of preparing and delivering a talk at the conference.

This year’s community day was an online conference, usually it would be in person, but because of the Corona pandemic this isn’t really possible this time around. These circumstances made preparing for the event an interesting challenge, because the talks were recorded beforehand.

That had some benefits and also some drawbacks, as pretty much all things do - except pizza. On the plus side, you could potentially edit the talk and fix mistakes in your delivery. The thrill/fear/panic of doing a live-demo was also reduced, which might be a good thing, depending on your risk tolerance. The main problem with recording a talk is that you can’t react to what the audience is doing. If you mess up and lose them, they’re gone. There is no way to circle back and explain it in another way.

The opportunity to respond to the audience and get feedback is fairly limited in an online event anyway, but here the only medium to interact live with the audience during the talk, was through chat. The organizers fortunately realized this, so there was a live Q&A at the end of the talk in a live stream.

Unfortunately there weren’t many questions to answer after the talk, which could either mean that the talk was very good and addressed almost all concerns or, which is more likely the case, the platform and/or format of the event added additional barriers to people asking questions.

Speaking from my own experience as a technical trainer, giving courses online during Covid, I think the online part had a significant influence on this. I also noticed there are far fewer questions in my online courses compared to the in-person Trainings. To be fair, there is a difference between asking a question as a member of an audience with a size of about ten or more than 80, which probably accounts for some of this. I’d be more likely to ask the presenter in private afterwards in the latter case as well.

Looking back, I think playing recordings of the talks, instead of streaming them live, was a wise decision by the organizers. It’s significantly less complex to do it that way from an organizational perspective, because you don’t have to coordinate as many people and speakers for live events and know beforehand, that everybody will show up. I imagine it makes the experience considerably less stressful. Being able to schedule the talks and know they’ll start on time, is probably great as well.

It’s likely also better from a technical perspective, because the talks can be cached at CDN edge nodes beforehand, which should improve the performance for all viewers. Balancing that out with the live Q&A, which followed the talk, was a good move. Although you had to switch the room to join, which probably meant that many people in the audience chose not to do that - another barrier. Maybe there is a better way to do this next time around (hopefully we won’t need it, because we’ll be able to meet in person again…).

The event was held on accelevents.com and in my opinion the platform worked reasonably well, but some UI-decisions are just plain weird. To me the chat window with the private chats and public channels seemed like a mess, but I appreciate the option of responding to messages with emojis similarly to what I’m used to in Slack or MS Teams. (Side note: the “:D” smiley got converted to a sword emoji, which was weird.) The option to create a profile as a participant complete with interests, a profile picture and lots of other details was cool and encouraged by the organizers, which meant you even got an idea of who you were talking to. For me the video quality of the recorded talks was great. In contrast the live stream parts lagged behind about 20-25 seconds, which isn’t too bad, but I encountered a few hiccups and missed frames - that may be just my machine though. All in all I liked the platform.

Reflecting on the way I prepared my talk I’m quite happy with most of the things I did. I should have started a little earlier, but realistically that’s almost always the case and knowing myself I won’t learn from this experience (again). In the end I invested a couple of long evenings and a weekend into the talk, but I think the result was worth it. The best thing I did to prepare, was having a few friends and also some of my very experienced trainer colleagues watch a beta version of the talk (thank you Emilia, Jonas, Gernot and Uwe!). Their feedback has been very valuable and encouraging to me - it made me invest in some professional lighting, which made me visible in the video and will be useful in further training sessions. I also deactivated quite a few VSCode extensions for the demo, after I got the feedback that there was a lot of clutter and pop ups in the earlier versions that distracted from the content I wanted to draw attention to. I had completely missed that.

Demo

Next time I’m doing something like this, I’m going to put some googly eyes on the webcam. I had so much trouble making eye-contact with the camera, which is not a problem for me in person. That’s probably something, which will feel less weird with more practice as well. Something I wasn’t really sure about, were the slides I made, because there was some mixed feedback on the first version of my recording. I’m a big fan of minimalistic slides without the typical header and footer with logos and stuff like that, because I’ve seen too many generic corporate slide decks.

Slide-navigation

My slides are rather empty (streamlined would be a more positive word) - I don’t believe in the presentation being the handout as well. Some of the test audience felt it would help if the outline of the talk was visible somewhere - like a breadcrumb navigation. I decided to try and make clearer where we are in the presentation using a subtle navigation on each subtopic slide. Maybe it was too subtle, but I wasn’t convinced it was necessary after I changed those slides to a color that stood out.

Preparing the demo of the talk allowed me to learn a lot more about the topic as well. I’ve written two articles on the subject earlier this year on the tecRacer aws blog, but I decided to build it (almost) from scratch again, because since the original version, the CDK had roughly 1745 (+/- 3) new releases and I wanted to use the most recent additions. Building most things again showed me how much progress I’ve made with the CDK in the past months, which felt good. I also found a few flaws in my original setup - some of which I admit I knew about at the beginning of the year and noted in comments in the original code. Since I was going to talk to a larger audience about this, I decided it was probably best to fix those.

I took the time to work with AWS support on resolving the bugs I found and really tried to understand what was going on. This reaffirmed two things for me: 1) Cognito is not intuitive and 2) the Cognito documentation is an inaccurate mess in the best of times. When the service works, it’s really good, but getting it to work is very frustrating - and I’m guessing, I’m one of the more experienced AWS customers. That also made me confident, there were a few people that could benefit from my experience messing with the service.

With regards to the tools I used to record the talk I already wrote about what I was going to use in an earlier article and I’ve stuck with those. I used Open Broadcaster to record the video and audio and OpenShot to edit it. I tried using the chroma key video filter, but without a green screen I wasn’t able to get it working the way I wanted and that green screen wouldn’t have arrived in time for me to meet the deadline. After I handed in the finished video I got the feedback from one of the organizers that the audio was too silent, so I used ffmpeg and Audacity to edit that, which I also wrote about.

I want to touch upon time constraints. We were supposed to keep the talk to 40 minutes, which was challenging for me in the beginning. The first recording of my talk was about 45 minutes in length and even then I had cut the demo short. This made me focus on what were the most important points I wanted to convey. I had to cut some pretty animated slides that I had spent way too long building, which explained the exact interactions between Cognito, the Application Load Balancer and the Client. It hurt a little, but was necessary to allow me to show more of the application I had built. In retrospect I think the time limit was a pretty good balance between having enough time to dive deep into a specific topic without it ending up as a long-winded lecture without a clear focus.

The last point I want to talk about is language. This community day was held in German, but we were allowed to have our slides in English. I listened to a few other talks and people took different approaches to this. Some had English and others German slides. Some even used the German terminology for AWS services, which was really confusing to me. One of the first things I tell my students in every training I give, when I show them the AWS console, is to set the language to English, because nobody uses the German terms. Maybe this is just me, but I’d have preferred it if the talks had been in English, because these online conferences make it easier to attract an international audience. On the other hand I understand that it was about the German AWS community.

Conclusion time: Preparing for and giving a talk at the German AWS community day has been lots of fun. Thank you to the organizers for creating this event and the other speakers and audience for making it a pleasure to attend. I’d be happy to speak again next year, preferably in person, but that’s something that’s not really within my control.

Thank you for reading this article till the end, hopefully you enjoyed it. If you have any questions, feedback or other concerns, feel free to reach out to me on Twitter (@Maurice_Brg) or any of the other social media channels below.