The million bubble countdown to the popcalpyse:
While on holiday break I did some "digital crafting" and shipped a massive multiplayer game about popping every bubble in a giant roll of digital bubblewrap... seriously. After sharing it on new years eve (reddit), people around the world didn't stop until all million bubbles were popped.
Where did the idea come from?
After stumbling upon the million checkboxes website which had gone viral, I was thinking that checkboxes were SO boring. As a mathematician - my way of thinking is to always transform problems into equivalent things; and so it struck me that bubblewrap popping is fundamentally the same as this sheet of checkboxes - even to the point where a popped bubble maps to a checkbox that's become grayed out. Because the creator (Nolen Royalty) has open sourced the project, it felt like the hard part was already done, and it just needed a little face-lift.
I did a quick google and found that existing bubble wrap popping games were deeply unsatisfying. Specifically they both appeared to have no discernible end, like this fractal bubblewrap.
The making of Bubblewrapture
The concept was already underway before choosing a name. Actually first called it 'bubblewrapped' leaning in to the new year finale that spotify does etc. .. but in discussions with Aleeza Howitt "bubblewrapture" won out due to the story behind why we are popping bubbles .. to bring about the popcalypse of course!Every AI tool imaginable has made it's mark on the site - mostly cursor (Gemini 3 and Claude Opus), a bit of Codex and Claude Code. ChatGPT for the social card and some copy/editing brainstorming, Claude for the svg graphics including the svg bubble rolling animation.
The spinning bubble roll was the hardest to prompt; my first attempts at "think hard about the physical geometry of the roll spinning" failed in amusingly horrible ways (see below). To get it to work I had to spell out the formulas: y position = cos theta, eccentricity of the bubble = sin theta etc. It kept wanting to make the bubbles partially or entirely visible when coming around the back side. The final version isn't perfect still - but it is good enough!
And the final version:
The front-end is deployed on netlify, the backend go server on render and the the data persisted on an upstash redis store.
Data science
We recorded every bubble pop - along with the IP that popped it. After the first 10 thousand or so pops I included a separate log for the roll actions. Recorded with second level precision, but that leaves us with a lot of questions we can ask and answer.
How many people participated?
About 3000 people tuned in and popped at least one bubble. Most people popped only a few, but a few users popped a huge number of bubbles. Of the top poppers: 39 IPs, accounted for 575993 pops while the other: 3075 IPs, has 573132 pops. Note that the total pops: 1149125 was higher than a million because of duplicates in race conditions - and a bug from the checkbox days that made is to a race condition resulted in an un-popped bubble (which happened actually a lot - up to 27 times in one bubble).
How much time did people spend?
Collective minutes people spent: 10,344 minutes, or 172.4 hours. Defined by counting a minute any time that at least one bubble was popped in that minute (so not counting any extra minutes spent searching). Below is a list of the top poppers by time spent, note that folks on mobile were necessarily a lot slower (since clicking and dragging is not possible), but it seems the people who spent the most time were on desktop and popping tens of thousands of bubbles. I tried to separate the mobile from desktop poppers but it wasn't easy because the majority of desktop poppers were actually going slowly too; so although we can be sure the fastest poppers were on desktop - there isn't a clear boundary.| location | hours_spent | num_pops | |
|---|---|---|---|
| 0 | Lonsdale | 6.32 | 122,082 |
| 1 | Denver | 4.43 | 64,218 |
| 2 | San Diego | 3.22 | 53,140 |
| 3 | Plainview | 2.58 | 13,111 |
| 4 | Loughborough | 2.00 | 44,629 |
| 5 | Bayville | 1.98 | 16,510 |
| 6 | Anderson | 1.93 | 26,852 |
| 7 | None | 1.62 | 7,514 |
| 8 | San Francisco | 1.60 | 29,650 |
| 9 | Toronto | 1.52 | 8,489 |
And here are the top ten poppers by number of pops, including the shocking winner with over 120K pops!
| city | num_pops | hours_spent | |
|---|---|---|---|
| 0 | Lonsdale | 122,082 | 6.32 |
| 1 | Denver | 64,218 | 4.43 |
| 2 | San Diego | 53,140 | 3.22 |
| 3 | Loughborough | 44,629 | 2.00 |
| 4 | San Francisco | 29,650 | 1.60 |
| 5 | Anderson | 26,852 | 1.93 |
| 6 | Skövde | 21,291 | 0.95 |
| 7 | Houston | 17,703 | 1.27 |
| 8 | Bayville | 16,510 | 1.98 |
| 9 | Plainview | 13,111 | 2.58 |
Ranked by number of bubbles popped - also pulls out a power law distribution - but only for the top 1000 poppers
How fast can a popper pop if they pop fast as they can?
VERY fast.
We have some rate limits on there to prevent auto-popping; and it seems from these distributions of pops per minute that people aren't up against that limit. The fastest popper has an average of 17.77 pops per second over a minute! This split here again is the 39 fastest folks who accounted for about half of the total pops.
and for completeness - the total minutes popping was correlated nicely with the total number of bubbles popped.
How much cleanup was needed?
Since we have the timestamp AND location of every pop - we can see the timeline of what happened. Below is a heatmap showing the density of bubble popping that happened from the bottom to the top of the roll over time. Not much happened from when I started sharing on social media - until shortly after reddit post was 11:30-EST when bubbles started getting seriously popped. You can see the trend work its way up to the very end of the roll; actually doing a pretty good job cleaning up behind - until the very end when just 40k or so bubbles were left at the time the roll was finished rolling. The very last bubble was the most exciting - and probably took about ten minutes for something to find it.
And the top ten regions, you can see the majority is the US with the UK pops almost completely owned by the Loughborough person.
And the top ten countries.
Did people pop or roll?
A lot more people popped than rolled. Nobody exclusively rolled.
Number of rolls followed a nice power law as expected.
| city | hours | |
|---|---|---|
| 0 | Lonsdale | 5.78 |
| 1 | San Diego | 1.55 |
| 2 | Bayville | 0.97 |
| 3 | Concord | 0.92 |
| 4 | Houston | 0.83 |
| 5 | Poughkeepsie | 0.73 |
| 6 | Denver | 0.60 |
| 7 | Powell | 0.43 |
| 8 | San Francisco | 0.40 |
| 9 | Loughborough | 0.37 |
Response
People seemed to enjoy popping digital bubble wrap - just like in real life.Not everybody was a fan of collaborative mode:
Not everybody was a fan of the ending:
The plan
The idea now - is to run it in reverse on Dec 1st, where you are inflating the bubbles; then the roll is auto-rolling up. Then on Dec 31st again run it forwards and see if we can get to the popcalypse faster. Other ideas are to use the same dynamic but be popping popcorn or cracking eggs and have chicks run away.
No comments:
Post a Comment