I take a lot of notes as I work during the day. I usually keep a running log of the work I’m doing for the day. It helps me think out loud and write proto-documentation for myself. It’s a great way to remember what I was up to before.
Last October, as I quarantined in my son’s bedroom, I decided to reorganize all my notes and update my note-taking process.
Previously, I used Ulysses for Mac to manage all my notes. I loved the design of the app and the syncing functionality, but I was starting to have performance issues. Opening Ulysses on my (then) new M1 Mac would sometimes take 5-10 seconds. It was even worse on my iOS device. I suspected there was something in my big pile of notes that Ulysses didn’t like. I contacted support but couldn’t get to the bottom of it.
BBEdit is a text editor originally made for Macintosh System Software 6, over 30 years ago. It’s not typically in the “note taking” app category but it’s been a foundational app for generations of macOS users and developers.
Ever since the tedious migration process out of Evernote’s proprietary format circa 2016, I’d insisted on keeping all my notes as plain text files. This is partially why I’d chosen Ulysses after Evernote since you could stick to plain text using their external folders feature.
Next, I created a BBEdit project and added all my files to it. A BBEdit project (extension
.bbprojectd) is a special kind of file that contains references to other files and folders. BBEdit projects let you work with related files without needing them to be located together on disk. If you’re familiar with Xcode’s project files, BBEdit projects work similarly.
There are many ways to customize BBEdit to work for you. Two notable changes I made:
My old note-taking workflows relied on Dropbox or iCloud drive to sync my notes to all my devices. This is where I lacked good options — I don’t run the Dropbox native client on my Mac anymore and iCloud Drive is too non-deterministic for me.
This piece of my setup won’t work for everyone, but I ended up going with git. My notes are often about the things I have in source control, so as I’m slinging source code back and forth from a git remote, I figured I could do the same with my notes.
If it had been for anything else, I would have created a private repo in GitHub and called it a day. I ended up not wanting to put my years of thinking, planning and researching up on a public service, so I spun up a $5/month VPS instance from AWS Lightsail to be a dedicated git server.
This ended up being much simpler than I expected and I’ve had to do zero maintenance on this server this past year. After setting up your user account and SSH access on the VPS, just create a repo somewhere in your home directory and you’re done. The trickiest part is getting the remote URL right when connecting from a git client (i.e. [user]@[hostname]:~/[path-to-repo]/[repo-name].git).
With this setup, there’s the risk that I won’t have my latest notes on my mobile device if I forget to push to the remote. This has only happened once in the year of having this setup, so I hasn’t been a problem for me.