In the early days, I kept my list in a Microsoft Access database. I did this because it seemed to me to the be most efficient way to store the data, and I was very big into efficiency back in those days. Eventually, this format was migrated into MySQL. But I found over time that the queries I would make against the data were not nearly as sophisticated as those I imagined I would make. Modeling the data and maintaining it took more time than it was worth.
Eventually, the list moved into a page in this WordPress blog. And for many years, that page was manually maintained. About a year ago, I took the final step at simplifying my list, making it into a simple, plain-text file stored on Dropbox, and writing a simple plug-in for WordPress to read and render the text file as a web page.
This is an example I think is pretty typical: design starts out overly complex because the practical use cases are difficult to imagine. Over time, the design is simplified to focus on just those use cases that are important and meaningful. While my reading list started out as a highly normalized database, today it is a simple text file, and I can do more with it in less time than I’ve ever been able to do before. Today, I can ask all sorts of questions about my reading list simply by knowing a few basic commands at the command line.
My reading list as a text file
I use Sublime Text as my default text editor in both Windows and Mac, and Sublime Text has a few features that help simplify the maintenance of my list. The biggest win is that I don’t need to record the number for each book the way I used to. I simply add a new line to the file with the title and when I look at that title in Sublime Text, I can easily see what number that book is (in the order for which I’ve read it). For instance, I can see that Revival by Stephen King is the 589th book I have read since January 1, 1996.
What I track about my reading
I used to capture all kinds of information about what I read, but I found that I almost never used it. I used to categorize and classify the books, and break them into fiction and nonfiction, and the gender of the author. But I never used it. So I simplified things in the text file. Today, I capture just a few pieces of information:
- Date completed
I have a few symbols I use after the title which indicate information useful to me:
- * = a book I really liked, and would recommend.
- @ = audiobook
- + = e-book
- ^ = a repeated reading (that is, I have read the book more than once).
This turns out to be enough information, and to satisfy most of the questions I have about my reading list and reading habits.
Querying my reading list
One “secret” of my productivity is that I am a big command-line junkie. I have been since I first started playing around with Linux in the mid-1990s. I realize that not everyone uses the command line, and not everyone is comfortable with it, but for many things, I am much faster at the command line than with an app and a mouse.
I always have at least one command window open, whether on a Mac, or Windows (where I use Cygwin). That saves me the step of having to open one when I want to query my reading list. I also have some aliases that speed things up. For instance, if I want to edit my reading list in Sublime Text, I simply type “reading” at the command line, which opens the file in Sublime Text.
But what about querying the list? Well that is pretty easy, too. Here are some examples: