I'm a huge fan of "read-later" apps like Instapaper and Pocket. But I'm not a fan of how they present you with little more beyond a list of links. Managing these lists can quickly feel like a burden. When using Instapaper, I find myself spending more time searching for something to read rather than actually reading.
What I want is an app that not only saves links, but also suggests what to read next. My ideal app would have the following features:
- Bubble up the sources that are most important to me.
- Categorize links by subject (e.g. "technology", "music", etc).
- Categorize links by type ("video", "podcast" etc).
- Highlight popular content. In the same vein, demote content as it becomes less relevant (For example, a news item about the current Republican race probably won't be relevant a year from now).
- Be aware of content length in order to show me shorter links when I have a few minutes to kill, or give me a longer article when I have more time.
In order to play around with some of these ideas, I wrote a proof-of-concept app myself. The app is hosted on App Engine and uses Pinboard as a backend. You can browse the source code, but its not hosted anywhere for others to play with. I'm definitely not looking to write yet another "read-later" app. My hope is that someday tools like Instapaper will incorporate features like this.
Here are some details on how the app works.
- Links are added via a bookmarklet. Only the link's url and title are saved. I'm not including the entire contents of the page, which is one of the features of the Instapaper bookmarklet.
- Once the link reaches the server, it passes through a series of filters for post-processing and categorization.
- Links are first categorized by type. If the link is a video (from YouTube or Vimeo), it is assigned the "to watch" tag. Links from GitHub are categorized as "to hack". Browsing a project on GitHub is a different experience from reading an article; I usually want to spend some time digging into the project's source code and running it locally. Everything else is categorized as "to read". I can also imagine more categories in the future, like books I want to read or movies I want to watch.
- High priority sites are tagged with the "c:priority" tag (The "c:" prefix denotes a category tag; I may drop the prefix in the future). This is the first tag I visit when I want to read something, and it ensures that I'm up-to-date with the sites I care about. Other categories include "c:news", for stuff like NY Times articles, and "c:tech" for tech-related sites. Eventually this categorization could be done by some semantic text analysis API like Alchemy.
- The source and referrer domains are included as tags, so I can easily browse links from a particular location.
- In addition to the bookmarklet, I've implemented post-by-email support. This is useful on mobile platforms where installing a bookmarklet isn't feasible.
- All this data is stored in Pinboard. You can see the results in my Pinboard account. I chose Pinboard because of its great tagging support. Tags are the glue that ties the app together. Since this is an experimental app, I like the flexibility that tags offer.
This code is still a work in progress, here are some features I'd like to add in the future:
- Improved browsing. Saving links is only half the story; the app also needs an easy and intuitive way to find content. I'm currently using Pinboard's web UI, but I envision building an interface that is context-aware and allows sorting along the many dimensions mentioned above. For example, browsing the "to watch" tag could present video thumbnails rather than a list of links.
- Better stats reporting. The downside of using Pinboard is that I'm constrained to Pinboard's data model. There are a few fields such as "date added" and "date read" that could be useful for reporting stats. Low reading stats, or a lot of links from one category that haven't been read, can signal an opportunity to improve the app.
- One of the nice features of Pinboard is that it shows you how many other people have saved the same link. This is kind of a proxy for how popular a link is. I wish Pinboard had the option to sort links by popularity; the API doesn't seem to have this option either.
At the end of the day, I want this app to do the heavy lifting of organizing links for me so I don't have to. This frees up my time to actually do some reading!