Books / News

February 2017 Changed the page listing all books so sorting by rating works now, making it much easier to find the best/worst books I've ever read.

March 2016 Changed the page listing all books in a table format to use jQuery / DataTables, allowing one to search / filter / sort. This makes it easier to do stuff like "show me all the Grisham books I've read sorted by date".

May 2015 The book chart was getting unwieldy; showing 18 years of data as a single line was making each year too small to see anything. Replaced the static gnuplot-generated image with a dynamic Javascript/canvas chart loading the data from a JSON file. The new chart shows each year's book reading progress individually.

October 2010 Added an extra rating column to the "list by author/name" pages, since I often want historical guidance as to what I should rate a new book and it's tiresome clicking on all 24 of my Iain Banks reviews simply to find out the ratings. Much easier when they're all displayed on one page.

This also necessitated a change I've been very lazy to make for years now: creating a separate picture for each star rating instead of just stacking multiple star/half-star pictures together. Stacked pictures caused the table layout in the list pages to break so they had to go.

I also took the chance to add rounded corners and drop shadows to the layout to fit in with my new homepage look.

August 2010 Upgrading Debian caused my book scripts to fail; the old database connectivity Python module I'd been using no longer exists. So I had to change to a different one with slight API differences, and also it used a different datatype for date columns, which also needed some code changes.

October 2009 My laptop's hard drive died, and after doing a fresh install of Debian 5.0 and trying to restore my PostgreSQL backups it utterly failed to accept my ISO-8859-1 encoded data. I decided this was a signal that the time had finally come to switch to UTF-8 for all my personal data. I'm impressed by how far the tooling has come, I had absolutely no problems doing the switch.

August 2009 Once more Amazon is messing around with their web services API, this time by making it mandatory to cryptographically sign all requests. And once again they don't provide official Python libraries. And once again outside Python libraries seem to be the same forked and unmaintained mess as the last time I looked, and I had no desire to spend however long it took to change my code once more just so Amazon can make more money.

In other words, I threw out all Amazon support and replaced it with a simple system that uses Google to search cover images for books (with a manual step allowing me to select the one I like best), which it then downloads and stores on local disk. I've come to the conclusion it's not scalable to rely on external links staying alive, and I don't have time anymore fixing old broken links all the time. I want to download a single image once, when reviewing a book, and be done with it, forever and ever.

Since I now only have one image per book, and I'm in full control of it (it can't change underneath me), I also made the image size much bigger. It makes the books seem much more interesting when you can actually see the intricate design many of them have.

I also removed the price comparison page since it's been useless to me ever since I moved to Tokyo.

July 2008 Ever since I added the Amazon links, they've been pretty stable, both the links themselves and the images I link to. But recently almost all of the image links have been broken, which leads to ugly looking pages with no images. So I wrote a Python script that checks each image link for validity, and if any links for a given book are broken, re-does the Amazon search for the book and updates the links.

February 2008 Amazon had been sending me emails saying they'd be discontinuing support for the old web services API in a couple of weeks, and I was thus forced to spend time switching over to the new API. Sounds simple enough, but it wasn't. The Python bindings for the new API were not as mature as they were for the old one, so I had to edit them to add in missing functionality. Also, Amazon had changed the way information is returned back quite considerably so it took some time to get everything working again. Also regenerated images/links for all books and enhanced my script for editing existing data a bit.

September 2006 Converted the two remaining Perl scripts to Python and in the process tweaked comment input, storage and formatting to make writing long comments easier. Optimized graph generation algorithm from O(nm) to O(n+m), where n = number of days and m = number of books.

March 2006 Added the price comparison page.

December 2005 Changed the feed format from RSS 1.0 to Atom and made the feed entries point to the permanent page for each review instead of pointing to current.html.

May 2005 Added support for Wiki-style links to other reviews (see this for an example).

April 2005 Revamped the whole thing: Amazon links, cover images, grouped by year, author/name lists, optional separate page for each book, totally different layout (done with CSS), RSS feed, spoiler protection, etc. Also, it's using Python now.

December 2002 Added a chart showing how the total number of books I've read has progressed.

September 2001 Added the possibility of giving books a rating of "Unrated".

July 1999 Moved the database from flat ascii files to a real database (PostgreSQL).

November 1997 Changed the rating system to allow half stars to be given.

September 1997 Replaced the bash script with a Perl one that allowed me to include comments about the books.

April 1997 Project started. One bash script and one text datafile.