What we learned putting on a remote developer conference during a pandemic

In March of 2020, faced with the new reality of COVID-19, the world started to shut down. Conferences, trips, and public gatherings were all cancelled to prepare for what was coming. Now faced with an empty calendar but still wishing something remote could be put on, Fred started scheming:

Within the week, after gathering some input, Fred had the idea for a remote conference during the age of the pandemic: ESNEXT CONF.

Just one question… how do you put on a remote conference? No, scratch that—how do you put on a conference?

I joined Pika in June 2020, and having applied to be a speaker myself and not hearing updates for a month I wondered if the conference was still happening in 6 weeks. Fred admitted he was having doubts about being able to put it on, having just started Skypack the company, and not having enough time to do it all himself. Together, we decided it’d be too important to let drop. Not after so many speakers submitted, so many people showed interest, and us both feeling like more could be done to foster community during the pandemic.

With the event behind us, we can now say that it went much better than expected, and we’re already thinking about a 2nd year. We had over 600 attendees, we raised over $5,000 for charity, and we got some positive feedback from both attendees and speakers saying that they’d attend and speak again.

So, yes, friend, it is easier to plan a remote conference than you might have thought. To prove it, here’s our Year One Playbook. We stole most of it from smarter people that have been doing it longer, which we’ve linked to along the way. To keep it skimmable, we broke it down into five things we’d repeat again, and 3 things we’d change for next year’s conference.

5 Things we’d do again

1. Code of Conduct comes first

As an organizer, if you’ve never dealt with harassment personally, this is something you’ll be tempted to put on the backburner until it becomes a huge problem. But as an organizer, your #1 concern should be fostering a community where people feel safe and included. And that starts (spoiler: but doesn’t end) with a Code of Conduct.

Creating a safe space

A guiding goal principle with our CoC was to “make this an unsafe space for people who make others feel unsafe.” As Holden Schearer put it:

In Maggie Zhou’s post A Code of Conduct is not enough, she outlines some essential truths to understand:

  1. Harassment still happens, even with a code of conduct
  2. Having a [copied-and-pasted] CoC that is never explicitly discussed is almost worse than no code of conduct at all
  3. Don’t ignore microaggressions

In Erin Kissane’s post Why you want a Code of Conduct (and how we made one), she quotes the director of OpenNews, Dan Sinker in likening a Code of Conduct to a fire escape plan:

You don’t do it because you expect a fire. You do it because you could have a fire, so it would therefore be irresponsible not to have a fire-safety plan. In the same way, posting a code of conduct doesn’t imply that your community is particularly rife with harassment or intimidation, but that you acknowledge the existence of those problems, and recognize that as an organizer, you have to to plan for common worst-case scenarios.

Dan Sinker, Open News (paraphrased)

So how do you put all this knowledge into practice? We started with the MIT-licensed CascadiaJS CoC to start with some lessons learned from organizers we respect. But to not feed into “copy-and-paste culture,” we rewrote parts for a remote experience, for example, replacing mentions of “venue” with “online chat.” But because we’re running an online event, we took it a little further.

We feared that an internet troll or two would find their way in to the community, and also feared that internet harassment would be more intense and more inescapable for their target. For that reason Discord was chosen as the community chat because of its moderation abilities (which I’ll touch more on later). For our CoC, we wanted to make it clear that we weren’t taking things lightly:

Any violation of these rules will result in action by conference organizers. Though a warning may be issued in some instances, some situations may require immediate expulsion. Violation may also result in being prohibited from future ESNext Conf / Pika events as well.

We wrote the CoCs for the people most likely to read them—those that have felt unsafe. To them, we wanted to say “for anything that happens, we will take action, and we may not bother warning them and allow bad behavior to happen repeatedly.” But mostly, we viewed enforcement as our baseline—we had a plan for dealing with abuse, and the CoC was merely a declaration of that plan. But it’s putting the plan into action that keeps things safe, not some document online that tells people what to do.

Fortunately, we didn’t have to ban anyone for our first round, but as with the “fire plan” analogy, the ideal scenario is you never have to act on your plan.

