A Virtual White Elephant

2023-12-09 : previous : next : index


Three years ago, I took part in a very special Christmas party. For many people, compared to all other things I did, it was this one specific party that they found most memorable.

The team that I was in (known as DCSW) had an annual tradition of running a White Elephant game. This wasn't the average gift exchange were everyone brought their own budget items of dubious value. For our team, it was an entire production, with a pre-game presentation showing highlights of the year, followed by an efficient run of white elephant (optimized to accommodate the high number of players), all interleaved with various intermissions and minigames to make sure everyone had a good time. The gifts were all bought and wrapped by the organizers, who were also responsible for writing witty descriptions for each gift. It's basically a game show that was ran entirely from bottom up by passionate engineers.

Unfortunately, Christmas 2020 was when the COVID-19 pandemic was at its peak. The world was not the same as it was in 2019, and with all the social distancing measures in place, we weren't at all hopeful that we would have our annual tradition. It felt like gloom and doom every day, which is why we thought we have to have some party to keep our spirits up. A secret cabal was formed around October to organize this party (we call ourselves that, but it's not much of a secret since it's roughly the same organizers every year). After some discussion, we decided that hosting a virtual event in Chat will be the closest in spirit to the usual event. We just have to solve some minor technical and logistics issues.

The technical issue involves managing all the interactions through Chat. I wrote a Chat bot for this purpose, and named it Tonberry. This was sizable piece of C++ code to handle various text dialogues and game states, and also runs a small Python script to communicate with Chat (because Chat had no C++ APIs). It had persistent storage through Google Spreadsheets, which meant we could manually edit and fix data at runtime if needed. One day before the event, I invited everyone and Tonberry to the chatroom where the event will take place.

I felt (un)reasonably confident about Tonberry's robustness, and asked people to try to break it: "better you break Tonberry now and see if I can fix it, rather than during the actual event". It wasn't long before someone found an integer overflow, and I came back from lunch to see the Python part of Tonberry crash-looping. The C++ part was just fine though, I always felt good about C++. Tonberry mostly worked fine during the event, except a recurring annoyance where Tonberry paid no attention if people didn't use @tonberry to address it directly, which was a deliberate implementation choice but not the best one in hindsight. But other than that, Tonberry was able to open gifts and run quizzes exactly as planned. The event went mostly without technical issues, and we didn't have to resort to manually updating spreadsheets.

The logistics issue had to do with the delivery of the gifts. Unlike prior years where people were physically present to pick up the gifts, in 2020 the gifts will need to travel much greater distances across many different time zones to reach the participants. It wasn't so much the act of shipping that was the problem, but the fact that some secret cabal knowing a large number of personal shipping addresses would be a HR problem. This was solved by making the gift acquisition and delivery peer-to-peer: all participants decide the one gift they were going to buy (like a traditional white elephant), and after the event, the winner (or unwilling beneficiary, as the case might be) of each gift would work with the supplier of that gift on how the delivery would be done, if at all. Some people arranged the gifts to be picked up when we are all back in the office, even though at the time we weren't sure when we would be allowed to do that. But we were optimistic that the pandemic would be over soon, and I would like to think that this party contributed to some of that optimism.

The name "Tonberry" might have been a good setup for a cutting-edge joke, but it probably wasn't any clever technology or innovative solutions that made this party memorable. The best part about this whole experience was that we did it, we continued a tradition and maintained some level of normalcy, and we had fun despite a pandemic looming over us. We were physically isolated, but felt as together as ever.

Tonberry returned in 2021 and 2022 to run the white elephant party. By 2022, we were back to an actual room in the office with a mostly in-person white elephant event, but Tonberry was still used since it was easier to update the gift spreadsheets and dashboards by telling Tonberry to do it. I don't know if Tonberry made a cameo in 2023.


Previous (2023-10-23): Batch shipping Koi-Koi
Next (2024-01-21): Dust time

Index

uguu...