Since forever, I’ve thought of a web product the way you may have: A front-end interface, a back-end database, and some middle layer code that queries, manipulates, and pushes data to the front…and receives inputs to manipulate and push to the back again.
Of course it gets much more complicated than that—but at its core, that’s the elevator pitch I’m giving to the aliens on how our earthly software works.
For a few decades now, we’ve taken the raw materials from that initial blueprint and packaged them up into layers we have to be more and more careful with, that get brittler and brittler to maintain, harder and harder to fix. You know…
The wonderful thing about solo-software development is how easy it is to walk the other way—the way toward less. Less of everything to an eccentric degree. But, I will argue, really no more eccentric than the never-ending path toward complexity that big teams seem hell-bent on.
My latest solo-software project, RunKWC, is a timer for treadmill running with different time visualizations and an emphasis on ergonomics. You can also log the distance of your run once the time has finished.
It’s a Rails app, but it doesn’t even have to be that. I use Rails just for the organizational advantages—the MVC and routing conventions that make the building bit easier. It wouldn’t be a huge stretch to convert this app to a bunch of static HTML, CSS, and JS files…or even just one HTML file with all the goodies jammed into it. (But I will grant myself just a little bit of complexity).
You “install” the app through your browser, not through the app store.
It also has…
No authentication.
No server-side sessions.
No cookies.
No third-party extensions.
No back-end.
How does RunKWC stores your distance logs? Through local storage—that wonderfully simple client-side technology that you can access through plain-old Javascript. No opening or closing of connections. No performance issues. No concurrency worries.
Because there’s no server-side dynamic-ness, I use a service worker (just a plain-old JS file) to cache RunKWC on your phone, so you don’t even need internet to run the full thing after its downloaded.
Of course, these constraints mean you can’t access your logged runs from another machine. You can’t sync your data to your Apple Watch. You can’t compare your results with others in the “RunKWC ecosystem”. There are lots of limitations when you strip down what you’re willing to use to the barest essentials. And what you get is an app that focuses on the things that matter.
RunKWC, I believe, helps you run better. Logging your runs just on your phone (and nowhere else) gives you just what you want when you want it. You don’t need more. And the app is so easy to maintain because it has such little weight and no dependencies.
And when it’s just you making the thing, the metrics for success are that much more gettable. The objectives that much more pure. The reason for its existence that much more clear.
How much value can you squeeze out of using almost nothing? A dish made out of the simplest and fewest ingredients. A song made with the fewest chords. A piece of art with the fewest brushstrokes. That’s a fun exercise. And one you can choose to engage in when you’re going it alone.
I’m marching toward “basically nothing” tech. It’s invigorating.
Come join me.