So, I’m supposed to be working on this month-long challenge. But hey! I found some other project to work on. It’s in service of my recent computer switcheroo, with which I’m a little obsessed lately.
Since recently switching from OS X on an iMac to Windows 10 on a laptop, I sorely miss file tagging. I’ll admit, this is one feature that I had not given much thought when I was preparing for the big leap to another operating system.
Though I’m happy with my switch, I’m also trying not to live in denial. This is still Microsoft we’re talking about. They have made incredible advancements as of late with their Windows 10 version. And yet, in some areas they are very much behind in innovation compared to Apple.
File tagging is a glaring example.
If you’re at all interested in the Getting Things Done ethos, then you probably know all about this computer software feature. On an Apple computer, you can tag a file or folder with a color and/or keyword. These tags are then searchable. They can help your workflow dramatically.
For instance, in a folder of downloaded bank statements, it would be incredibly handy to know which ones I’ve balanced against my personal finance software, and which still need to be done. Tag the files accordingly!
But after my switch, I can’t do this on Windows 10. And I use Google Drive to be able to do my personal work anywhere, so a file-tagging solution that is platform independent is pretty necessary.
Hence, I began looking for a solution, 3rd party or homemade.
Allegedly, Microsoft pays lip service to file tags, but these aren’t compatible with all filetypes. So that’s a non-starter.
But then I found this 3rd party solution which sounds very promising. But it’s not platform universal, so apparently your tags get vaporized when you email them or open the files on some other OS. You can apparently export your tagging database as an XML file for importing on another computer, but that’s not very intrinsic a solution. I do like how this solution plugs itself into Windows Explorer and the context shell menu!
But ultimately, I think that this won’t be a future-proof solution for my needs.
So instead, I built my own workaround. And I did it with scripting: AHK 1 to be exact. It’s a really fun, easy-to-use scripting language that runs exclusively on Windows. Don’t even get me started on my frustrations with the native scripting on OS X. I always intended on learning it one day… until the day I got out of the Mac world altogether.
- Platform independent. This means I could use the files that I tag both on Windows and OS X (I don’t happen to ever use Linux, so that wasn’t a priority for me). Their tags won’t become lost when opened on another platform, though the actual tagging process will only be conducted on a Windows computer.
- Transferable. This is a slightly different requirement than platform independence. The tags shouldn’t get lost when files are emailed, messaged, or synced across cloud services.
- Searchable. The tagging architecture must be plainly identifiable in some way, such that they can be searched easily.
- Non-destructible. The tags must not interfere with the files’ usability.
- Extensible. The tags and tokens should be configurable, such that the user can setup their own tagging schemes and change them over time.
I came up with the following:
It’s as inelegant a solution as I am old. But the longer I thought about it, it’s the easiest to implement, the quickest to set up, and meets all the above requirements. In the scheme that works for me, I have three tags:
- untagged files
- tagged with some sort of “todo” keyword
- tagged with a “done” keyword
tagged: bank_statement_07232015 @TODO.pdf
retagged: bank_statement_07232015 @Done.pdf
For this script to work as painlessly as possible, I used global shortcut keys to tag the files one way or the other. One or more files can be tagged or untagged simultaneously. Alternatively, you can bring up a GUI to do the tagging.
You can find the source code on my GitHub. Here is the source…