utilware.com - art, technology, productivity, language
homegetting sh-t donetoo damn tallabout/now

Writing a bespoke text editor.

Screenshot of the Xojo programming environment

Remembering things is not my superpower, and a couple of years ago I set out to do something about it. My goal was to assemble a digital storehouse, where I would actively capture things that might otherwise evaporate over time.

My goal, I thought, was simple: Find a lightweight app that would allow me to quickly capture information and somehow link items together. So I downloaded and tried out a lot of interesting products – including BBEdit, Ulysses, CuteNote, Notenik, CotEditor, FSNotes, LiquidText, Bear, Curiota, TextWrangler, Notability, SimpleNote, SimpleMind, Evernote, Notational Velocity and its cousins NVAlt, MacDown, and Atom – but unfortunately none of them had the feel that I was looking for.

What I wanted

Thanks to trying out all of those apps, however, I finally figured out the combination of features that I was looking for in an app:

Data longevity: Plain text files, JPG or PNG images, and (ok, fine) PDFs when there was a need for formatting

Data integrity and privacy: Store files locally on my Mac, helping reduce concerns about data leakage or sync corruption in the cloud

Edit in plaintext format only, because even Markdown can end up sending me down a rathole of playing with CSS formatting

A simple way to hyperlink from one text file to another, or open a link to a website from within a text document using a single keystroke

Flexibility to folder my documents however I want, and move them around as inspiration or anxiety strikes

Do it yourself

And then I came to the realization that the best way to get exactly what I was looking for would be to write it myself. Fortunately, I found Xojo, a cross-platform language that generates native M1 code on the Mac and reminds me of a previous favorite language of mine, Visual Basic.

Wonderfully, I have the opportunity to write something that is exactly what I want, with all of the quirks and foibles that implies. This isn't version 0.1 of something that I want to commercialize someday. If there's a bug, I can just work around it (for now) instead of having to spend the time to chase it down. (And in a humorous turn of events, it just crashed as I typed that last sentence.)


The best part is that, when I want it to be, it's just what I was looking for: An efficient plaintext editor that helps me create and maintain a digital brain. And when I'm in a more playful mode, I can tailor the heck out of it, adding all kinds of useful or silly little features like:

Integrated full-screen preview of media files

Keyboard shortcuts that jump between sections (or subsections) of a document

An emoji picker that shows just the ones I like

A full-screen view that rounds the top corners and centers on the screen so it looks nice

A fixed width of 80 characters, giving me a nostalgic push back to the days of green screen VT100 terminals

A custom file view optimized for keyboard navigation which visually highlights plaintext files, and optionally colorizes and/or sorts filenames based on how old the files are

So, finally, I have the app that I had been searching for. All it took was several thousand lines of code written during the Covid-19 pandemic lockdown.


Building Monocle, a universal personal search engine for life
Write plain text files, Derek Sivers' solid take on using text files, along with 100+ interesting comments from readers
The super-thorough Plaintext Productivity System by Michael Descy


» See what else there is is on útilware.com