The Arcology Garden

Creation can be Selfish


Expansion of this late night thread

Had a realization today that the software I want to build as a hobby doesn't need to be easy to use by anyone but me and I think that's a very energizing thing.

Long weekend. Gonna get a Phoenix environment set up. Gonna build a thing to replace my org mode with something much more horrifying and powerful.

A piece of software that's built only for me can be unwieldy and use terrible algorithms that hardly scale to tens of users. I can overindex my data and pre compute all the reports I want to run because no one is creating reports but me.

Software built only for me needs to only support the platforms I care about. And once I break my productivity's dependency on emacs, via org mode and gnus, I can build a librem 5 app which basically just runs a web frame to the server. And when that's done, a sync protocol between nodes, and a node running on the love 'em and my laptop and my server, all serving a local host port and communicating over WireGuard.

I have a plan to build a thing that could take a decade and I am so good at making excuses to not start. I've laid the groundwork with for a computing system which fits me like a glove with CCE but I feel like increasingly I have hit the edges of Emacs. Not for programming or text editing, but certainly for my life. But the other tools are worse.

My friends complain on Riot about caldav sync on Kontact, a thing I failed to get working a *decade- ago. Apple provides the infrastructure but fails entirely on aesthetic. Google provides the world's best services to fund the tarpits that are enveloping tech and society. I'm unsettled at by how increasingly unworried I am about Microsoft. Amazon has APIs that would be so fun to use as an individual but are so terrifying at scale and in the hands of the state.

And so I have plans back nearly a decade and forward as far to build a piece of software for myself. A truly selfish act. By luck or promise it'll be built in components, most of which will be given freely, under reciprocal terms, in a way that does not necessarily foster collaboration.

  • A content addressable store that has cascading storage rules from memory to local disk to backblaze.
  • A graph of jsonb metadata objects which can link to objects in the CAS and a set of APIs and object models which represent things I want to link and search.
  • A set of front end servers, largely web, maybe sensors.

The only part of this that needs sync is the metadata store, and its also the most complex part. If I had something like pouchdb in anything but JavaScript that would be ideal. But I could also do a sync protocol which would be an interesting thing to build in three or five years. And the local file store but that's what Syncthing is for.

When I have a skeleton built out, I start modeling task tracking within this system. Query reports run and send me a push notification with my day agenda in it. A graph of tasks is connected to a document I'm working on, a project interface mixing metadata and files. I can publish any snippet of text to a web page and publish that over activity pub and rss feeds. I can bring e-mail and rss in to the system and rebuild adaptive scoring in a client I have hope of being able to use on the bus.

A decade out and the system is self-programmable, a native, programmable desktop environment which seamlessly connects to a grid of sensors, objects, and APIs around the world and fit to me as if it were skin. Nodes coming and leaving as my laptop and I go offline on the far country and in to foreign countries, syncing what I create and what my server finds me, and giving me the tools to share those with my friends and family.

The folks who did the Capstone tablet and a bunch of other incredible experiments are a group I would love to share a prototype of this with.

Mozilla needs to give me a trivially embeddable browser engine for this to be optimal though gosh darnit.

Things also get wacky and maybe unbearable in the stage where my document and thought hierarchy is in a web tool that may not play well with emacs. Do I strip Emacs to a bare programming environment and exwm and finishing bending Firefox to my will or switch to qutebrowser and enable chromium dominence? This is why I want embeddable gecko. Do I build an output connector to sync a directory of org mode files with CAS? build two parallel UIs, one in clojurescript and one in emacs?

I have building blocks for a weird hell but that's all a ways away. I want to get my gnus usage in to this framework and rebuild my inventory system. Thinking that far out has given me excuses to not start the close parts. Must not sleep must warn others.

Support only the platforms I care about Work can be aggressively cached Scalable to tens Usable by one

Undeveloped Thought Arcology Development