As Erin Kissane put it, “your CoC isn’t good enough (and neither is mine).” It’s a work-in-progress, and will require dedicated time and energy for every event you put on, forever. In our first year of ESNEXT CONF, we did not have nearly as mature a safety policy as other events. But that won’t stop us from listening, learning, and trying to be more proactive to prevent abuse before it happens (or at least limit its impact).

Further reading

2. Use Discord as the hub

To paint a complete picture of the conference: we had 12 speakers that we wanted to “livestream” the pre-recorded content (we’ll come back to the pre-recorded decision in the next section). That worked for each day… but how would we tell people where the livestream was from one day to the next? Email? A chat?

Thinking back to in-person conferences I went to, there was either a Slack group organized by the conference itself. Or if there wasn’t one, the community created one. Always. It was a great way to not only discuss the talks but also connect with one another. “We have an extra seat at our lunch table if anyone else wants to join!” kinda thing.

Fred and I felt that it would be an essential part of the conference to have that “home base” since the livestreams wouldn’t be that. We decided on Discord largely because of its anti-harassment tools.

Slack is bad at safe communities

We decided to use Discord over Slack because However, Slack is a bad choice for community-building because:

  1. No blocking. This is the only reason you need not to use Slack. There is no way for someone to outright block a harasser. And nothing will chase people away from a community faster than this.
  2. No moderation. Slack is designed for a company with HR practices, probations, and firings to handle misconduct. We can’t “fire” anybody that is disrupting our community safety; we need to ban them.
  3. No role-based access. We can’t equip other people with the ability to moderate, ban, and control community safety in Slack

You can read more about this in Chris Biscardi’s post Why use Discord for open communities (Hey! He was one of our speakers!).

Conversely, Discord provides all the above, plus the awesome ability to disable messages when we couldn’t moderate (which we’ll get back to in the “Closing the Venue” section).

Discord offers role-based access to make sharing the load of community enforcement easy

Because Discord allowed us to a) have fine-grained control over the public channels, and b) empower every member to block anyone they needed to, we created a space with plenty of tools to keep people safe. I think of Discord like Kevin McAlister’s house in Home Alone: not impenetrable to abusers, and it takes active effort to enforce, but enough lying around to make the experience painful and tools to kick people out when needed.

Discord has a trap or two planned for bad actors

AMA Channels

Having AMA (ask me anything) channels for the speakers turned out to be a great success. Attendees were excited to ask speakers questions, and the speakers found that audience interaction that was missing while they were recording the talks.

Our AMA channels on Discord turned out to be a big hit

But I think the most special part of this was: because we livestreamed the talks, everyone was watching at once and “on the same page.” Though we were remote, we were together, sharing an experience at the same time. I personally noticed the “live” secret ingredient in the chats. Active chats for the current speaker ended up not only being longer in length, but attracted more people to participate.

I can’t take full credit for the idea, though. I actually stole this one from Josh Nesbitt’s post How to run an online conference. He did 1 Slack group per-speaker, which as a lazy person I translated that to 1 discord channel per-speaker.

3. Pre-recorded talks

I had actually attended a remote conference once where all the speakers livestreamed via Zoom. I won’t say which one, but it definitely had its fair share of hiccups (one of the speakers even failed to show up 🙈).

We wanted to avoid complexity, stress, and time (also we wanted to have multiple showings), so instead we opted to pre-record the talks. This not only gave the speakers more time to prepare, it also let us run a really smooth conference with no hiccups. A few decisions paid off really well:

Loom

Loom records your screen and camera with no setup needed 💯

Using Loom as our recommended recording software was amazing. Fred and I use Loom a lot to communicate about Pika things, but it turns out it’s great at recording conference talks, too. There are so many advantages:

  1. Easy to use. Just because developers are technical doesn’t mean they’re pro video editors. Loom makes screen recording easy across platform.
  2. Shows face by default. Showing a speaker’s face is important. The talks wouldn’t have been the same without that element.
  3. No editing and a standard format. Rather than have to deal with all the different video formats I’d get, Loom made things easy.

We were surprised that almost all our speakers used Loom, and found it easy and a great experience. Win! While the rest did edit their own videos because they felt comfortable, we made it clear that we wouldn’t be providing support. Loom took a huge burden off of us.

