I ran across a note on Hacker News about Google Timer being gone. Timer was a feature of search, where you could search for "3 minute timer" and the result page would feature a countdown timer widget at the top set for three minutes. As I write this, I no longer see the feature in my Google results, but it does still appear in DuckDuckGo's results. I actually think DuckDuckGo's whole vibe is more in line with small utilities - like their use of bang-commands in search and the instant answers API. Anyway, the discussion an that topic was mostly in line with what you might expect: Google added a feature in 2013 silently, only to remove it in 2022, also silently.
But it occurred to me while reading all this that there could be a collection of simple web apps that could be copied/downloaded freely for offline use, but also statically hosted anywhere (including places like IPFS). These all exist scattered around the web, but I haven't yet found a coherent collection.
- Clock (Analog)
- Something like Qidget's clock would be amazing.
- Clock (Digital)
- Countdown Timer (Digital)
- Unit Converter
- Calculator
- Sunrise/Sunset Calculator (uses device location)
- Time zone World Clock
- Likely challenging to do well. Might exceed "small". The SVG Timezone Map from Wikimedia might be a cool starting point.
- Calendar - Just for referencing day-of-week, not with scheduled events. Ideally with week, month, 3-month, and annual views, all with print capability supporting portrait and landscape. I've used Emacs to create a PDF of monthly calendars before, but having it all in-browser would be very convenient.
The commonality with all these is that they are more or less stateless. You could write each of them as a single HTML file and serve it statically, and it will work identically across any modern browser it was loaded in (for some definition of modern), since it doesn't rely on cookies or localstorage. I think progressively enhancing some conveniences when state is preserved is useful, though. Things like recently used timer lengths, timezone lookup history and/or favorites, last base used on the calculator, and 12/24 hour preference on the digital clock are all examples of storing data that, if missing, doesn't "break" the experience. Contrast with a notebook app, or a calendar app that supports events/schedules. Those features require storage that "follows" the user whereever they go, which a purely static app isn't equipped to solve.
And that's the benefit of small utilities: when you define "small" as "almost stateless", they are defined by how easy they are to distribute. It would be interesting to explore how we could extend the reach of static apps by giving them an API to store state in a useful way.