Everybody needs to take notes, may it be for school, to have a handy grocery list in the store, or to keep a log of business expenses for accounting purposes. Some people use physical notebooks, some pick up whatever napkin happens to be in the immediate vicinity and roll with it for the day, and others, like myself, prefer to leverage digital notes. In this article, I’ll take you through my journey with note taking apps. We’ll go over my personal definition of a “good” note taking app, explore some of the options I used and the challenges I faced, and finally land on the solution I ended up adopting with a couple of learnings that emerged along the way.
My journey with digital note taking started with whatever default notes app happened to be on my phone. At first, I didn’t have any particular framework for note taking; it was just a random collection of digital post-it stickers. Similar story on the desktop, a structureless heterogeneous cluster of text files scattered all over the place.
Then, I started taking notes more seriously (pun intended) to capture knowledge, such as book summaries and highlights, things I learn from videos and documentaries, new vocabulary I come across, random ideas or questions I want to get answers to, and more. Before you know it, my notes catalogue started getting a bit heavy and it was apparent that I needed some sort of framework to better tag and organize all that knowledge. At the time, Evernote was the new kid on the block and it had some attractive features, so without putting much thought into it, I created an account and poured all my notes over to it.
I used Evernote for a long time, longer than I would want to admit. But one day, shortly after I’d begun getting serious about my online privacy, I had a “Oh shit!” moment that I still remember to this day.
The Rabbit Hole
I geared up and I ventured down the rabbit hole of privacy-friendly, and open-source, note taking apps. I set a few criteria to guide my expedition:
- The service has to be free of charge, or offer a free plan;
- It has to be offline and/or support end-to-end encrypted backup and/or sync; and
- It must respect user privacy, so no tracking, ads, or telemetry.
If there’s one thing I would never accept, it would be having my notes up in the cloud in the clear1, may that be temporarily for synchronization or permanently for backup. My notes hold so much information about me, from future plans, to areas of interest in life, to just general knowledge. I bet that even my IQ could be deduced with a reasonable degree of certainty using the right AI model. Now that I think of it, I would definitely see myself in the future training a model on my notes and delegating some decision making to it: a tailored virtual assistant of sort. I’m no AI expert and this does seem far-fetched today, but I wouldn’t be surprised if it were a thing even half a decade from now. Anyway, I digress.
During my research, StandardNotes stood out as a good candidate with its end-to-end encrypted backup and sync, and focus on privacy. It seemed to check all the boxes, so I gave it a shot. I created a free account and, once again, migrated all my notes off of Evernote into my StandardNotes account. I have to admit that this immediately felt like a downgrade; the feature set of StandardNotes’ free tier is rudimentary at best. But in the name of privacy, I sucked it up and worked around the limitations for a while. Thinking back, I realize that this was more of a “stop the bleeding” step than a permanent solution. Case in point, I never actually stopped exploring the free and open source note taking space for better options. Then, I came across Joplin.
At first, Joplin’s UI/UX looked out-dated, especially on mobile devices, but I was willing to be more lenient given that it’s a free and open source software maintained by a handful of generous people. What grabbed my attention was its self-hostable end-to-end encrypted capability. So I downloaded a copy of the app, set up a WebDAV server to handle the sync, and migrated all my notes over. After a few weeks of me getting used to its archaic UI, Joplin began setting itself as my permanent note taking solution. I started tinkering with various plugins, and even looked into making my own. All was great until the day the sync broke! My client was getting 503 errors from the sync server which corrupted some notes and rendered them unusable. Luckily, I had an offline backup of the affected files, so I managed to recover, albeit laboriously, from this crash. A few weeks later, another sync crash wiped my entire notebook. I wasn’t so lucky this time around, however, and ended up permanently losing some of my newer notes. This was the straw that broke the camel’s back. I couldn’t take it anymore; I had to find a better solution.
I decided to give StandardNotes another shot, but going with a self-hosted instance this time. This will ensure that I have full control over my notes’ backups, and that I enjoy a more decent set of features; or so I thought. So I migrated all my notes, once more, to my StandardNotes instance and started playing around with premium themes and extensions. The fact that a simple notes service required so many backend services, a.k.a micro-services, has never really sat well with me. I had the feeling that this level of complexity will eventually prove too cumbersome to maintain. And guess what? It did! After a recent update of the desktop client, my setup was brought to a halt. I was no longer able to connect to my self-hosted instance, running an old version of the server. It seemed like the new client version wasn’t backward-compatible and required a backend upgrade. When I tried to make that happen, I realized that the StandardNotes’ team overhauled their entire architecture. At this point, I wasn’t really down to learn the new setup, build new docker images, and get everything back online. It felt like a lot more work than a simple notes service should call for.
I took a step back, and went back to the drawing board. A quick cost/reward analysis confirmed that all of this friction wasn’t worth it. I realized that I didn’t really need the cross-device sync, since the vast majority of my notes fell under 2 categories: desktop, and phone. I seldom need notes from my phone when I’m on the desktop, and I almost never need notes from my desktop when I’m on my phone. So I decided to use 2 different note taking applications: vim with vimwiki for desktop notes, and my phone’s default notes app with cloud backup disabled. I suppose you know the drill by now: I migrated all of my notes, yes once again, from StandardNotes to vim and my phone’s default note app, hoping that this was the last time I perform this dance.
I’ve been driving this setup for weeks now and so far have a couple of takeaways. First, I’m struck by how pleasant it is to enter a typo’ed keyword into a search bar and watch the powerful fuzzy search engine instantly populate the page with extremely relevant results, the first one being the one I had in mind most of the time. I can’t remember a single time where this failed me. This made me realize just how mediocre, if not completely futile, StandardNotes’ search functionality was, particularly on mobile. Second, I never actually needed the cross-device sync or cloud backup for my notes. Offline backup, and segregated notebooks work just fine, check all the boxes with regards to privacy, and cost me practically no effort.
Before closing this off, I’d like to mention a couple other note services that I considered at some point, but wasn’t entirely sold on so I never took them for a test drive. Obsidian is more than just a note taking app. With its graph features and automatic note linking, it appears to be more of a knowledge management software; way more than I actually need for my personal use. Plus, the sync is a paid service with no option to self-host. Logseq is another solution that briefly caught my attention until I learned that it had no native sync support; the only way to sync data was to go through Github or iCloud.
If there’s a lesson to be drawn from this journey, it has to be that the most complex solution isn’t always the right one. I would argue that the simplest one turns out to be the best, more often than not. It just took me multiple migrations, hours if not days of tinkering around with various setups, and quite a bit of frustration wrestling with poor-UX software and dealing with lousy error handling, to realize it.
I consider “in the clear” data any encrypted data where the keys belong to or are managed by the server. Put differently, in this context, if it’s not end-to-end encrypted, it’s in the clear. ↩︎