Austin's Blog

Bespoke Software

Recently I've been thinking a lot about what I've come to call "bespoke software". Other names for this idea include "situated software" or "freewheeling apps", and there's a related concept of "permacomputing" underneath the whole thing (major shout out to the 100 Rabbits collective for introducing me to this world with their writings).

Essentially, I'm thinking about platforms for developing software. But let's back up a bit. It may help to describe the kinds of apps I'd like to build here. In no particular order:

And so on. These apps should be accessible on mobile devices, but I should be able to access them on my desktop as well. All of these apps should also:

It's been a constant question to me: which platform should I use to build these apps?

If I want a mobile app, there's really only a few options (e.g. React Native, Flutter, raw Swift/Kotlin, etc.) but I don't really want or need a mobile presence that involved. I'd much rather build a website that's accessible on mobile. Besides, I definitely want to be able to use this on a desktop or laptop PC as well, so that kind of rules out mobile-native APIs.

Naturally, this got me thinking I'd like to have a framework for building web apps in this vein. Something that encrypts data by default, that allows for sharing access to that data, accessible via mobile (and using some mobile-native APIs for things like location).

A monkey's paw with its finger curling

"This web framework sucks, I wish I could build my own web framework!"

Just thinking out loud at this point: what would I need in such a framework?

The encryption is probably the hardest part of these apps to get right, and setting up a database with reasonable defaults could get me 80% of what I need. Sharing access to that data might be a bit harder, but still doable especially given a common permission and access control structure.

The only thing I really don't like about the web approach is that it would be accessible from anywhere, by anyone. At that point I'd need to look into a VPN of some kind...I'm not super familiar with setting up VPNs as a server, only using them as a client, so I'm not sure what would be involved there. Maybe part of the boilerplate or template of this framework is to set up that VPN connection and make it seamless.

This is starting to sound like less of a framework and more of a template, something I can fork from and build an app on top of.

Other people have tackled this problem with their own frameworks, whether custom-built or off-the-shelf. 100 Rabbits uses the Uxn / Varvara ecosystem that they built. Kartik Agaram uses the preexisting LOVE2D framework. For me, I might end up building my own framework, or I might explore existing options -- I'm not quite sure yet. I think I need to carefully consider what I want to build (and why) before I decide on an approach.