A Catalog of Your Files
Tags: productivity, showdev
Published: 2019-08-31 21:40:49

My life revolves around digital files. Every piece of data important to me is represented as a file on my computer:

- 📝 Notes that I take throughout the day
- 🧾 Invoices and periodic financial reports
- 🌐 A collection of website addresses
- 📚 A collection of (e)Books
- 🎵 A collection of audio files (Music, podcasts)


Files have become integral to my creative work and organizational capabilities, and I have amassed quite a lot of them by now.

But this post isn't about me specifically, since I'm certainly not the only person managing a lot of files. So if you have a **substantial collection of files that are important to you** on the computer, then this post is definitely for you!

# The Problem I Had

As the volume of my files grew over time, I experimented with my computer's File-and-Folder management tools as possible solutions towards better organization of my always-growing collection.

My results have been the following: if you are interested in replicating an existing File-and-Folder system from your physical world, then the digital File-and-Folder tools (Windows File Explorer, Mac Finder) are probably the best you can get, since they represent physical objects (🖹 📁), only in digital format.

But for anyone like myself who wants to be completely digital, I argue that the File-and-Folder system is inferior in usability to **a slightly different system which I will introduce in this post**.

In the File-and-Folder system, the file is a unit of content, and the folder is the building block for making hierarchies of categories.

Putting a file in a folder is meant to signify: "this content belongs to this category". And since folders can be put inside other folders, this allows a more elaborate hierarchy of implications. Indeed, putting a folder inside another folder is meant to signify: "this narrow category is a part of that broader category".

This means that creating an association between a file and the folder hierarchy involves identifying a single suitable folder and inserting the file into it.

But what happens when there isn't a single suitable folder? what if we want the same file to be accessible via two different folders? 🤔 the File-and-Folder system forces us to choose between multiple equally horrible solutions:

1. Decide which folder makes the most sense and try to forget about the association with the other folder (👎 and be disappointed when you can't find this file under the neglected folder when you look for it later on)
2. Copy the file and put it under both folders (👎 the two files will go out of sync as soon as you make a modification to one of them)
3. Combine all the files of the first folder with all the files of the second folder (👎 and lose the fine-grained categorization the two folders provided)
4. Ponder your hierarchy structure for awhile and make a grand re-structuring so that Everything Makes Sense Again™️ with the new file in it.

To be fair, the last solution isn't totally horrible, as hierarchies often need to be re-structured in order to remain usable with the addition of new content. However, I found it to be too strict since it forced me to do the re-structuring upfront, which is inconvenient. My hypothesis on that is that our mental models of the hierarchy take time to adapt with each re-structuring that occurs, and so ideally we should delay it until our minds have fully wrapped around it.

# My Solution

I propose to use a slightly different system than the File-and-Folder one.

Instead of the folder to file relationship being a one-to-many, this system offers a many-to-many relationship.

![Filesystem vs. Catalog: Comparison Diagram](https://thepracticaldev.s3.amazonaws.com/i/xle535nkmfbxk1t2dwc5.png)
<figcaption>Left: traditional filesystem. Right: proposed system</figcaption>

From the image above, the diagram on the left is the traditional filesystem: files depend on the folder hierarchy, and can only connect to a single folder.

In contrast, the diagram on the right is my proposed hierarchy, where files are completely independent from the category hierarchy, and can connect to multiple categories (or none!).

In the physical world, this is impossible to achieve, since a file can only be contained inside a single parent folder at any given time, but computers 🤖 don't have to be restricted to what folders are like in the physical world, and can be programmed to deal with files that have multiple parent folders, or rather categories.

But I'm not here just to tell you that computers **can** work with this suggested system, but also that **I have successfully implemented this system and use it every day** for organizing my files.

I named this program **Catalog** because the idea is very much that each user is a _cataloger_ and is given the power to classify his content by way of assigning categories to it.

Catalog is really easy to get started with, and users of File-and-Folder tools should find it intuitive to use. 👍 For example, Catalog has an interface for navigating the categories hierarchy which is strikingly similar to the interface you would already be using for navigating your folder hierarchy:

![Catalog: navigating the categories hierarchy](https://thepracticaldev.s3.amazonaws.com/i/vuyl55hgc7t0riiuq87h.png)
<figcaption>Catalog: navigating the categories hierarchy</figcaption>

In short, Catalog is an open-source software which I maintain in my spare time, and is available for users on all platforms: **Windows, Mac and Linux**. It is 100% **free of charge** and doesn't require registration. Catalog also doesn't require an internet connection which means that it will run on your computer no matter where you go.

I welcome you to give Catalog a try: 
{% github amitnovick/catalog %}

Please let me know if you have any issues by commenting below or even better: by opening an issue on GitHub.
I would also appreciate it if you ⭐️ or ❤️.
Thank you for reading!