Category Archives: Adventurous Reader Development

Representing a network of a non-linear book in Python

A sub-section of a non-linear novel was developed to test and demonstrate the non-linear eBook reader Adventurous Reader. The sections of this novel and how they connect together are shown in the networks below. It’s easy to see that this graph is going to get very messy, which is problematic because an interactive network will be the reader’s navigational tool as opposed to a table of contents. Considering that network visualization is a difficult problem to solve, I began research on how to better dynamically generate networks for Adventurous Reader.

Before visualizing non-linear book networks though, I needed a way to represent them. Adventurous Reader is being developed in Python, so I began by researching Python’s network/graph libraries and found networkx. This library stores networks as nested dictionary objects. Each node can store multiple attributes, including complex objects, and graphs can be directed or undirected. networkx also can write networks to files and read from files of various formats, which is important when it comes to saving the reader’s progress. It also has very basic node layout and visualization methods, but these are not powerful enough to create usable networks for complex non-linear novels.

While I will use networkx to represent the networks in code, I’ll need to look at other packages and libraries for visualization. The best options I’ve found so far are D3 and Graphviz. The problem is that D3 is a Javascript library and Graphviz is a C++ library. There is a way to use both of them in Python applications. I’ll need to determine which package will better fit my needs and then research how to integrate it.

Handmade UMLet network
This network of non-linear book sections was handmade in UMLet.
networkx Spring Layout
This network has the same nodes as the network above but was generated using the default spring layout provided with Python’s networkx package.

Creating a map for a non-linear eBook

As part of the development of the non-linear ePub Reader Adventurous Reader, a story that takes advantage of how it will be viewed within it will be developed. This story should demonstrate that reading non-linear content within Adventurous Reader is significantly different from viewing it in a traditional linear reader and serve as an example of the types of non-linear and interactive books that can be written to engage readers in today’s world of fast-paced, short, various, and vast entertainments.

The story in development makes use of optional sections and storylines to create an experience that allows the reader to consume a short story but encourages them to explore the concepts discussed within it. In this way, the reader can have an experience that is as long or as short as desired. While there is enough material to make this story book length, developing a subset of the book’s content will suffice in testing the Adventurous Reader concept.

A preliminary list of all sections in the book.
A preliminary list of all sections in the book.
A map showing how some sections of the book connect together.
A map showing the subset of the book that will be developed for demonstration. This map shows how some sections of the story will connect together.