Jim Nielsen’s Blog
Preferences
Theme: This feature requires JavaScript as well as the default site fidelity (see below).
Fidelity:

Controls the level of style and functionality of the site, a lower fidelity meaning less bandwidth, battery, and CPU usage. Learn more.

(Re)Introducing Readlists

I really miss @Readlists. — Me

There have been a number of “read it later” services throughout the history of the web: Instapaper, Pocket, and Readability to name a few. These functioned as services that would take the content of a web page, strip out all the cruft (ads, navigation, comments, etc.), and save the primary content into a personalized queue for later (offline) access.

Readability was my favorite “read it later” service until it was eventually shut down (I’ve paid for Instapaper ever since). During their heyday, the folks at Readability created a complementary service called Readlists that allowed you to take a collection of individual articles from anywhere on the web and package them up into an ebook (an .epub file, .mobi file, etc.). Readlists were like mixtapes but for online content.

I loved Readlists. I used it all the time to take collections of articles online and turn them into ebooks I could read on my favorite devices (kindle, iPad, etc.). This fit perfectly my preferred workflow for learning from online writing. For example, I could put together a compendium of related blog posts, or even an online book like High Performance Browser Networking, turn that content into an ebook, and then save it to a reading app (like iBooks) that let me highlight and annotate passages of text. PDFs are problematic in this regard because each page is, essentially, an image. With an EPUB file, however, I get access to the raw words, which makes working with text much easier (like copy/paste, search, etc). It’s the web at its finest: raw content, accessible in my preferred format.

After the service was killed, I found myself every few weeks thinking, “gosh, I wish that service was still up. I really need to make a readlist out these handful of articles.” Sadly, however, I’ve been out of luck for years. I’m not the only one either. The top Google search result for “readlist” (at the time of this writing) is a reddit post titled “Is there any good alternative to readlists.com?”.

Screenshot of the top search result on Google for the word “readlist” (circa December 2020).

After about five years of constant inner complaining—“ugh, I wish Readlists was still around“—I finally asked myself: “well then why don’t you recreate it?” By that point, I’d had enough experience programming to be naive and dangerous. I figured it’d be a fun project because it was solely for me and not for anyone else.

So I blatantly stole the idea and the name, then made a web UI for creating readlists. It allows me to enter a collection of URLs, tweak their titles and ordering, then turn them into one big collection of words (currently it exports to a single HTML file or EPUB 3).

Screenshot of readlists.jim-nielsen.com with the book “Resilient Web Design” by Jeremy Keith

How It Works

In essence, a readlist is the data provided by the mercury-parser with a few extra readlist-specific data fields. That’s it.

In that spirit, a readlist is something you can create and own forever. It’s JSON data. When you create a readlist, it is saved locally to your browser (using localStorage). Want to save it more permanently? Export the readlist to a JSON file. Want to share it with a friend? Host that JSON file somewhere and give them the public URL, which they can then import using the web GUI on readlists.jim-nielsen.com.

In short, it falls to you to save and distribute (the URLs for) your readlists. Yes, that’s more work for you, but on the flip side, the data is yours forever. Do what you want with it. readlists.jim-nielsen.com is merely a GUI for creating these JSON readlists.

A Few Example Readlists

Below are two URLs for example readlist files created by my web GUI. You can copy/paste the URLs into readlists.jim-nielsen.com and a copy of that readlist will be created in your browser. From there, you can do what you want with it.

These are example books I’ve created for myself and thus host for myself:

A Few Technical Notes

This thing is not perfect, but it (mostly) gets the job done for me. I’ve created six or seven readlists with it now, fixing bugs along the way—there are undoubtedly more. This is definitely a “use at your own risk” kind of deal.

As noted, this is a web GUI for editing the readlist JSON file. If you prefer, you can always export the raw readlist JSON data, edit it in something like VSCode, and re-import it to the web client as a readlist. That gives you ultimate control over getting an EPUB that’s juuuuuuust right for you.

I could write a whole series of blog posts on how I built this—and I just might—but for now, here’s a simple bulleted list of a few details:

The site is hosted on Netlify and takes advantage of their rewrites/proxies capabilities. The source code is on Github. Feedback, comments, ideas are welcome.