Brad Lucas

Programming, Clojure and other interests
October 7, 2019

Book Squire Is Ten Years Old

While releasing a new version of Book Squire the other day I realized that Book Squire is ten years old. What first started as a quickly developed application to solve a personal need has grown into one of my longest running applications.

Back in 2009 I was frustrated with the online access to our Library. It was tedious to enter the card number and pin then navigate to the page to see the status of my account. In addition, I was checking on accounts for family members and with four Library cards in hand was finding my patience tested.

I figured why couldn't a program do this. Maybe, do it everyday and at some point send me a note if there was something important to know about.

That was the plan which resulted in Book Squire.


I choose Python for the first version. I got the logging in, navigating of the Library site and the scraping of account data working as a script. Then decided to built it into an application running under the then new Google App Engine platform. That worked for a while just fine. Over time I added a database to store user information and an email notifications feature with nightly reports delivered when accounts had notable events worth mentioning.

After working on a few Django applications I decided to move Book Squire to Django and host it on a VPS. Here it stayed for many years working well except for the random updates made to the Library site which broke the parsing of the pages.

Eventually, the Library upgraded there system in a significant way. Actually made it somewhat user friendly. Still it didn't support multiple cards and you had to click around a bit so Book Squire was reworked and it continued on.

For my latest update to Book Squire I've rewritten it in Clojure. The latest version is much cleaner internally and suspect the maintenance going forward will be easier. The old Python code did suffer overtime as refactoring was never justified enough because it just worked.

If you live in Westcheter County New York and have a Library card you can use Book Squire. All of the 30-plus Libraries in the county share the same central system, the Westchester Library System and so you can use Book Squire to check on your accounts.

The address to try Book Squire is:

Tags: django clojure booksquire library python