Nate Meyvis

On writing a PDF reader

In reading about John von Neumann, I was reminded that I've never found a PDF-reading system that's truly comfortable to me. So I made my own Web-based PDF reader. It is far from perfect, but is already my favorite PDF reader.

Notes:

  1. There are many fine PDF readers out there, but I've never found one that (i) is very fast, (ii) handles note-taking, bookmarking, and highlighting comfortably, and (iii) makes file navigation easy.
  2. I also want keyboard-driven navigation and highlighting, so I implemented a bunch of Vim or Vim-inspired keybindings.1
  3. This is a good example of "home-cooked software" in Maggie Appleton (et al.)'s sense, though with a different emphasis from most of the home-cooked-software crowd. Part of making software for a smaller audience is, of course, being very attentive to that audience. But it also involves not being attentive to other audiences, and also not worrying about regulatory issues that come up only in non-local contexts. A home-cooked meal can have allergens without warning labels. I'm allowed to cook with a dog in my kitchen.2 I can make pancakes the way my family likes them, without regard to anyone else's preferences. I can put hacky Vim keybindings in my PDF reader, even if columns don't line up nicely and many other edge cases will break them. I can ignore 99% of a PDF reader's reasonable features and just make it fast.3
  4. I use AI every day and heavily, keeping careful track of new tools and how good they are, and I was still surprised at how quickly and easily this came together. The effort would almost have been worth it just to improve the experience of reading that single 13-page PDF that prompted me to make it.4
  5. I plan to keep tweaking it, but only as necessary. This is another analogy with home cooking. Home cooks are often quite eager to refine their meals, but usually work on a specific dish when they have independent reason to be cooking that dish.
  6. The experience made me a bit disappointed in myself. How many times in the last year have I wrestled with a PDF reader and not even considered making my own? For all my eagerness to make things, it appears there was a part of me that simply accepted that reading PDFs must be annoying and clunky.

  1. It turns out that Zathura and others do this! But I wanted something that (i) is Web-based, (ii) has the other features I want, and (iii) I know about.↩

  2. I don't, in fact, have a dog. But it's nice that I may cook with a dog.↩

  3. Not that performance and feature-richness are always at odds, but sometimes it is; this is closely related to the performance-generality tradeoff.↩

  4. Some would say that this points to a future where AI will create PDF readers per-PDF (or at least for different subsets of PDFs or otherwise ad hoc). I really don't know, but this has definitely made this sort of prediction a lot more vivid and plausible to me.↩

#future of work #generative AI #software