I build a cold storage system in plain PHP. There is no framework and no build step. The pages are rendered on the server, with a little vanilla JavaScript where it helps, and the whole thing runs on ordinary shared hosting. This website works the same way.
Say that to another developer and you may get a polite pause. I understand why. But it was a deliberate decision, and I think it is one of the better ones I have made.
Start with who keeps it alive
That cold storage system will hold a business’s stock and money for years. The excitement of building it will end long before that. At some point, someone will need to fix it on a bad afternoon, possibly with no memory of how it was built. That someone may well be me.
So the useful question is not what would be most interesting to build with. It is what will still run, and still make sense, after everyone has stopped caring about it.
Every dependency is a small promise that somebody else will keep showing up.
What boring gets you
Boring technology has already had its failures found and written up. Its hosting is cheap and everywhere. An upgrade is usually a non-event. When something breaks, you can read the code from the top and follow what it does, because there is very little between you and the server.
It also keeps the attention where it should be. The hard parts of that system are not technical fashions. They are things like an append-only ledger, clear permissions and screens that work in Bangla on a phone in a cold hall. None of them needed anything new.
It is not a religion
I do not use this approach everywhere. Medrilo is built with Laravel and React, wrapped for Android, because it has to behave like an app and share one codebase across web and phone. Evencup is written in Flutter because it needs to feel right on iPhone and Android. Those were the boring, sensible choices for those problems.
“Boring” does not mean old. It means well understood, for this problem, by the people who will have to maintain it. The mistake is choosing a tool for how it feels to use it now, without thinking about how it will feel to depend on it later.
Save the novelty for what matters
A project can afford only a little novelty before it becomes a project about the novelty. I would rather spend that allowance on the thing that makes the product different, and let everything underneath it be as dull as possible.
Nobody will ever tell me that the cold storage software has an exciting architecture. If it keeps counting correctly for ten years, that is the compliment I want.
Photo: NOIRLab/NSF/AURA/T. Slovinský, CC BY 4.0, via Wikimedia Commons.

No comments yet. Be the first to share a thought.