Brian Donohue
Makin’ that Instapaper

Tappable Essays

In April 2012, Robin Sloan launched Fish in the App Store. The App is a “tap essay” about the transient nature of Internet content. The essay was broken into full-screen slides, and tapping on the screen would advance you to the next slide in the essay. The only catch was “there is no back button”…


Thirty on the thirtieth! Today is like any other, but I suppose it’s as good a day as any to reflect on the past ten years of my life and look forward to the next ten.

In the past ten years I…

Minimum Viable Team

In Product Engineering, one of the major charters is to evolve the product by building new features. It’s often the hope that a new feature will change usage patterns to unlock step function growth.

Building something that unlocks step function growth is extremely challenging, especially with respect to mature products, and only occurs at the intersection of strong execution and feature/market fit. The most recent example that comes to mind is Instagram Stories, which not only curbed competitor Snapchat’s growth, but accelerated Instagram’s YOY growth from 25% to ~40%…

Open Source: IPShortcut

It took a considerable amount of effort to support Smart Keyboard shortcuts for Instapaper 7.7. Given that most of the functionality is basic for keyboard-enabled computers and not specific to Instapaper, I decided to open source a library called IPShortcut to automatically enable this functionality on view controllers displaying UITableView, UICollectionView, or UIScrollView.

Most of the functionality supported is simple…

Medium to Jekyll Conversion Tool

This past weekend I was working on setting up a Jekyll blog and importing my Medium posts to it. The process was fairly tedious since you need to…

  1. Convert Medium posts to Markdown
  2. Download the images from the Medium post
  3. Replace the image URLs in the post to URLs on your Jekyll blog
  4. Strip extraneous information from the Medium posts (title, footer, etc)
  5. Add the Jekyll frontmatter to the markdown

In order to help with this process, I wrote a Medium to Jekyll conversion tool that automates this entire process:

python <path-to-Medium-posts-directory> <path-to-Jekyll-root-directory>

The script does the following…

Y Combinator Podcast: Operating Instapaper Through an Acquisition

First time talking publicly about coming into leadership position at Instapaper, the acquisition, the spinout, and running it independently.

Three-day no-meeting schedule for engineers

Note: This post originally appeared on Pinterest’s engineering blog

About 100 days ago, the Pinterest product engineering team began experimenting with a three-day no-meeting schedule for individual contributors on our teams…

Open Letter to the Stevens Committee on the Gianforte Academic Center

To the Committee Members considering the naming of the Gianforte Academic Center:

It is from a position of great concern that I write this letter to you. I was taken by surprise upon receiving President Farvardin’s email about the creation of this committee, as I was unaware that Greg Gianforte is not only a Stevens alumnus, but has made a $20 million dollar donation to the university to aid in the construction of a new academic building: the Gianforte Academic Center.

While I understand and appreciate the depth of Mr. Gianforte’s generosity toward the university, he has proven himself to be a man of a character unfit to have this building (or any other on campus) named in his honor. Furthermore, Mr. Gianforte’s conduct and worldview are wholly incompatible with the values of Stevens Institute of Technology. It is my firm belief that the Gianforte Academic Center, as named, would represent a blight on our history, campus, and institute of technology for the following reasons…

Instapaper Outage Cause & Recovery

The Instapaper service experienced an extended outage between Wednesday, February 9 at 12:30PM PT through Thursday, February 10 at 7:30pm PT. We brought the Instapaper service back up with limited access to archives as a short-term solution while we worked to restore the service completely. Today, February 14, we completed the full recovery of the service.

The critical system that failed was our MySQL database, which we run as a hosted solution on Amazon’s Relational Database Service (RDS). Here we’ll cover what went wrong, how we resolved the issue and what we’re doing to improve reliability moving forward…

Rebuilding Instapaper Search

TL;DR: What follows is a long (good Instapaper material), highly-technical post about re-building Instapaper’s full-text search feature. I’d recommend at least a rudimentary understanding of Amazon Web Services before continuing. If you’d like to read about the product launch, which should be friendly for everyone, you can read the blog post on the Instapaper blog.