YouTube Premieres

A test run of YouTube Premieres

If you’ve ever livestreamed via YouTube or Twitch, you know how much of a pain it can be fighting with OBS or some other streaming software, managing timing, etc. Not only is the learning curve steep, but a lot could go wrong during the conference—if the construction across the street from my house hit my internet line, bye-bye conference! It can be a fragile thing relying on all the networks and services to be up.

If that wasn’t enough, it’s actually harder to livestream a pre-recorded video than it is to simply livestream. You’d need a device playing the video, possibly some hardware to capture the output of that video… With that learning curve being steep as it was, we weren’t confident we’d be able to deliver a quality experience without investing in a professional setup.

But not so with YouTube Premieres! Premieres allow you to take any pre-recorded video and schedule it to air at a certain time. YouTube then “livestreams” the video so everyone is watching at the same time. But the best part? It’s 100% automated so you don’t even have to do anything. Once you’ve uploaded the video, filled out the details, and scheduled it, the conference runs itself! That left Fred and myself focused on participating in chat and moderating.

YouTube Tips

If, like myself, you’re not a YouTube pro, you’ll probably find the following tips helpful:

  • Create your YouTube account 24 hours before uploading. YouTube won’t let you schedule a Premiere right away.
  • Upload your videos early in advance with plenty of time to process. Rule of thumb is: for every minute of footage, allow 1.5 minutes to process. If your video isn’t processed, it can’t be viewed. While you may find your videos process quicker, good for you! Sometimes it’s quick; sometimes it’s slow. Plan for the worst and you won’t be stressing and getting down-to-the-wire.

4. Short days

ESNEXT CONF is a remote conference. People didn’t clear their schedule, they didn’t book a plane flight and hotel. They’re at home, with tons of distractions and family, and their time is precious. So we wanted to embrace that and have short days.

We had 12 speakers give 25-minute talks. We broke that up into 3 speakers per-day, which meant 4 days of content. Because some talks were a little shorter, the content clocked in at under 80 minutes per day (aside from the first day where Fred gave a talk), and that was including ~1 min introductions by me and a 2 minute break between each speaker.

We got good feedback that that length—under 1.5 hours—was the perfect length for people. It was a nice pick-me-up for their day, without disrupting everything. Some companies even bought group tickets so the company could watch at home together! The length of content is something we’d definitely keep.

5. Closing the “Venue”

Fred announcing the “Venue” is open for Day 2

In planning the conference, we already knew we were going to use Discord as the community hub, but that left the question of moderation open. If we just left it on 24/7, would Fred or I have to be always online? Watching?

Fred threw out a weird idea: “What if we just turned off Discord while we slept?” It was an off-hand solution to the problem of moderation that slowly made more sense the more we talked it through. That experiment ended up having several positive impacts:

  1. It made moderation manageable. We had created a space where you knew that if it was “open,“ that Fred or I was online and ready to help you if needed. You were never alone in the Discord. Also, it meant Fred or I didn’t have to be online 24/7.
  2. It concentrated conversation. Because the Discord predictably opened and closed 1 hour on either end of the talks, you knew that everyone else in your showing was going to be online then, too. Also, speakers weren’t getting pings at all odd-hours.
  3. It felt more conference-y. We started calling the Discord the ”Venue” and it hopefully made it a little more fun thinking of it in that light. Because it felt like a venue we even had people joke about going to after-parties (😭 which I wish we could do)!
  4. (Hopefully) It eased stress. While I can’t confirm this one, I can only speak for myself. It made me feel easier knowing I wasn’t “missing out” on conversation just because I was away. If I’m there, I’m there; if I’m not, it’s closed and no one else is. One of our goals for the conference was “not to overwhelm” people, and this fit into that story.
Positive feedback from one of our speakers

It was a tiny decision we did to solve a problem of moderating, and ended up being well-received. People didn’t push back at all! They seemed to get on board, and hopefully appreciate that the conference itself was timeboxed by its design.

And this was only possible in Discord. In Discord, it’s as easy as disabling one Send Messages toggle switch for @everyone:

Disabling messages in Discord is as simple as a single toggle switch

