Over the past week I have spent some time building an ebook reader. It is cross platform, as simple as can be, can only read .txt files, and 32Kb. It should really be called the Document Reader, but this is exactly what I want. PDFs are horrid in my opinion and they can differ in size each time you produce them (even if you are using the same file and software). Although, there are many awesome PDF readers out there that can allow you to take notes, enable plugins etc. They do not appeal to me because they can quite often be very bogged down by bloat.
Similarly, other Ebook formats are all very bogged down and proprietary EPUBs are my favorite and I actually thought about using HTML for my reader (as default). However, I settled on not having any default format (.txt more or less) for two reasons (a) easy to implement, though EPUB and HTML would be fairly trivial and (b) it’s the most “free” format. I want any device to be able to open any file inside the application, and this enabled that. I should add I currently do not have a way to format HTML or EPUBs, but will work on that if there is any interest.
This application currently only works on Desktops, however I can and possibly will convert this into an Android/iOS app.
Why a Ebook Reader?
I was interested in developing this for a personal project (for which there will be information below), and decided I would try to make it high quality enough that people can take my project and hopefully develop something out of it. With this in mind I developed using Qt (a cross-platform open source UI framework) and C++, which is widely used and the program is modularized to enable expansions with ease. My hope is that others can use this as a template to either developing Qt applications or creating their own Ebook reader.
But there are Hundred of Ebook Readers!
Indeed, there are hundreds of Ebook readers out there, but like I mentioned earlier, this is closer to a document reader. I wanted an application that would be open to fiddling with, I can format as I desired, and at the same time keep statistics on what I read. Now, yes there are many Ebook readers that keep statistics, but not many (if any) that I can alter this easily. With the very basic layout of the application I can keep accurate statistics on how often I read, how quickly, what interests me, what I find difficult, etc. Further, because the layout of .txt files are so basic I can quickly parse files and gather information. I can include learning algorithms, cursor tracking, and the like to improve my reading comprehension as well as keep statistics on how I improve or decline.
What’s the point?
Because this application is so small, lightweight, and cross-platform I can maintain it for a prolonged period and keep the statistics steadily flowing. Even better I can easily add/remove features because it is not bloated and I understand all of the code. With this in mind, the Basic Book Reader is also going to be used for an experiment where I ask volunteers to read over a short story and gather statistics about what they find frustrating. Hopefully, this will accomplish its fairly simple goal (I will share the experiment at a later date).
What I thought would be more interesting would be to launch an experiment where we can record statistics from readers from everywhere (essentially make this application available for download) and send the data to a database which the public can see. It would be completely anonymous, and would simply be used for data collection and analysis and could shed light on aspects such as age, literacy, even marketing, etc.
For example, it would be interesting to see how quickly different age groups read, what they are interested in, how much time do they spend reading specific paragraphs etc. To complete this, this Ebook reader is no where near complete, nor do I have the infrastructure to handle such a task. However, over time I do intend to complete it and if anyone is interested I would love help, so feel free to get in touch. There are obviously many challenges, but I am forgoing them here because quite frankly this is not any where near a finished product anyways.
The upcoming experiment is dubbed/codenamed readmotiv and you may see some of the files titled readmotiv.*. The idea being that the experiment focuses on the question, what motivates you to keep reading? Or the opposite, what motivates you to stop reading? We will format and randomly change out words and determine at which point he user becomes irritated, call it A/B testing for books.
- If you are interested in helping out, feel free to email me at: austin at agw.io or (preferably) fork my github.
- If you are interested in trying out the application, the following is a compiled Mac Version: BasicBookReader.
- You are also welcome to download and compile it yourself from my github.
There is also a tutorial, though I feel I made this application extremely easy to use.