Project – Systematic Reading

Systematic reading of books

booksWhen I read a book, one that has important material that I wish to refer to in the future, I generally make use of some of the following techniques for annotation:

  • highlighting text with a marker
  • underlining important words or phrases
  • making short notes on the margin
  • leave bookmarks in places that have items of particular interest

If the content is useful enough, I may even do some of these:

  • looking up the meaning of difficult words
  • making a glossary of important terms
  • making compilations of quotations on a particular topic that is of interest
  • grouping these topics together and forming a conceptual outline of the entire work
  • combining conceptual outlines to form a grand outline of the entire subject area

Once I have read through a book and annotated it, when I come back to that book in the future I have all my annotations available, so I can easily flick through the book and find useful content. I could even re-read it and enhance my previous annotations.

In search of an online solution

I would like to have this whole process achievable with a computer – preferably as a web tool, but if web development standards are not mature enough then a desktop application would do.

I have looked around to see if there are any suitable solutions, but have failed to find any. The idea first surfaced in 2006, and I figured pretty soon somebody out there would also see the need and create it, but that doesn’t seem to have happened yet. So I’m hoping to get the process going so that one does get created.

Once there is a tool that can do this, the process could be further enhanced by introducing collaborative elements. It could also eventually be made for portable devices such as the iPhone.

Initial ideas

Here are some ideas to get the ball rolling.

Main component – online reading with highlighting:

  1. you should be able to read books through it, and highlight text for annotation while you’re reading
  2. all highlights and annotations would be saved and retrieved from an online database
  3. when reading, it must be obvious that a particular section of text has been highlighted before
  4. you should be able to make multiple highlights on the same portion of text, with highlights overlapping but distinguishable
  5. each highlighted area must be an entity of itself, so one can annotate it
  6. highlights can span multiple paragraphs, and can also be less than a full paragraph
  7. if the tool can handle arbitrary online websites, that would be great! otherwise one should be able to add books or articles for future reading
  8. content is subject to minor corrections, so there should be a way to handle that


  1. should have a section for global notes on the current book
  2. should be able to add notes quickly to the side of the text, without having to highlight a portion of the text first
  3. should be able to summarize or provide a title for each highlight
  4. should be able to associate tags with each highlight
  5. tags should be associated with each other in an ontology
    1. they should relate to each other in parent-child/hierarchical relationships, with each child potentially appearing under multiple parents
    2. there may be various types of tags; or other ways of grouping things such as Book, Author, Central theme, Supporting argument, Repetition, Order of ideas
    3. when performing annotation, some of these tags would be added automatically to each highlight (such as the current book/author)
  6. when viewing tags:
    1. one should be able to construct a filter by adding or excluding tags from the set
    2. tags should be sortable in various ways, such as by date added, by chronological order of appearance from a particular source
    3. there could be various pre-set views:
      1. outline of a book – filter by the tag for that book, and sort chronologically
        one could imagine a side-by-side view with the tags on the left and the book on the right, where clicking on an element of the outline focuses on the relevant highlight in the book
      2. constructing an outline while reading – one should be able to, while engaged in reading, organize annotations to form an outline of the work. This could take the form of a pane on the side with drag-and-drop sorting and leveling, where every annotation is automatically added to the end of the current outline but can be moved around if necessary
  7. annotations must be in a portable format (you would be able to export from it, and that exported information should be human-readable in some way)

Implementation – technical details:

  1. Saving and loading – once a highlight is made, how do we keep track of what was highlighted, to be able to show it again in the future?
    1. Add a begin and an end-marker to the text and save the entire paragraphs concerned
    2. Count the number of characters into the current paragraph and restore that count later
    3. Divide the whole work into words, with each word having an ID; highlights can be made from word to word
      1. Each word would have an ID, but also a sequence number for sorting
      2. Any additions or deletions of words to the text would result in new/deleted IDs just for the word concerned, but the sequence numbers would all be adjusted
      3. A highlight would contain a list of all the word IDs the highlight covers
      4. When displaying a highlight, the system would sort the word IDs and make sure the sequence is complete, then if it is only the first and last word are used and a highlight made from the beginning of that entire block to the end
    4. Have a fixed font and size of the viewframe, record the co-ordinates of each highlight
    5. Always display using a fixed-width font, then record the row and column of the beginning and end of each highlight
  2. Display of highlights – how do we display the fact that a section of the text was previously highlighted?
    1. Highlight the text again, in a separate container which is a copy of the real text, then float that container above or below the current text to make it look highlighted
    2. Create a floating box above the highlight which is filled with a color, but semi-transparent; multiple highlights can overlap and the colors will combine to form ever-darker highlights
    3. Have a thin colored bar on the right of the text with the same height as the highlight; subsequent highlights of the same portion of text would then go on the right of each other, ordered based on which highlight started first. When a user clicks on one of the bars, the corresponding highlight is turned on (transparent color as above) – and turned off upon another click. It could also appear on hover then disappear. All highlights or a group of them could be turned or off at once, with a light-bulb icon at the top of the column either shining or being turned off

To do: add diagrams to illustrate the above ideas

I’ll edit this page over time as the idea evolves. Feel free to contact me about this.