utilware.com - art, productivity, stories, technology
homegetting sh-t donetoo damn tallabout


Writing a bespoke text editor.

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.

The original text used to generate this webpage, overlaid with a calendar window and an Emoji picker window
↑ My editor. I call it 'Scraps'.

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. Every one of them had a bunch of great features, but unfortunately none of them completely scratched the itch.

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:

Simplicity: An interface that was clean and utilitarian, but without going overboard with bespoke fonts and custom kerning.

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 want 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

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/editor/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 3) and the Octel Lookup app we built with it decades ago.
Screenshot of the Xojo programming environment
Now, I have the opportunity to write something that is exactly what I want, with all of the quirks and features this implies, and just for me. 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.)

Features

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

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 lockdown.

Update

The plaintext method worked for me for almost four years, until I finally hit a wall due to wanting to be able to embed images directly into my documents. I looked into writing a page parser in Xojo, and while it's possible to do there, it was going to take me far too long to write.

So I restarted my poking around the web, and came across Obsidian.md which has turned out to be a fantastic app. It's effectively how I would go about writing a markdown-based version of Scraps if I had the time and willingness to figure it out.


Elsewhere

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