I am the author of "Coolest Friends", a viral (and at times antiviral) MySpace application about ranking your coolest friends. Patrick McKenzie's blog about his Bingo Card Creator software actually inspired me to detail my own development experiences. He openly shares his challenges and rewards, and so I will attempt to stay within the same vein, starting with this post about how a bug in my app spread from user to user like a disease.
Coolest Friends grew from nothing in November 2008 to over 96,000 daily visits in June 2009. Then the trend flipped, my growth turned to steep decline. At first I assumed it was a temporary setback, but as the weeks progressed the decline continued at a worrying pace. The severity of the situation didn't really sink in until the decline was well underway. Only as the stats started to look like a straight line to zero did I really start to investigate. In only two months the app wounded deeply, down to just 58,000 daily visits.
MySpace had introduced just such a change to the array prototype just as I was flying to Vietnam for a holiday with my friend. It took a good while before I could get on the net to discover and fix that bug, and the app had been broken for about two days when I finally got it working again. So with that fixed, what caused the further decline over the next two months?
I eventually tracked it down to an unintuitive bug. Naturally, masses of people had uninstalled the app while it had been broken. Those uninstalls intensified the effect of a second, unrelated bug. The box that the app displays in a user's profile displays the current ranking of each of the user's friends. To calculate the coolness scores, the app loops over each friend the profile box owner has. What I hadn't considered was the effect of a friend uninstalling the app! In that case the box wouldn't work, as the app would basically try to reference an undefined object.
So as users uninstalled the app, they caused their friends' profile boxes to stop working, which in turn caused them to uninstall the app, in turn causing their friends' profile boxes to stop working... I had implemented the antiviral effect!
Thanks to Sean Grove for editing this post.