My life in plain text: calendar.txt
For some time I’ve been trying to reduce my reliance on the tools offered by google. Not that there’s anything wrong with the tools. Quite the opposite. Mail, calendar, drive, docs – they all work really well. I’m just not comfortable with how reliant I am on them. It feels a bit “eggs in one basket”, if you know what I mean. Besides, google is not above shutting off services it no longer wants to support. It might be highly unlikely that this ignoble fate will befall gmail or google docs, but still…
So I’ve been developing a system of plain text files that I can access and use from the terminal. Central to the system is the calendar.txt file. This is a format developed by Tero Karvinen, which gives each day a single line. It is a simple, but powerful idea.
A typical entry might look something like this:
2026-10-21 w43 Wed 0930 Staff meeting 1400 Pastoral visit 1930 Church Council
That’s it. No clever database, no proprietary file format, no special software needed to read it. Just a text file. Each line begins with the date, followed by the week number and day, and then whatever appointments I have for that day.
The beauty of this approach is that the file is both human-readable and machine-readable. I can open it in a text editor and immediately see what’s going on. But because the information is stored in a consistent format, I can also write simple scripts to do useful things with it.
And that’s where things get interesting.
I’ve written a little collection of scripts to make my calendar more useful. One allows me to add appointments without having to open the file and find the correct date. I can add recurring appointments, too, and the script checks for possible clashes with things already in the diary. Another gives me a quick view of what’s coming up over the next few days.
None of this is particularly sophisticated. I’m not a programmer, and much of the scripting has been developed with considerable assistance from AI. But it works, and perhaps more importantly, I understand enough of what’s going on to be able to tinker with it.
The calendar is part of a slightly larger system I’ve been developing, which I call DeckZero. Alongside calendar.txt I have todo.txt, journal.txt and a collection of notes. They’re all plain text, and they’re all stored together in a Git repository.
Git is generally associated with software development, but it’s actually a very useful tool for keeping track of changes to any collection of text files. It means I have a history of changes, and I can synchronise my files between different computers. My laptop, my phone and even a couple of tiny handheld devices can all access the same information.
The handheld devices are a particular source of amusement. I have a couple of small ESP32-based gadgets, with tiny screens and keyboards, which can connect to a remote computer using SSH. They’re hardly substitutes for a proper laptop, but I can use them to check my diary, update my to-do list or jot down a note. There’s something rather satisfying about being able to access the same information on a modern laptop and a device that’s considerably less powerful than computers I was using thirty years ago.
Of course, there are compromises.
Google Calendar makes it very easy to share calendars, invite people to meetings and receive reminders. My text file doesn’t do any of those things automatically. And there’s no denying that a conventional calendar application gives a much more attractive overview of a busy week or month. A text file is not everyone’s idea of a friendly user interface.
Nor am I under any illusion that I’ve achieved complete independence from big technology companies. Git repositories have to live somewhere, the computers run software written by other people, and I still use plenty of online services. This is a work in progress, not a declaration of digital independence.
But there are some important advantages.
My calendar doesn’t depend on a particular application continuing to exist. If I stop using one text editor, I can open the file in another. If I change operating systems, the file comes with me. If I decide that my current arrangements for synchronising files are too complicated, I can change them without having to rebuild the calendar itself.
And perhaps most importantly, the information is mine in a very straightforward sense. I don’t need to export it from somewhere or ask an application to translate it into a format I can use. It’s already there, in a form that will probably still be readable decades from now.
There’s another advantage which I hadn’t really anticipated when I started. Working with plain text encourages a certain simplicity. Instead of asking what features a calendar application offers, I find myself asking what I actually need my calendar to do. The distinction is quite liberating.
Do I need a colourful interface? Not particularly. Do I need to know where I’m supposed to be tomorrow? Absolutely. Do I need a notification every time something is about to happen? Probably not. Do I need to be able to make an appointment while I’m away from my desk? Certainly.
And because the system is mine to shape, I can develop it around those needs rather than adapting my habits to the assumptions of somebody else’s software.
I’m not suggesting that everybody should abandon Google Calendar and start keeping appointments in a text file. That would be ridiculous. For most people, the convenience of a well-designed calendar application will far outweigh the advantages of my rather eccentric arrangement.
But I am increasingly convinced that we’ve become accustomed to an unnecessary degree of dependence on complicated systems for doing quite simple things.
A calendar is, fundamentally, a list of dates and things happening on those dates. We’ve managed to organise our lives around such lists for centuries. The fact that we can now store them in enormous databases, synchronise them across the world and display them in a dozen different colours doesn’t necessarily mean that we always should.
Sometimes a text file is enough.
And there’s something a bit pleasing about that.
Tags: plain-text, calendar