Technology
Boring on purpose.
We choose technology by how well we will understand it in year four, not by how pleasant it is in week one. In practice that means relational databases with real constraints, server-rendered or pre-generated HTML wherever a single-page application is not genuinely required, and platform-native frameworks on mobile rather than a translation layer between us and the operating system.
Dependencies are the main long-term liability in modern software, so we keep the surface small. Every third-party package is a piece of code we are responsible for auditing, patching and eventually replacing. A hundred lines we wrote and understand usually beat a library that solves a slightly different problem.
Where content can be generated ahead of time, it is. Static output has no runtime to exploit, survives traffic spikes without capacity planning, and stays readable in a browser with scripting disabled — which is also the accessibility floor.
Standing choices
- Web delivery
- Static-first HTML, progressive enhancement, no framework required to read a page
- Mobile
- Platform-native UI, built to Apple HIG and Material guidance
- Data
- Relational storage, constraints and migrations under version control
- Transport
- TLS everywhere, HSTS, modern cipher suites only
- Hosting
- Infrastructure we administer ourselves
- Analytics
- None from third parties. Aggregate server logs only