Malleable Software

I have been thinking about software that gives me the power to customize it, not just with settings and plugins, but by giving me (or an LLM) the space to write code to extend it.

I saw this line on Armin Ronacher’s latest post about Pi:

When you look at what Pi and by extension OpenClaw are doing, there is an example of software that is malleable like clay.

Switching from Gnome to i3, I had doubts about finding good software for my day-to-day work. Screen recorders, clipboard managers, a couple of random Gnome extensions I collected along the way, that work just right. I would need to find replacements for all of these.

Then I encountered i3blocks, a program that allows you to run any script and print its output in the status bar. By scripts, I mean any script as long as it outputs to stdout. It could be bash, it could be node.js or whatever.

This forever changed how I interact with my computer. For the first time ever, it felt like this is my computer. Something I can shape in any way I want. I’m not restricted by what’s built by others already or what decisions that are hardcoded by an engineer in Cupertino. Searching, installing, free-trialing programs to find the one that is just right is over. I can just do it myself.

“I can just do it myself” was a total understatement a couple of years ago. Who has time to maintain a bunch of scripts just to have functionality in their status bar?

With LLMs, this is almost free.

We’re now at a point where code is almost free but runtimes are still difficult. Anybody can one-shot an iOS app or a web app or a Google Chrome extension, but running it is still another beast.

Software should accept the fact that getting working code is cheaper than ever and it should lean on that fact. It should be malleable.

This can enable a whole suite of apps that were not possible before. Imagine a Mac app that can build any app you desire and expose them from the menu bar. Would you ever pay for a pomodoro timer again?

Until we arrive at a future where no runtime is needed, don’t just ship your mental model with some pathetic settings to allow “customization”. Ship an SDK, ship a runtime.

btw, I use i3blocks to:

  • Toggling between CPU power states: performance, power-saver.
    • i3blocks scripts can listen for left and right clicks.
  • Display my battery status the way I like it (percentage, minutes left, power drained in watts).
    • Good luck finding this or writing this yourself in any other OS.
  • Screen recorder to start and finish a recording. The script is basically a combination of ffmpeg and slop, one-shotted by Claude.
  • A counter that goes up to 40 hours per week, to track the time I work. A countdown timer that counts down from 8 hours per day so I know when to finish.
    • This is a very obscure program that only I would need in the world maybe, but it’s possible.
    • don’t judge how I track my time
  • Display the active task in timewarrior, sending notifications when I don’t work on a task for 20 minutes of if I work on one for too long (4+hours)
    • I abandoned this one. No hard feelings as it maybe took 20 minutes to generate the code.