As memory fades, I think it’s easy to forget just how absolutely ramshackle slapdash — but understandably, acceptably slapdash — so much of 2020 was. For SPJ, that entailed waiting probably too long to admit its in-person convention wasn’t happening (likely because the hotel that was hosting it also waited probably too long to let SPJ off the financial hook) and pivot to a virtual conference. For whatever reason, this also entailed doing so without meaningfully pushing back the date of said conference despite being able to host it whenever it was right and convenient to host it.
With all that chewed and swallowed, it fell to me to figure out a strategy for hosting the virtual SPJ 2020 conference, and because time was short (and more because I was impossibly sick of Zoom meetings and hypothetical strategizing by this point), I decided to just tell the powers that be that they should leave me alone for a couple weeks and I’ll be back in that period of time with a product instead of a plan. Just trust me!
That usually doesn’t work in this age of meeting overload, but because everything was so slapdash and weird and no one knew what else to do, the powers that be said “sure, ok!” and let me be. And sure enough, in two weeks or so (but not much “or so” because time really was super short to have a conference platform ready, never mind a platform that also needed to start over with taking registrations for a conference that was creeping steadily closer), I came back with a fully-furnished product that was, once I plugged in the schedule, fully ready to go.
The whole thing was nearly completely database-driven, which meant not only that it was capable of sorting and dynamically generating pages for sessions, schedules and zoom links, but it also let people register, immediately receive a customized passkey that gave them access to the sessions (both live and on demand), access the private SPJ 2020 Discord server, and enjoy the conference, even if they registered while it was in progress, without ever needing to wait on a member of SPJ’s staff to virtually check them in and give them access. There was a self-serve passkey retrieval page for anyone who lost theirs, and every feature had plainspeak documentation accompanying it to make the whole thing pleasantly easy to use. During the weekend of the conference, we got only one email from someone who needed assistance getting in, and that was more the fault of a power-tripping email spam filter than the platform itself.
Additionally, I tied the schedule into the SPJ calendar database so that in addition to taking advantage of all the infrastructure and export/sharing features that thing has, it allowed the schedule to basically come alive — showing what live events were on deck or in session and instantly joinable (we typically had 5-6 sessions running concurrently), separately showing which on-demand stream replays were available, even displaying on an events page how many minutes until an event starts (or, if it was underway, how many minutes it had been underway). It had the trimmings of an app while not being some slow, obnoxious Javascript-laden app. You can do these things in pure CSSHTML if you really want to!
As a bonus, I made the whole thing pretty (as I’m wont to do) and, to compensate for what I had to believe was universal Zoom fatigue, added some fun touches to give the whole thing the kind of pulse one expects from a live event. Little animation flourishes on the front page, a Discord server setup that allowed me to play virtual emcee, even a little drop of animated confetti when someone successfully registered and got their passkey. You would not believe how much people loved that little detail, but at the time, when everything was so dreary, some small unexpected thing like that really got to people in a good way.