I spoke at HTML5 App Developers in New York on April 16th. John Paul approached me two months ago and asked if I would present. Until then, I hadn’t considered speaking at a meet-up because I didn’t have anything to share. When John Paul asked me, I said yes because I knew it would be a good opportunity. I had never spoken on a technical topic, but I had been to enough to know what to prepare.
Upon submitting my talk topic a month ago, I decided on Computer Vision (CV) and Machine Learning (ML) in JavaScript. I never studied complex math or computer science in school, so I needed to research the topic to preparing a talk.
Before picking my talk title, I did my share of Google-ing around for potential leads. I made sure Javascript and ML were existing topics. I also had read of Computer Vision applications to e-commerce filtering stores. I made sure people had written on the topic and looked for codebases I could learn from.
I collected all the resources I found in a Evernote pad. I used Evernote for the ease of sharing between devices. I have a work computer, personal laptop, tablet, and cell phone. Whenever I had time, I looked for links and added them to my document. With ever link, I added a short description of the content. I would reorganize the document in priority of usability and value.
Once I had enough resources to pick from, I began gaining a high level picture. I only Googled and collected links on first impression. After looking further into the topic, I realized I made a huge mistake. The resources I found were of ML and CV with JavaScript, but not with the browser. The resources were Node applications. They were no different from the C++/Python/MatLab/Java alternatives. This was a problem.
Talking to people and Github search saved me in the end. I also looked on HackerNews and sought out email newsletters on ML. I used Github repository search and filtered out backend languages and found JavaScript-only projects. Also through reaching out to people through their blogs and Twitter, I was able to get insight into resources to look into. Talking with people helped speed up my ability to identify the “best” resources available.
After securing resources, I focused on gaining a lower-level of how the resources functioned. I was able to read and understand the JavaScript, but I didn’t understand the principles. I found an online course held by Stanford’s CS program. The resources I found mentioned the class. The class provided a full-spectrum of the ML mechanics and familiarized me with the vocabulary.
Through reviewing the class, I realized it was impossible to grasp the topic before the presentation. There was too large of a gap between what I understood and what I needed to know. I didn’t understand linear algebra.
I spent time to understand the primary concepts, but ignored mastering them. I looked at matrix math, linear digression, and the referenced algorithmic methods. I didn’t understand the depth of the algorithms, but I understood what they did/didn’t have the capacity of doing. Through this, I was able to synthesize the concepts using analogies. Instead of presenting the terse concepts in full, I could present the analogies.
Finally, I decided how I would present. I synthesized the materials I found. I separated the materials into a presentable form. I started with the broad concepts. Then I moved to explaining low-level behavior. Finally, I planned to present examples. I ran the presentation structure by John Paul. After hearing his thoughts, I restructured the presentation to focus more on code and less on concepts.
Meet-up talks are on a technology/library the presenter made. In my case, I didnt have anything to showcase. I felt the libraries and topics were obscure enough that people would value from the exposure. After restructuring the material, I planned to make a photo-rich presentation.
The presentation itself was first written out. I wrote out one line-per-slide in a Word document. Once I had the majority of the presentation, I started looking for images to go with each line. I had an idea of what I wanted to show for each line, so this process was a matter of collecting resources. After I collected all the images and made the respective gifs, I slapped it all in a Powerpoint presentation. I printed out the text to read, so the computer would only present slides.
The preparation helped me during my actual presentation. Although I was nervous, I knew exactly what to say. I set up a timer for myself when getting on stage, so I knew if I was behind schedule. By the half-way point in my presentation, I stopped reading from the prepared text. I had already gotten in the zone and didn’t need to have a guide. The talks delivery was key, so even though I didn’t use the prepared text, it comforted me to have.
I didn’t know anything about ML or CV. I couldn’t have be happier for accepting to talk. I am confident through the preparation, I become more familiar with ML and CV than I could ever have expected to be. The research also gave me some good ideas for future projects and talks. I realized through researching that there were a lot of applications of ML and CV that I expected, but couldn’t find. The topic’s complexity is a barrier for applying the concepts to everyday problems people would enjoy.