3 Things we’d change

1. Improving diversity of speakers

Fred sent out a CFP back in March, and the people submitted were mostly people from his extended circles (we didn’t advertise it much). While Fred has a more diverse network than other white males may have, it was still limited to a narrow slice of people.

As a result our CFP was filled with mostly white, mostly male speakers. While this is a greater problem within tech, it can be fixed. Just as it’s wrong for any company to blame their lack of diversity on the applications they got, it’d be wrong for conference organizers to blame it on the CFP.

I say this not as a knock on the amazing, incredible speakers we had. They all deserve a platform, and every one of them brought great ideas to the table. And the speakers actually raised it publicly to me and Fred, too, which is why I feel comfortable putting it in this blog post. But all that said, lesson learned: next conference we’ll be more active in reaching out to speakers that may not have had the chance to hear about it.

2. Improving community involvement

Back to A Code of Conduct is not enough, one line highlights a failing we had with our first run of ESNEXT 2020:

We’ve found it is important for attendees themselves to play a role in developing the event’s culture, rather than having it all dictated, owned and enforced by organizers.

Maggie Zhou

I can’t claim that no harassment took place because of ESNEXT 2020. I can say no one reported harassment, or that Fred or I didn’t perceive any happening in the public spaces. But it’s false to extrapolate that to nothing happened.

Running a second year, we’d like for all attendees to feel empowered to enforce the culture. With a more connected community, hopefully there’s a tighter fabric to keep out bad actors.

I don’t really know what that looks like, though—do we simply give everyone the ability to ban? That seems chaotic, and seems like it would just give potential abusers more power. It’s something I don’t have an answer for now.

3. More time planning

Neither Fred nor myself had organized a conference before (though I had run a local meetup for a year and a half, which can sometimes feel like baby conferences with high turnouts). And though this was my major focus through June, it still wasn’t full-time for me, with me also helping prepare for the Skypack release we wanted to launch at the conference (I know, I know, it was too much in hindsight).

This was our rough timeline:

  • Week -4: notify speakers
  • Week -3: email out recording pack (info on how to record, sending out microphones + webcams to those that needed them)
  • Week -2: post schedule, email blast to attendees
  • Week -1: speaker talks due
  • Week 0: Conference! 🥳

The oversight was trying to give speakers more time to record, which meant I ended up recording my introductions and editing all the footage over one nonstop weekend (and even made an editing mistake 😅). If there was going to be someone inconvenienced at all, it was going to be me. But for next year, we’d probably do something like:

  • 3+ months before: reach out to speakers we want, CFP for the rest
  • 2+ months before: reach out to sponsors
  • Week -8: notify speakers, send out recording pack
  • Week -7: post keynote speakers, start email blasts + social media marketing
  • Week -5: (more marketing)
  • Week -4: post full schedule
  • Week -3: (more marketing)
  • Week -2: speaker talks due, start recording / video editing
  • Week -1: finish recording / video editing
  • Week 0: Conference! 🥳

Keep in mind that I have no idea how to run a conference still. Adopt this timeline at your own risk. But the main point is we’d probably at least double the time allotted to organizing everything.

Summary

Tools

There were a few more tools we used to organize everything, all of which we’d use again. They weren’t mentioned above because there wasn’t a lot to say other than it was great! Use it! Here’s our full “stack:”

  • Loom: recording talks (free)
  • YouTube Premiere: our livestream (free)
  • Tito: ticket sales / event page / ticketholder emails (free minus transaction fees, because we donated to charity)
  • Mailchimp: ticketholder + general interest emails (free)
  • Discord: conference hub (free)
  • Adobe Premiere*: basic audio + video editing (not free)

* Adobe Premiere I’m “meh” on; I only used it because I have CreativeCloud and I’m familiar with it, but I’m sure other editing solutions exist

Running ESNEXT CONF 2021

Only time will tell if we’re truly ready for another event, but based on attendee, speaker, and our own internal feedback, it seems likely we’d do something again.

Here’s to hoping the next conference we throw will be even safer, more inclusive, and more fun for everyone! And now, if you’ll excuse me, I need to take a long weekend after staying up late for a European livestream showing.