Why we count from zero
Off By 1 is named after the most common bug in software: the loop that runs one time too many, or one too few. It’s a fitting name for a company built by someone who has written that bug, found it at 1 a.m., and shipped the fix anyway.
But a joke is a thin thing to build a company on. The name stuck because of what sits underneath it, and that part isn’t a joke at all. Off By 1 runs on three ideas, none of them complicated.
Build what’s useful. Not impressive — useful. There’s a real difference, and most software gets it backwards: big where it should be small, clever where it should be clear, busy where it should just work. We’d rather ship something narrow that does exactly what it says than something broad that mostly does. The gap between “almost works” and “works” is small, unglamorous, and the entire job. We spend our time there.
Share what you learn. Everything we ship sits on a tower of other people’s open source — the languages, the libraries, the tools, decades of problems someone else already solved and gave away for free. You don’t build anything, however modest, without standing on an enormous amount of generosity. We take that seriously, so we feed it back. The site you’re reading this on is open source; you can read every line that renders this page. Where it’s useful, the rest of our work goes in the open too. Knowledge hoarded dies with you; knowledge shared compounds — that’s not idealism, it’s just how the whole field got here.
Have some fun with it. We named the company after a bug. The blog you’re reading counts its posts from zero, because that’s where programmers start counting and we were not going to be the ones to break the convention. None of this is precious. The work is careful, but it doesn’t have to be grim — a company can take its products seriously without taking itself seriously, and the two are easier to tell apart than people think. If we stop enjoying the building, the building gets worse. So we keep that part on purpose.
That’s the whole operating system. Build the useful thing, share what made it possible, and don’t lose the plot about why you started. Everything else — which products, which platforms, what ships next — falls out of those three.
You’ll notice what’s not on the list. There’s no roadmap of promises, no mission to disrupt anything, no claim to be revolutionary. We’re suspicious of all of it. The companies that announce they’re changing the world tend to be worse at the boring part — the part where the formula is correct, the session restores, the thing does what the label said. We’d rather be good at the boring part. It’s harder than it sounds, and almost nobody brags about it.
So: why count from zero? Because arrays do, and because it’s a small honest reminder of how this works. You start at zero. No audience yet, no legacy to protect, nothing but the next useful thing and the discipline to get it exactly right instead of nearly right. That’s a fine place to build from. It’s where we keep choosing to stand.
This blog is where we’ll write about what we’re building and what we learn doing it — posted when there’s something worth posting, which is less often than a content calendar would like. Start from zero. See what’s worth making.
