{"id":1256,"date":"2026-02-13T03:01:27","date_gmt":"2026-02-13T07:01:27","guid":{"rendered":"https:\/\/jolivo.xenius.org\/?p=1256"},"modified":"2026-02-15T21:19:17","modified_gmt":"2026-02-16T01:19:17","slug":"bookblaster-a-rapid-serial-visual-presentation-rsvp-app","status":"publish","type":"post","link":"https:\/\/jolivo.xenius.org\/?p=1256","title":{"rendered":"BookBlaster &#8211; A Rapid Serial Visual Presentation (RSVP) App"},"content":{"rendered":"<p>I was inspired by an NPR post to put together an RSVP speed-reading app. (LONG LIVE NPR.)<\/p>\n<p>The app rapidly displays book text at up to 1000 words per minute, and reads PDF, Epub, Mobi, and TXT files in word chunks of 1 to 7.\u00a0 It&#8217;s called BookBlaster.<\/p>\n<p data-path-to-node=\"0\"><span class=\"citation-7\">In Rapid Serial Visual Presentation (RSVP) applications, large texts (books, articles, etc.) are displayed with a single red letter located somewhere within the chunk. These red letters are chosen by an algorithm, based on experimental data, which determines the <\/span><b data-path-to-node=\"0\" data-index-in-node=\"116\"><span class=\"citation-7\">Optimal Recognition Point (ORP)<\/span><\/b><span class=\"citation-7 citation-end-7\"> of a given word or collection of words. (In some literature, this is also called the &#8220;Optimal Viewing Position.&#8221;)<\/span><\/p>\n<p data-path-to-node=\"1\"><span class=\"citation-6 citation-end-6\">The goal of highlighting this point is to minimize the time your brain spends processing a word, by centering it exactly where your eyes can identify it most efficiently. This point, at least in languages written left-to-right, shows a bias toward the front of the word and is not displayed exactly at the center.<\/span><\/p>\n<p>Find it here: <a href=\"https:\/\/xenius.org\/\/clickandbuilds\/BookBlaster\/index.html\">BookBlaster<\/a><\/p>\n<div class=\"source-inline-chip-container ng-star-inserted\"><\/div>\n<hr data-path-to-node=\"2\" \/>\n<h3 style=\"text-align: center;\" data-path-to-node=\"3\">How the ORP is Determined<\/h3>\n<p data-path-to-node=\"4\"><span class=\"citation-5 citation-end-5\">The selection isn&#8217;t random; it follows a specific linguistic and mathematical formula based on the length of the word.<\/span> Since our peripheral vision is weaker than our central vision (the fovea), the application &#8220;anchors&#8221; the word so that the most informative part hits the center of your gaze.<\/p>\n<div class=\"source-inline-chip-container ng-star-inserted\"><\/div>\n<p data-path-to-node=\"5\">Typically, the red letter is chosen based on these general rules:<\/p>\n<p data-path-to-node=\"6,0,0\"><b data-path-to-node=\"6,0,0\" data-index-in-node=\"0\">For Short Words (1\u20133 letters):<\/b> The first letter is usually highlighted.<\/p>\n<p data-path-to-node=\"6,0,0\"><b data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">For Medium Words (4\u20135 letters):<\/b> The second letter is highlighted.<\/p>\n<p data-path-to-node=\"6,2,0\"><b data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">For Long Words (6\u20139 letters):<\/b> The third letter is highlighted.<\/p>\n<p data-path-to-node=\"6,3,0\"><b data-path-to-node=\"6,3,0\" data-index-in-node=\"0\">For Very Long Words (10+ letters):<\/b> The fourth or fifth letter is highlighted.<\/p>\n<h3 style=\"text-align: center;\" data-path-to-node=\"7\">The Physics of Focus<\/h3>\n<p data-path-to-node=\"8\"><span class=\"citation-4\">When you read normally, your eyes move in jumps called <\/span><b data-path-to-node=\"8\" data-index-in-node=\"55\"><span class=\"citation-4\">saccades<\/span><\/b><span class=\"citation-4 citation-end-4\">.<\/span> During these jumps, you are effectively blind; the brain only processes information during the &#8220;fixation&#8221; (the pause).<\/p>\n<div class=\"source-inline-chip-container ng-star-inserted\"><\/div>\n<p data-path-to-node=\"9\">RSVP eliminates the need for saccades by:<\/p>\n<ol start=\"1\" data-path-to-node=\"10\">\n<li>\n<p data-path-to-node=\"10,0,0\"><b data-path-to-node=\"10,0,0\" data-index-in-node=\"0\">Fixed Positioning:<\/b> Keeping the ORP in the exact same physical spot on the screen.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,1,0\"><b data-path-to-node=\"10,1,0\" data-index-in-node=\"0\">Reducing Muscle Strain:<\/b> Your eye muscles don&#8217;t have to move back and forth across a page, which reduces fatigue and prevents &#8220;subvocalization&#8221; (the habit of saying words in your head).<\/p>\n<\/li>\n<\/ol>\n<h3 style=\"text-align: center;\" data-path-to-node=\"11\">Why Red?<\/h3>\n<p data-path-to-node=\"12\">The color red is used because it provides the highest contrast against standard black-and-white text and acts as a &#8220;visual anchor.&#8221; It gives your eye a specific target to rest on, ensuring that the most complex part of the word (the middle-front) is processed instantly.<\/p>\n<p style=\"text-align: center;\" data-path-to-node=\"12\">____________________________________________<\/p>\n<p data-path-to-node=\"12\">Notes: The app is fairly simple.<\/p>\n<ul>\n<li data-path-to-node=\"12\">Select the Words Per Minute (WPM) using the slider at the bottom of the page. Chunk size\u2014the number of words displayed per tick\u2014is also selected via slider at the bottom of the page.<\/li>\n<li data-path-to-node=\"12\">For EPUB files, chapter headings will be displayed in the left panel and can be selected, allowing you to navigate your book chapter by chapter.<\/li>\n<li data-path-to-node=\"12\">The large slider at the bottom is the progress bar.<\/li>\n<li data-path-to-node=\"12\">There is a Light Mode\/Dark Mode toggle\u2014the little moon or sun icon located in the upper-right corner.<\/li>\n<li data-path-to-node=\"12\">Finaly there&#8217;s the Open File button. You can search for files on your device by clicking that, or simply drag your file into the main window. If using the browser version, note that uploaded files are not stored anywhere. Everything happens in-memory in the browser tab. When you pick a file, the FileLoader in script.js reads it using browser File APIs (file.text(), file.arrayBuffer()), then extracts the words and chapters, and passes them to the RSVPEngine instance. The engine holds them in plain JS arrays (this.words, this.chapters). So there&#8217;s no server upload, no IndexedDB, and no localStorage. Just JavaScript variables.This means the data is gone when you refresh the page or close the tab. Your file will need to be re-opened to read it again.<\/li>\n<li data-path-to-node=\"12\">The downloadable version will save your place. I&#8217;ll make that available as soon as possible.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I was inspired by an NPR post to put together an RSVP speed-reading app. (LONG LIVE NPR.) The app rapidly displays book text at up to 1000 words per minute, and reads PDF, Epub, Mobi, and TXT files in word chunks of 1 to 7.\u00a0 It&#8217;s called BookBlaster. In Rapid Serial Visual Presentation (RSVP) applications, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1260,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-simple-featured-image.php","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-1256","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rants"],"_links":{"self":[{"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/posts\/1256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1256"}],"version-history":[{"count":11,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/posts\/1256\/revisions"}],"predecessor-version":[{"id":1299,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/posts\/1256\/revisions\/1299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=\/wp\/v2\/media\/1260"}],"wp:attachment":[{"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jolivo.xenius.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}