Six Lessons Learned and a New Tool Published After Organizing My 1st Virtual CodeCamp

6 lessons learned while moving the NoVA Code Camp online, and announcing Sessionized, a new open source app for Code Camp organizers

Six Lessons Learned and a New Tool Published After Organizing My 1st Virtual CodeCamp

2020 hasn't generally been an awesome experience, fortunately organizing NoVA CodeCamp in a post-COVID world was.  I met wonderful people, gained an appreciation for all conference organizers, and felt like I helped the developer community grow.  

In this post I'll share what I learned organizing an event for my first time ever, introduce an open source tool I just published for other organizers, and hopefully provide information to help decrease stress for others figuring out how to move forward in a post-COVID world.

1. Expect More Response in Call for Speakers

NoVA Code Camp has used Sessionize for a long time to capture and evaluate presentations.  It costs nothing for free conferences like ours, is great for communicating with speakers, and as I'll explain shortly: has an awesome API.

During call for speakers we received 75 fantastic submissions from 37 speakers that came from a variety of locations and time zones (not just Northern Virginia).  75 was about 50% more than usual thanks to being online.  However, reading through 75 presentations turned out to be a lot of work and I wish I'd started earlier and known to put extra time into the schedule for evaluation.

2. Plan Shorter Sessions

Historically our sessions have been 75 minutes each, which equates to 5 sessions in a track.  With 37 speakers we would have need over 7 tracks!  We only had 4 volunteers, so that simply wasn't going to work.

At the same time, I was interviewing several experienced online organizers to get tips and tricks (thank you Alex Slotte, Jim Novak, and of course Ed Snider the main organizer for NoVA Code Camp in years past).  One individual suggested that online audiences had a shorter attention span and that sessions should be shorter.

Voila, with a little culling (not easy!), and a reduction to 60 minutes (45 for presentations + 10 minutes for Q&A + 5 for a coffee break) we made it all fit.  I have no data to prove the shorter attention span theory, but the conference timing seemed to work out nicely.

3. Create Speaker Cards

Marketing an online event is substantially different from marketing an in-person one.  Once call for speakers closed we did the normal things: e-mailing previous attendees, notifying leaders of nearby meetups, and creating a registration page on Eventbrite (which also has no cost for free conferences).  That achieved a moderate response.

Then one of our speakers, Gant Laborde, who speaks regularly, made the suggestion of "speaker cards" to help the speakers to promote the event like he'd seen at a React conference.

Sounded great, but the thought of making 27 images in Paint.Net was cringey (as my daughter would say), and so (of course) I wrote an app instead.  It pulled Sessionize data from their API, provided text for the 27 tweets with speaker Twitter handles, and linked to a "speaker page".  

The speaker page it linked to provided a picture, presentation description, speaker bio, and a link to our Eventbrite registration page.  Then I just took screenshots of each speaker page, copied the tweets, and pasted them all into Buffer for posting slowly over many days.

It worked beautifully.  The speakers loved it, it helped them promote their talks, and we ended up with nearly 200 registered attendees by the day of.  Incidentally, that 200 translated to 70 at peak, which is a good showing historically:

4. Allow Audience Interaction

Audience interaction is a critical element of a Code Camp, and conferences generally.  But how to reproduce that in-person feel while preventing unsavory individuals from doing inappropriate things?

We chose Discord to solve that problem.  It allowed attendees to interact with each other and the speakers and the organizers.  And it has automated tools for spotting inappropriate content.  We additionally posted a code of conduct and had one of our organizers (Stan Reiser) who was an expert with Discord set up permissions and train everyone on how to mute and boot.

5. Perform 1-1 AV Checks For Everyone

Personalized one-on-one AV checks for each speaker probably saved the conference.

We'd settled on Microsoft Teams for the main event after much research and deliberation because it was inexpensive and their "Live Events" feature looked awesome for attendees.

Live Events allowed attendees to easily join without authenticating, provided Tivo-like features of pause and rewind, was mobile friendly, recorded presentations for later viewing or posting to YouTube (see also our new NoVA Code Camp YouTube Channel), and provided a moderated Q&A.  

Sounded great, but not everyone loved Teams.  While the experience was excellent for attendees, getting speakers logged in as guests accounts in our single-user Office 365 account was finicky.  The good news for subsequent organizers: we talked with a Microsoft employee who said these were known issues and will be resolved in the next update.

Regardless, the number one piece of advice I can offer other organizers: leave a couple weeks in the schedule to do AV checks for every single speaker.  27 AV checks would be too much for any one person to do while staying employed. Fortunately, we assigned one moderator as MC for each channel so no one person had to do more than 7 AV checks.

In the check we ensured everyone could get in (the hard part), their audio sounded crisp and clean, the moderator pronounced their name correctly, they understood the 10 second delay, and understood how to work the moderated Q&A.

6. Sell Your Speakers During the Event (Announcing, Sessionized!)

Everything seemed to be in order for the big day, but one last concern: Having attendees navigate through 27 presentations to pick which ones to attend could be intimidating.  And how to keep people engaged after a talk ended?

The default grid that Sessionize provides (pictured earlier in green) was ok, but it isn't especially pretty or usable.  It also doesn't provide links to "watch now".  It wasn't going to cut it for an online conference.

Fortunately implementing per-track and per-time slot views with links to speaker details pages with the app I'd already started only took a couple more evenings:

Oh, and the moderators also asked for slides to show when out to lunch or if there were technical difficulties.

But fortunately we never had to show that last screen.  The CodeCamp went off without a hitch.  Thanks to a great team (Scott Lock, LaBrina Loving, and Stan Reiser) and a lot of hard work up-front, all of the speakers got in, none of the Internet's unsavory characters did, and a good time was had by all?.

And since it wasn't much extra effort to genericise and open source the tool, why not?  Thus I just published sessionized.  I hope it helps another CodeCamp organizer somewhere.  You can view NoVA Code Camp's implementation here.


2020 has brought many changes, most of them not so great.  However, for Code Camp I think our changes were mostly positive.  Of course I missed the in-person interaction (and the cronuts), but moving online brought us our first international speaker (thank you Emanuil), the coffee was better (no offense Stan), we had a long time volunteer turned first time speaker (Go Vijay!), a new volunteer (yayy LaBrina!), and many excellent first-time and returning speakers to NoVA Code Camp (thank you all!).

Overall we had an excellent Saturday of fun, learning, and networking all while staying safe.  There was much rejoicing.  And if you're an organizer I hope this post will help you find your way to celebrating at your next event, too!