Awesome Primitives: file syncing
Recently I have been experimenting with simplification of the tools and services I work with. As one part of that, I migrated all of my text mediums from SaaS tools to something simple: a text editor, and a directory of markdown files and images synced across my computers.
The net result has really been amazing, for my productivity and my efficiency.
What I did: consolidated my blog, notes, and journal to text in a shared directory #
The goal was to move as much of my work on text to something built on my text editor and a synced directory on my filesystem.
To get there, I:
- moved all of my notes to from OneNote to .md files
- moved my blog posts from WordPress to Jekyll
- built a Github Action to download my blog folder from Dropbox and publish periodically
- sync the directory across my computers via Dropbox
At the end of all of this, my directory looks like:
docs/ # root directory
blog/ # blog posts
journal/ # daily journal
notes/ # random notes
And I open the root directory up in vscode to start writing.
Advantages #
Making this change has really boosted my workflows. I’m able to work a lot more quickly, whether that’s writing my blog post, adding a journal entry, or adding some notes. Here’s the highlights:
Convenience of everything together #
Making this change has really boosted my workflows, to say the least. I’ve encountered several situations where I wanted to modify one of the other mediums while working on a different one. Examples include:
- jotting down a quick idea to add to a blog post, while taking notes
- adding to my notes during a journal session
- link to my journal from notes
Those workflows would have required me to move from one application to another before. Now, it’s as easy as opening up my fuzzy file finder.
Re-use of tooling #
I’m a software developer, so having tooling that helps navigate the filesystem quickly is a given. As part of my text editor (VSCode as of this writing), I have several tools installed:
- file navigator (built in)
- quickly create / modify files
- quickly visit previously opened files.
- jump to any word in my document in a few keystrokes (a la ace-jump-mode)
- live preview for Markdown / other markups
- syntax highlighting
- spellcheck / syntax check
- vim-style file navigation
- several customized keybindings to perform quick operations
By having my notetaking workflow and blogging workflow work off of files on the filesystem, I now have all of those tools available for as well. Everything that improves my notetaking experience can improve my blogging and coding experience, and visa versa.
The speed #
Navigating the file system and editing text are really fast operations. In the tens of milliseconds maximum, impercievable-from-instant range of time.
Compare this to any http operation that would be required to fetch a new blog post page, or finding an existing note. Coupled with hitting a search service, it’s at least 1-2 seconds to switch pages, and usually more like 5.
The speed by which I can switch from one document to another is amazing. I feel like the editor can really keep up with me in terms of my thoughts shifting from one topic to another.
Re-use of flow state #
The re-use goes beyond just more tangible tools, as well. Due to my profession, my mind is already trained to get into a flow state when I open my code editing environment. Since the flow state is about the environment and not just the task at hand, I can more easily enter the flow state for tasks that use the same tools.
What are the cons? #
Given the advantages of the the filesystem sync model, why doesn’t everyone do this?
Friction to get started #
Admittedly, it takes time and effort to get the workflow working seamlessly, much more so than signing up for another SaaS.
As an example, to start blogging on WordPress:
- create an account (can be reduced to 1-2 clicks with single sign on)
- start blogging
To do the same for a file sync based workflow, I had to:
- find the appropriate static blogging tool
- build a Github action to build my blog regularly
- get the Dropbox credentials to download files into my Github action
- debug 2/3 until my flow works
And even then, my Github Action runs on a daily cron. So the feedback loop isn’t as great as WordPress’s instantaneous post update unless I invest more time into getting Dropbox webhooks to trigger my Github Action.
Tooling cost #
A lot of these SaaS services provide their own editor / object manipulator, which is tailor made to streamline editing of that particular object (blog / note / etc). To get similar parity, one has to invest time into their tooling.
For example, one major feature I needed for blogging was quickly inserting images. I had to find an extension in VSCode that provided that. If such an extension didn’t exist, I would have to create one myself.
If you’re not working with text and files every day for some other reason, most likely any tools you already have will not be close to what SaaS products offer: you’ll have to either buy or find such tools yourself. Ultimately it comes down to the fact that there’s people who are dedicated to improving their SaaS product, and you’ll need to be dedicated to your workflow, or find a community that does.
Lack of mobile app support #
One major loss for me was a streamlined mobile experience. My previous tools (WordPress and OneNote) provided great interfaces to modify content.
Right now, I rely on Dropbox’s built-in text editor in the app. This actually works well enough, but it isn’t as streamlined as things were using the dedicated mobile apps.
Conclusion #
There’s a huge advantage to re-use of highly optimized workflows. In this case, rebasing my workflows off of a filesystem and text enabled re-use of two optimized experiences:
- navigating and manipulating files on a filesystem, streamlined by decades of work on both hard drives and operating systems
- my existing workflow around editing text, borrowed from my software development setup
Anecdotally, I have been able to work much more efficiently on the workflows that I’ve moved to this pattern, compared to the more specialized workflows provided in the equivalent SaaS applications. This experience has made me re-think the need to invest in the next big SaaS tool, when I have such powerful tools available to me already.
I’d recommend taking a look at the tools that you’re already proficient with, and making sure they can’t be augmented to satisfy your new task, before seeking a completely new, completely different tool.