At the end of this year, my reading list will be twenty-years old. The list has evolved over time from simple, to complex, and back to simple. But over the course of the last two decades, it has always been available online in one form or another. When I started keeping the list, it was a simple HTML page. It evolved into a sophisticated relational database. When social media sprouted, it moved into places like GoodReads and LibraryThing. But eventually, I found that I had the most flexibility, and easiest maintenance, if I just kept the list as a plain text file on Dropbox.
While I was playing around with Atom1.0 , GitHub’s open source text editor, it occurred to me that I might be able to squeeze out even more functionality from my plain-text reading list. So I created a new repository on GitHub, my reading-list repo, and checked in my plain text file. To what end?
Commenting on the books I read
I’ve often wanted to write brief comments on the books that I read, but I’ve never been happy with the interfaces of places like GoodReads or Amazon reviews. I’m not interested so much in writing a review of the book, or giving it starts. I just want to capture some thoughts.
But my list is a plain text file, and capturing thoughts about a book, given the format of the list, would make it awkward at best. It occurred to me, however, that if I had my reading list in a GitHub repository, then each time I added a book to the list, I’d have the ability to add a commit comment when I checked in the list. That commit comment could give me the opportunity to include my thoughts about the book, without messing up the integrity of the list itself.
So that is my plan. Beginning with book #609 (Colonel Roosevelt by Edmund Morris, which I am reading now), I will add my thoughts about the book as a commit comment, when I check-in the list. To see my thoughts about a book, one needs only go to the commits page for the master branch, which looks something like this at present:
One huge advantage to all of this is that I can do it all from a single place–namely, my text editor. I was playing around with Atom this morning, and after installing the git-plus package, I discovered that I never have to leave the text editor to make, comment on, and commit changes to my reading list.
Using Atom to update and comment on my reading list
It works something like this:
First, I open my reading list in Atom. I have a command line alias to do this. Just type
at the command line and hit enter. The current file opens up in Atom. I go to the end of the file, and add the book I just finished reading. (I’ll use Colonel Roosevelt as an example, even though I haven’t finished it yet.) I can easily see which files in the repo have changed and which lines have been updated or changed in the file.
When I am ready to checking and commit the file to GitHub–and thereby add my thoughts on the book I just added–I can do it directly from the editor:
After selecting “Add All Commit and Push” I get another editor window that prompts me for my commit comment. This is where I’d add my thoughts about the book:
As soon as I save this, the file is committed to the GitHub repo and pushed to the master branch. Anyone who wants can see it in the list of commits:
Now I have a nice tidy way of adding thoughts about the books I read without messing up the integrity of the list, and without every having to leave my text editor. But wait, there’s more!
Subscriptions and discussions
Because the list is checked into a GitHub repository, it comes with all of the features and functions of a GitHub repo. Other GitHub users can subscribe to the repository, and get notifications when it is updated–that is, when I comment on the book I just read.
Moreover, anyone can click on a commit, and see my thoughts, and, if they so choose, add comments of their own:
I understand that some of this stuff is beyond what the average person might do, but I have been fascinated by the potential of GitHub for uses beyond just that of maintaining code. And when there is seamless integration, like that built into Atom, it makes it a no-brainer solution for maintaining my reading list.