A tool for self-quizzing to help with memorizing large chunks of the Bible. It works as an interactive diff, and ignores punctuation and capitalization. It's as close as I could make it to reciting verses to a live person.

The data files are currently hand-crafted. I may automate that one day.

The best thing about this is that since it's written in javascript, everything runs on the client side (so far), so it is possible to download all the files that the browser needs, and run the page locally without an internet connection. Saving as "Web Page, complete" in Firefox or Internet Explorer works. Saving a "Web Archive, single file (.*.mht)" in Internet Explorer or Opera works too. However, the error beep doesn't work when running from a saved file.


I've recently restarted memorizing the Bible again, but it's difficult for me to find other people to recite to. I did a version of this in turbo pascal a long time ago, and this might be close to what I had before. It helped back then, and I hope that it'll help again.

Getting Started

Select one of data files from the catalog below, click the 'start' button, and start typing. Only alpha-numeric characters and the space character are relevant. All other keys are treated as a space. The result is that we ignore all punctuation.

Hitting the ? key will hint the next character, the backspace key will cause the error counter to forget the current error, the \ key will jump back to the last restart position, and the | key will restart at the beginning of the current verse.

WARNING! Internet Explorer gets really slow (and runs in degraded mode)! Opera is fine for the most part, but it isn't very good at blinking the cursor.

You may download the application by using your browser to save in a web page complete mode. The downloaded file(s) may be run in your browser in offline mode (without an internet connection), but sound will not work.

Technical Details

The client area DIV "text-show" is the main display area. The event driver for the main loop is a 1px by 1px text box "text-in" camouflaged in the top left corner. The client div used to be the event driver, but firefox 3 beta 5 had problems with input elements losing focus, so I switched back to a text box. The text box is re-focused after any control panel operation. Focus is explicitly done in an onclick handler for the DIV.

Data files are in a format that will both render as plain html (that looks nicer with the appropriate css file), and parse into an internal format that the javascript event loop can use efficiently. The internal format is basically an indexed character representation. As characters are typed on input, the internal pointer is advanced to track the user. As long as everything matches (excluding non-alpha-numeric characters), no error is flagged. Errors are tracked in a sparse array of error positions and rendered accordingly.

The selected data file is loaded in the "text-src" DIV element on the page, and parsed by javascript. Since the parser is so simple, it doesn't handle malformed data well, but since I have control over the source data, that's not much of a problem. It should be possible to download the memorizer application page and manually replace the contents of the "text-src" DIV element, but if you do that, you'll have to make sure that the data can be handled by the parser.

Data files are available in the text directory.

Regarding the slowness of Internet Explorer, I've added a degraded mode for IE browsers. Degraded mode means that strings are buffered using arrays, and the on-screen buffers are also shortened.

Opera has trouble handling the blinking cursor (timer event). The problem isn't in searching for the css style to modify, but re-rendering the page after a change is made to any style. It seems to be work well if I change the style on an element directly, but Firefox and Internet Explorer regularly lose thte cursor element because it is dynamically generated.

Privacy Policy