I wanted to build one small page. It answers a question a child could ask: how big is a billion dollars, physically, if you printed it all in $100 bills?
The funny part is the answer really is simple. One billion dollars is 10 million $100 bills. They weigh about 10 tonnes and cover roughly 103,000 square metres laid flat. If I only wanted the number, I could have shipped it in an hour. But a number on a screen is boring. "10 million banknotes" means nothing to anyone, including me. I wanted a person to actually feel the size. And the moment you try to make a number felt instead of stated, you stop building a calculator and start building something much bigger than you planned.
The whole page rests on four measurements from the US Bureau of Engraving and Printing: a bill is about 156 by 66 millimetres, about 0.1 millimetres thick, and weighs about a gram. Every figure on the page is just those numbers multiplied by how many notes you have. My first bug was copying a slightly different thickness into two places, then losing an hour to why two numbers disagreed. A mistake that took ten seconds to make. That is side projects in one sentence.
Then I decided you should be able to drive on it. Every tile on the road is one $100 bill. You pick a vehicle, a tractor, a sports car, a fighter jet, and drive along the money with the arrow keys. To reach the trillion-dollar marker you would drive for months without stopping. You cannot put 10 million things on a screen and expect a browser to survive, so the road is a trick: you only ever render a short stretch and recycle the same scenery as you move, like a treadmill. It feels endless. It is a few objects reused forever.
The jet was the part nobody asked for. It hovers above the road instead of driving, because a fighter jet rolling down a paper highway looked ridiculous and a flying one looked right. That cost me an evening. I did it anyway, which is another thing side projects are made of.
Then there was the boring lesson I want to actually pass on. The page switches between metric and imperial. The naive way is to store what you show and convert it back and forth, but every conversion loses a little precision, and after enough flips the numbers visibly drift. The fix is dull and worth it: store one true value, convert only at the last second when you draw it, never write the converted number back. It quietly prevents a whole family of "why is this slightly wrong now" bugs that are almost impossible to reproduce on purpose.
The tension that actually matters for the project is different, though. The interesting part lives in the browser's graphics layer, but a search engine cannot drive a car or read pixels off a canvas. To a crawler, my interactive road can look like a blank rectangle. So the page is two layers. Every real answer, all the numbers and tables and plain explanations, loads as ordinary text before any of the fancy stuff runs. The road layers on top for people who can enjoy it. If the fancy layer never loads, you still get a complete, correct page.
If I could tell my earlier self one thing about building visual things on the web, it is that the impressive layer is the topping, not the cake. Build the plain, complete version first, then make it fun on top. The other way around leaves you invisible to half the internet, which for a project that lives or dies on being found is not a small problem.
Strip it all back and the thing underneath is embarrassingly simple. Four constants and a pile of multiplication, compared against things people already know the size of. The engineering was never in the math. It was in making the math felt, and in making sure a machine that cannot see any of it still walks away with the full answer. That gap is where most of my weekends went, and honestly it is the part I enjoy.
This is the first project I have put out in public. Before this, the only audience for my side projects was me, and my fish. So if you have built something similar and know a better way than the ones I stumbled into, or you just want to tell me the whole thing is over-engineered, I would like to hear it.