Thoughts of an Eaten Sun

through the mind of kyle tolle

Introducing Everything

Lately, I’ve been thinking about how to keep all my creative outputs in a single place. This includes writings, images, videos, and audio. I’ll focus first on the writings, because I have a better idea of how to store them and I work with them the most.

One of my main problems is that things get spread across different places. Various folders, services, and file formats, to name a few. Remembering each of these places is a chore. Not to mention that over the years file formats and services come and go. So viewing or editing the writing will likely be difficult or impossible years later.

My goal is to have a single, central location where all my writings are stored. From my very first pieces of poetry written back in middle school to the short stories I’ve lately posted to my blog. I want to keep it simple, but allow for powerful extensions down the road.

Since the goal is to track everything, I’ll also call it everything.

Here are some of my requirements:

Plain text

All my writings will be stored as text; plain and simple.

It’s important to remove the ability to silo my data where it becomes inaccessible later. These silos could be a proprietary or binary file format. The file format may be abandoned or it later becomes impossible to run the software needed to view or edit the file. I also won’t use password-protected files, since it’s easy to forget the passwords. Microsoft Office and WordPerfect are examples of programs and formats that become difficult to use a decade later.

Since some styling is important, I’ll write in Markdown. This gives me a way to mark up the content so it’s easy for humans and programs alike to read.

There are many programs which can convert Markdown to HTML. That should be good enough for most of my needs. Even if Markdown becomes obsolete, the text is still available, and the formatting human-readable.

Simple

Writing in plain text is one way to keep it simple. But how will I store multiple writings?

Folders and text files are something computers have done for decades. They’re good at it. Tons of software works with folders and text files, especially Unix and its variants. Folders and text files are cross-platform and well-supported. Using this well-tested, well-known, widely-accepted convention will be key to using it over the long term. I’ll also be able to extend it in various ways.

Folders-and-text-files is the obvious choice for storing my writings.

Local to My Computer

I’ll store everything locally, on my computer. I won’t have to worry about web services disappearing and taking the sole copy of my writings with them. Google Wave, Xanga, and my own, old websites immediately come to mind as offenders of this.

Another benefit is that I indisputably own and maintain complete control over what I create.

Storing everything locally also means I can do a lot with it, some of which I’ll mention shortly.

Single Location

Using a single, root folder that houses all my content means it’s stored in a central place. Writings won’t be spread out across who-knows-how-many places. Searching will be easier. And it adds to the simplicity mentioned above.

Consistent and Conventional

Using a consistent organizational structure, naming convention, and data format will make it easy to use. I’ll think less about where my data is kept or how to use it, because it’ll be the same for everything I write.

Convention is paramount.

My root folder will contain subfolders of topics. Each topic folder will have folders for individual pieces. Each piece’s folder will contain text files.

I’ll use this piece as an example. My root folder is called everything, and the subfolder for this topic is everything-thoughts, which has a further subfolder for this piece called introducing-everything, which contains a text file called index.md.

everything/everything-thoughts/introducing-everything/index.md

I can play with the structure of folders and files as I use it more.

Another benefit is the ability to store images and files related to my written piece in its folder and keep them for reference. Now that will be handy.

Private

All my writings will be private by default. This mainly means I won’t be posting directly to a blog. Many of my writings wouldn’t make sense to be public, and others are just for my eyes. Everyone has things they’d like kept secret. Knowing everything is just for me means I don’t have to worry about self-censorship. And I can always make things public later if I want.

Versioned, Redundant, and Backed-Up

Storing text files in folders means I can take advantage of existing services and tools to have redundant, versioned, and backed up copies of my writings. I won’t have to implement some clever scheme of my own to achieve this. This is truly a huge advantage.

I’ll use things like git, Dropbox, CrashPlan, Time Machine, and GitHub.

Making the root folder a git repository means I can version my writings easily and also use branches. I work with git in software, so it makes sense to use it for my plain text writings as well.

The files-and-folders pattern means I can use all these services, or none of them, or even change things up later without impacting anything about how I create or store my writings themselves.

Store Metadata

A written piece has data associated with it that goes beyond the text of the piece itself. Links to the blog post at which this piece was published. Things like original creation date or the original source are helpful if it came from a Word document. Maybe comments on the piece as a whole. A list of people who have contributed to it, say editors. Since I’m using a convention to store the writings, I can easily have another, related file to store this metadata.

Flexible

Writing in plain text allows me to write flexibly. I love using vim for writing code because of the ease of manipulating text. I’ve written blog posts and documentation for work in plain text in vim and found it quite pleasing.

It allows me to have multiple views of the document which is helpful for editing and rearranging. If I find something else to be more useful, I’m able to use that as well. Editing text is something tons of software does.

Using a git repo to store text files in folders means I’ll have to maintain this repository from my laptop for now. But using plain text means I can write in something like Evernote and then add it to my repository later. And I can track the metadata of the original file, etc.

Extensible

I will start with writings, but I’ll be able to later apply these same conventions to other things I make like images, video, and audio. Git and GitHub might not be an ideal choice for these additions, but I can explore the options later.

One of my most common workflows is to write a piece and then post it to my blog. I should be able to write some software to read the post from this repo and then publish it to my WordPress blog. I could do this from the command line, or take advantage of GitHub’s webhooks.

Eventually, I’d like to build my own applications so that I could write using an iOS application or on a website and it would be backed by my git repo. Keeping it simple gives me the power to write these kinds of integrations later.


Moving all my existing writings into this repository will be a long process, but I can work on it over time. It’s encouraging to have a goal, though!

I’m sure things will change as I use it regularly. I currently know the least about this project that I ever will. Hopefully my focus on plain text and simplicity will make it easy to evolve.

Here’s to everything!