Jordan Hollliday

jordanholliday@gmail.com

Side Project: Bounds

Bounds is an app for reading books faster. It’s also the reason I learned to code. I started working on it in 2014, right after Spritz announced the release of their SDK for creating apps that implement rapid serial visual presentation (RSVP), a reading technique where the screen flashes one word at a time. I wanted to try reading books that way, but at the time, there weren’t any apps for that.

I knew just enough Javascript to realize I could split words and flash them on the screen in the same way Spritz did, so I decided to write my own version. I also added a backend for saving long texts and tracking your progress as you read. Humorously, the original backend was Wordpress, and all my books were saved as comments on a single blog post—because Wordpress comment forms were the only HTML forms I knew how to implement.

Bounds and I have come a long ways since then. After many iterations and attempts to make it work, I lost faith in RSVP for reading books; you lose context when you only see one word at a time, so complex material is hard to comprehend. I reworked the app to show the full text, and added an underline animation that guides your eyes and moves at your desired reading speed.

Bounds started out as vanilla Javascript nested inside a single script tag. Since then it’s been reimplemented with React, AngularJS, and Vue, and it now runs on Angular 8 with Ivy preview enabled. It used to have NgRx; more recently I tore that out because it added memory leaks that degraded the performance of the underline animation. ePub uploads are saved in Cloud Storage, and a Cloud Function instance parses them into the JSON format the web app expects.

I estimate that I’ve read 200 books in Bounds. My biased opinion is that it now provides a very pleasant reading experience. No question it has made me a much more prolific reader.

Link: Bounds

December 31, 2020  @jordanholliday