A Viral World (or AVW) is no more. Its code lives on at GitHub, but the website was shut down in July (and it has taken me four months to get around to writing about it).

I met Miikka and Gionata, the originators of the concept, through a mutual friend last April. It was a few days after India went into the lockdown. The world was fully in the grip of the Covid-19 pandemic. Their idea was to create a place for people to give voice to their thoughts and struggles, using a unique branching metaphor to emphasize the human connections. We soon had a small group of collaborators, and within a few weeks we had the name, quickly followed by a prototype in Figma, then a second, more refined prototype a couple of weeks later. The visuals were ready by the end of May. Then it was time for me to turn our design into something real.

I intended to write the backend in Rust using the warp library. I’d been looking forward to this: finally, an excuse to use Rust for more than just small personal tools. I didn’t expect the process to take long, as our requirements were minimal. To my dismay, however, I failed. What time I could spare was spent trying to solve myriad problems I didn’t understand, all born from inexperience and compounded by the speed with which I was trying to progress. Rust is a superb programming language, but—no, rather, because it expects you to think about what you’re doing and refuses to hide incorrect behaviour behind a simple façade. I had assumed the very limited scope of our concept meant I didn’t have to think. I was wrong.

Disconsolate, and with only a day left until the date I had suggested for presenting the backend to the others (11th June), I chose pragmatism over idealism. I set aside the Rust version and wrote a simple Python server—call it version 1.0—that could perform the basic functions.[1] After all the worrying and frantic debugging the Rust version had entailed, it was a relief to be able to present a working backend only a little later than intended.

Unfortunately, life intervened before I could make any further progress. Just a few days after the presentation, my family suffered a loss—not directly to due to Covid-19, but certainly due to the resulting situation. It had already been a difficult time with trying desperately to care for an ailing relative in the midst of a global pandemic that had lasted for months already. (Indeed, June has been a particularly traumatic month two years in a row now, for different reasons.) I couldn’t take it. I withdrew, focusing on other work and losing myself in less noble pursuits. I couldn’t think about A Viral World.

A month passed before I revisited my handiwork. It still stuck in my craw that I’d had to abandon the original Rust version, and I couldn’t leave it there. After carefully reviewing the code and doing some research (as well as seeking the help of the wonderful Rust community), I started to understand my mistakes. I approached the project with renewed enthusiasm, enjoying the feeling of gradually eliminating all the obstacles that had stymied me. By the middle of August, I had a working version 2.0 written in Rust, but this time with all the features and robustness lacking from 1.0. I was inordinately proud.

From there I moved on to the frontend, written using another framework I’d wanted to try for a while: Svelte. That took a long time, with many discussions and changes to our requirements. I can’t blame anyone else, however—the delays were mainly on my end. Although I had triumphed over what once defeated me, I was still grieving and hiding from the world, still unable to spare much time. Thus it was that work on this section dragged on into the winter. We intended for AVW to make its debut in the middle of December, but a pair of large, persistent issues kept me from finishing it before a spot of travel. It was eventually unveiled on Christmas Eve, and even that was only meant to be the first iteration.

Sadly, the slow progress over the course of the year had robbed the project of its momentum. As we discussed later, where A Viral World could have been a true sensation in the early days of the pandemic, when humanity was still hopeful and uncertain, by 2021, life was wearing us all down. No one was particularly keen to share stories of a time we could no longer see the end of. The release was met with silence.

In the middle of June this year, we made the decision to shut it down. We had always had grand plans to create a fascinating visual representation of the stories and connections we expected to have after the initial iteration, but not even five new recordings had been submitted in as many months of operation. Continuing to maintain the website was unfeasible. We had our last meeting in early July to lay it to rest.

I intended to preserve the project for posterity in a static form. Unfortunately, due to a miscommunication, the server and associated resources were deleted before I had taken any steps towards this end. It was all lost in the ether. What remains is only the source code, which I imported into GitHub from our private GitLab repositories, with no alterations to make it more presentable.

I wish I could have given the project the time it deserved. I’m certain it would have been very rewarding and had the potential to make a significant impact. Still, I’m grateful to have been able to be a part of it in any capacity. It was a wonderful opportunity to learn many technologies I’d been interested in for a while (I’ve already mentioned Rust, warp, and Svelte; XState was another), as well as a sad but important lesson in recognizing limitations… and managing time.

  1. Not the first time I’ve salvaged a project with some quick Python.