I’ve heard stories of people reading encyclopedias or dictionaries straight through, cover to cover. In everyone’s favorite existential-downer novel, Nausea, the “Self Taught Man” tries to read a whole library alphabetically. The basic spirit here – trying to swallow whole text that was meant to be referenced as needed – I guess I can get behind in some way. Trying to read totally general reference works is a bit too diffuse for me, but I do own some topical reference books (e.g. Oxford Companion to The Mind, A Dictionary of Marxist Thought) that I like the idea of reading all the way through despite being organized alphabetically, or otherwise non-thematically.
Realistically though, there is a good chance I’ll never read every last word of these, and even if I tried, I’d want to follow cross-references as I went, which would mean a lot of flipping around to avoid material read out of order. The thought of giving up after the letter C, and knowing a lot about cognitive science subtopics that start with certain letters, is pretty tragic.
What I’d really like to do is read a random sample of the book, then read a random sample of the pages left over, recursively. This way, if I quit at any point, I come away with a more or less unbiased sample, whereas if I stick with it, I can be certain I read the whole thing.
So last night I wrote this Python script to help me do that. I haven’t written much in Python, so it’s probably unidiomatic, but I think the implementation is pretty clean. You could probably implement this in about half the number of lines of code, albeit with hideous inefficiency, if you used Python’s set classes. Oh well.