Data formats for humans and machines


weird floaty thoughts incoming

An idea that’s been floating around in my head for a while is http://todotxt.org/.

One thing that’s nice, is that it’s easy for both humans and a machine to interact with it. I haven’t actually used it, but as a programmer and someone who mostly lives in the terminal, this sounds like a beautiful idea. In fact, it’s one of the tenants of Unix philosophy, “Write programs to handle text streams, because that is a universal interface”.

One common term that seems to be thrown around is “human readable”. According to wikipedia, a human-readable medium or human-readable format is any encoding of data or information that can be naturally read by humans.

I don’t actually like this term very much, or at least I don’t think it describes why I find todo.txt to be such a beautiful idea. Obviously, we can read from it, but I think what’s equally important is that we can write to it. If I had to come up with a better term, it’d be more like it’s “human-friendly”. It’s just something that we can interact with. This contrasts to something like heavily nested JSON, which we can’t really easily write to, although it is possible to read.

I guess there are many other examples of this, most programming languages operate like this, although they need skill and time to learn. HTML and markdown are probably good examples, and other config languages like HOCON, and TOML. As an aside, YAML might be cosnidered a config language that is both machine and human unfriendly, simply because of how annoying it is to work with, e.g see yaml-sucks. There are some other bad examples too, PDF is something that I can’t edit with my text editor, and Jupyter notebooks is something that I would very much not want to.

Anyways, as mentioned earlier, although I think todo.txt is a beautiful idea, I haven’t actually used it yet. My current todo list is in plaintext as well, but it lives … on paper. After first learning about todo.txt, I’ve also been made aware of some other tools, like calendar.txt. They’re really cool! I love how they’re so customizeable, and exist as ideas, which is pretty refreshing at a time when big tech is trying to stuff so many different things down our throats.

Personally, I want to catalog a lot of my life in plaintext, and maybe one day I’ll sit down and have the time. In the meantime, just throwing this out there. Would be really cool to do this, and integrate with a local language model to act as a personal assistant, if that doesn’t sound too dystopian.