About
We write every layer of the software we ship. The applications, and the libraries, parsers, codecs, protocols, and renderers underneath them. Not as a stunt, and not for its own sake — because it is the only version of this work where we can answer for the whole result.
What we make
Native applications for the device in front of you. They open your files, do the work locally, and keep running when the network does not. They collect nothing: no analytics, no crash reports, no advertising identifiers, no accounts. That is not a setting you have to find, and it is written down in the privacy policy rather than implied.
Alongside them we take on commissioned work for clients who need something they cannot simply buy, and we run our own infrastructure — authoritative DNS, the proxy that terminates our TLS, the identity service behind our own tools — on the same terms. If we would not run it ourselves, we do not ask anyone else to.
Why we build this way
The ordinary way to make software is to assemble it. You pick a framework, install a few hundred packages, inherit a few thousand more, and spend the rest of the project's life maintaining the consequences: the upgrades you did not ask for, the vulnerabilities in code you never called, the migration imposed because something four layers down changed its mind.
We think that trade stopped paying. Writing a parser used to be the expensive option and borrowing one used to be free; both halves of that have changed. So we write ours. The argument in full is the thesis, and the specific cases — dependencies, vulnerabilities, vendors, complexity, latency, migrations — are the manifestos.
The practical effect is that there is less software here, we understand all of it, and nothing turns up in a build that we did not put there. When something is wrong, it is ours to fix, and we can fix it the same day rather than filing an issue upstream and waiting.
How we work
We are a small team, and we intend to stay one. You talk to the people writing the code, which keeps decisions quick and keeps the reasoning in the heads of the people responsible for it.
Modern tools have made implementation dramatically faster and we use them heavily. Specification, review, and testing still take the time they always took. A person is answerable for every line we hand over, and if we did not check it, we do not ship it.
We would rather be told a number is wrong than never hear it. If something we published is incorrect, write to us and we will correct it and say that we did.
The name
Virtually unlimited, as in: the constraint on what a small team can build from scratch is no longer the writing. It is deciding what is worth writing, and then being right about it.