I’m back at my desk at Giant Machines after an amazing week attending FullStackFest 2019 in Sitges, Barcelona with a couple of my colleagues from Giant Machines, Josh and Nem. FullStackFest is a conference I’ve attended and recommended since my first time at FutureJS in 2014. The talks, workshops, organizers (Codegram), and attendees always manage to energize me every year. That conference introduced some of the core technologies I use daily, such as React and functional programming. I’ve been particularly impressed with the simultaneous transcription, speaker diversity, COC adherence, speedy production of talk videos, as well as fun networking events and opportunities.
After a week vacationing with my family in the south of Spain, I went into #FSF2019 expecting a typical attendee experience, but as the 3 days went by, I ended up giving my first lightning talk there and having so much more fun than ever before!
I admit I’m the kind of person who has started half a dozen side projects about art, science, travel, productivity… and so far finished none of them. They’ve all been on hold for a few weeks since I started deep diving into algorithms for maze generation this summer.
This particular story starts nearly 20 years ago, when I got my start in tech teaching myself Flash 4 from a book while working a tech support night shift for an Israeli startup in Tel Aviv. In those days artists and coders alike flocked to Flash and I was endlessly inspired by generative artists like Joshua Davis and Jared Tarbell, both of whom spoke at leading conferences in those days.
In recent times I’ve ported old Flash experiments to HTML5 Canvas, and this summer, the team at Giant Machines participated in an afternoon machine learning workshop in NYC, using P5.js and ML5.js. Mazes are a form of generative art and studying and coding them is what keeps me up late at night these days. My interest in the subject has spread to a handful of colleagues, both designers and engineers, after we coded up some samples together in a study session last month.
The day before the conference began I received Codegram’s usual welcome email. I noticed that there was a link to submit a lightning talk but I dismissed it, figuring, “If only I had thought of that weeks ago, I could’ve come up with something to talk about and prepared a talk!”
During the morning coffee session between conference registration and the keynote, I ran into Swizec Teller, a developer and educator I’ve followed for a few years because of his generous teaching and live coding in the React/D3/Dataviz world. I asked him if he had combined React with HTML5 Canvas, and he recommended React Konva. He then asked what I’m working on, and my response of, “maze generation algorithms,” sparked a five-minute chat on the various ways it can be done.
As I sipped my coffee it occurred to me that I have a lot of code from those late nights and, if I can talk about maze generation for 5 minutes in casual conversation, maybe other folks might be interested in that topic, too. So I decided to submit a talk from my smartphone as people started to enter the auditorium for the start of the conference.
The five-minute lightning talk format is both easy and challenging. It’s easy because you just don’t require that much raw material. You’re merely introducing a topic or showing off a couple of quick things. However, if you have a lot of material or lots to explain, it can be even more challenging to boil it down to the bare essentials and still have it make sense. I became worried about exceeding the time limit, and yet I couldn’t present too quickly since many audience members may not be native English speakers and there would be simultaneous transcription going on as well.
Regardless of the short format, I still wanted to explain some fundamentals of maze generation, show a few concrete examples, and wrap it all in some kind of story. I knew better than to assume working WiFi connectivity or even the availability of my speaker notes, so I decided to pretty much bake my notes right into my slides and in the code samples themselves, guaranteeing their availability, even offline.
The lightning talks were scheduled to be delivered after lunch on the third day of the conference. That morning I got an email informing me that my talk had been selected! That was, of course, great news since I had been preparing for two days in the hope that I’d actually get a chance to give the talk. Probably the easiest part of the preparation was the rehearsal, since it only needed to be in tiny, five-minute chunks, and was easy to fit in that morning. The big question for me remained, “Would the audience be even remotely as excited about this topic as I was?”
As I ascended the stage I couldn’t help but snap a photo of the audience. I was just so excited to have the chance to talk about my newfound passion, even for only five minutes. I constantly feared I would go over time and and someone would cue the exit music. But even in the face of this concern, I enjoyed every second on stage and it sounded like others did, too. I tried to be funny — people laughed. Then I got punny — people laughed harder. The code animation examples, like my words, flew by so quickly. It was all a blur, and with all those stage lights glaring down, it was exciting!
The lightning talks were followed by the M.C.’s closing comments to end the three-day conference. While at the after party down at the Port of Sitges, I got to speak with many interesting developers who had very kind words to say about my talk. More importantly, however, they told me about their own projects, mazes they once coded back in school, or how they’ve more recently tried to approach similar challenges. We got to brainstorm over beers about how to solve certain situations with this or that algorithm. We talked about the Mazes for Programmers book by Jamis Buck, which is an incredible resource full of inspiration and examples. (Bonus: I got to Slack with a Belgian conference attendee who shares the same last name as me: Maes, which in the U.S., we tend to pronounce just like maze.)
People expressed interest in learning more about mazes and possibly even collaborating in the future. All of these interactions were charged with genuine excitement about an area of programming probably few of us are actually getting paid to do on a daily basis. On the other hand, a large part of my job involves inspiring others and helping them explore new skills while solving problems. Perhaps this is exactly the kind of diversion we all need to remind us of the joy of play and discovery, the kind that can mesmerize you and keep you busy well into the late night.