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 strongest point, and a few 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 (who was that great plumber?), as well as a place for collecting and working with ephemera and ideas.

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, Muse, and 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

I never did find the perfect app. However, thanks to trying out all of those apps, finally figured out the combination of features that I wanted:

Data portability: No lock-in to a proprietary file format or app, so (a) I don't have to worry about an app, service, or company disappearing, and (b) I can switch operating systems if I ever need to

Data longevity: Plain text files, JPG/GIF/PNG images, and (ok, fine) PDFs when there is a need for advanced formatting

Data integrity: Store files locally on my Mac, making sure that they're always available when I'm offline (or if a cloud service goes down)

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

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 organize my documents however I want, and move them around as inspiration or anxiety strikes

Do it yourself

I finally came to the realization that the best way to get exactly what I wanted would be to create it for myself. Fortunately, I found Xojo, an outstanding language/compiler that generates native M1 code on the Mac (and can cross-compile to Windows, Linux, and iOS). Xojo hides all of the complexities of the platform, so you can just focus on the functionality of your app. And best of all, it reminds me of a previous favorite language of mine, Visual Basic.

Now, I have the opportunity to write something that is exactly what I want, with all of the quirks and features this 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 little features like:

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

Integrated full-screen preview of media files

The ability to take selected pages, convert them to HTML, and post them on my website; every page on this site comes from my app

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
Derek Sivers' solid Write plain text files and 100+ interesting comments from readers
The super-thorough Plaintext Productivity System by Michael Descy


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