Skip to main content

Weekend project: Book's I've read

It's been months since I wanted to learn databases and create a dynamic website, but it's only this weekend that I acted. In two day I learned how to use MySQL with PHP in websites and created a small project that I call "Books I've read" that stores a list of books I read (obviously).
I am an avid reader and I've been storing the list of books I read (and want to read) in a text document for about a year. Finally, my project moved this list to the cloud and allows me to add, edit and update entries. The app has user authentication, so no one except me can alter my book list.

The design was made in a hurry, but is good enough for my needs. Instead of using normal CSS for styling I've used LESS CSS, a dynamic stylesheet language that extends CSS with dynamic behavior, nested rules, mixins and logical operators. LESS CSS has made styling faster, but unfortunately it relies on Javascript. Without Javascript activated the website breaks. And the website breaks by default in IE versions less than 9.
This was a personal project and I do not intend to allow other people to use the app. There are other, better alternatives for you. However you can still checkout the front page of the app that lists my preferred titles.
In the future I want to implement some basic statistics to my list, like a graph showing a timeline with the ratio of fiction vs. non-fiction books and the amount of books read every 3 months or so.

UPDATE (16.1.2013): I am building a better alternative for tracking read books and books you want to read. Read this blog from time to time to learn when it launches.
UPDATE(2.3.2013): I have published online the newer version of the reading logger I've been working on. It is still under heavy development, but I want to get early feedback. You can find it at


Popular posts from this blog

Basic cell counting and segmentation in Matlab

Counting cells manually is a tedious error prone process for humans. Given a large data set of microscopy images this task can be achieved much faster by means of basic computer vision techniques. In this tutorial we will segment cells from an image following a method similar to the one presented by Yongming Chen in 1999. The method uses basic morphological operations  and the watershed algorithm to segment the cells. Nowadays better methods for cell segmentation exist. This method was chosen for its simplicity and ease of implementation. We start with an image of cell-like structures by Anna-Katerina Hadjantonakis and Virginia E Papaioannou . A = imread('cells.jpg'); We convert the image to grayscale: I = rgb2gray(A); To be able to extract the dimmer cells, it is necessary to perform some local contrast adjustments I = adapthisteq(I); Objects on the borders can be caused by noise and other artifacts. We can eliminate objects on the borders

Project planning in a text file

Whenever you work on a project it is important to be able to plan it ahead of time. This holds true for small and big project, from planning a trip to the spa to building a spaceship. The small project plans can be maintained in you thoughts while bigger ones require tools to help you see the big-picture of the project and manage task at a lower level. There are projects which start with a fully prepared plan and projects which pivot overnight, thus invalidating any original plan. For the latter flexibility is very important, and tools like Trello offer a great solution because they can be adjusted to fit your project. However, it may happen sometimes that the project starts adjusting to the tool or that you still want to maintain a bigger picture of the main points of the project. You may also need to produce a rough development schedule to serve as a long term road-map. I have prototyped a tool (and defined a workflow) which allows you to plan such projects. To better understa

Four qualities of good graphical visualisations

1. Show the data without distorting it. 2. Present a large amount of data and remain coherent. 3. The technique used to create the graphic should not interfere with the user reasoning about the data.  4. Reveal both a broad overview of the data, but keep enough detail for the curious viewer.