I’ve been embarrassed about Instapaper’s full-text search for some time now…

Build your First Alexa Skill

Last night betaworks and Amazon hosted the first NYC Amazon Alexa Meetup to bring Alexa owners and enthusiasts together to build their first Alexa Skill. For the uninitiated, the Amazon Alexa service is the speech recognition and voice synthesis engine that powers the Echo, Dot, and Tap. The Alexa Skills Kit allows third-parties to create their own Alexa Skills that will then work with any Alexa-enabled devices…

Instapaper Tweetshots

In 72 hours…

It’s amazing how a (somewhat) slight product change can define a whole new set of behaviors. On October 29th 2013, Twitter launched inline image previews directly in the timeline, allowing users to view images without clicking through a link. In the one year since inline images launched, there has been a trend of sharing screenshots of text (usually from mobile devices) to Twitter, which allows the user to share specific parts of an article without exceeding the 140 character limit…

Hacking TestFlight Invites

Beta distribution on iOS has always been a pain in the ass. At the end of 2010, TestFlight launched a solution that made iOS beta distribution considerably less painful. TestFlight provided a platform that allowed developers to manage a set of beta testers, upload beta versions of their apps, distribute those betas to the testers, and manage feedback from beta testers. TestFlight was a godsend for iOS developers…

Bookmarklets are Dead

… we just don’t know it yet.

I first encountered the Content Security Policy HTTP header earlier this year when one of our users reported the Instapaper bookmarklet wasn’t working on GitHub. Triggering the bookmarklet, and inspecting element on the page revealed the problem…

Making Instapaper Free

Toward the end of January 2014, Andrew McLaughlin (CEO Digg & Instapaper), John Borthwick (CEO betaworks), and I had our first meeting since my promotion from lead iOS developer to General Manager of Instapaper to discuss the company’s roadmap. Since joining the Instapaper team in June 2013, I had advocated internally to eliminate Instapaper’s paid download and, instead, focus on adding value to the subscription. At the time, Instapaper’s subscription was priced at $1 per month, and the primary feature offered was full-text search.

Instapaper Fragmentions

When we built automatic sharing for Instapaper highlights, the team had several discussions about how to properly share a highlight link to another service. Here are two solutions we came up with:

  1. A page on Instapaper that showed the highlight, who shared it, and the original link to the article.
  2. A page on Instapaper that embedded the original article in a full screen iframe, highlighted the correct text, and scrolled to the highlight.

We knew neither of those solutions were great…

Instapaper Onboarding

The onboarding process for Instapaper is inherently complicated by the fact that the “Save to Instapaper” workflow is split across the mobile apps, desktop browsers, and third-party integrations. However, prior to the Betaworks acquisitions, Instapaper’s onboarding was still not the best experience it could be. For instance, this is what iOS users saw after logging in the first time:

There are some obvious problems with this approach…

Work as hard as everyone else

This was originally written for and posted on the Listserve 8/20/2012

Alpine Country Club 15th Hole, Looking backwards from the green

I worked as a caddie on a golf course during my teenage years. One morning I was working for Rappaport and Haas, two older gentleman that had retired and played golf together every morning. The three of us went through almost the entire round without saying more than a few words to one another. The silence was broken on the tee box of the 16th hole, a 180 yard par 3, while waiting for a group of ladies to finish up on the green. Haas said to me, “So Brian what are you studying in college?” as he swung his golf club lazily against the short grass. I replied, “Computer Science.” Then Haas asked, “What do you want to do with your degree in Computer Science?” I answered, “I’m not really sure, but I know I want to be independently wealthy so I can play golf like you guys.” Mr. Rappaport’s ears perked, he turned, pulled the cigar from his mouth, and interjected, “If you want to be successful it’s very simple: All you have to do is work as hard as everyone else, and then work harder.” And I stood there in silence for he taught me as one having authority, and not as the scribes.