bthdonohue.com Open in urlscan Pro
185.199.109.153  Public Scan

URL: https://bthdonohue.com/
Submission: On May 28 via api from CN — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

Brian Donohue
Makin’ that Instapaper


BUILDING AN INCLUSIVE & DIVERSE TEAM

Jun 3, 2022

In 2020, our organization at Pinterest led the company in hiring from
underrepresented backgrounds. Pinterest had set engineering-wide hiring goals of
25% women and 8% underrepresented engineers. Our organization vastly exceeded
those goals, hiring 63% women and 25% underrepresented engineers in 2020H2.

Building an inclusive and diverse team requires dedication and active
participation at all leadership levels. We greatly exceeded the eng-wide goals
via a focus on inclusion, a diverse slate approach, ambitious goal setting, and
full team prioritization of inclusion & diversity.

I am sharing the factors that led to such success with the hope that it can be
replicated by other teams and organizations…

◆


ETHTIP: OPEN SOURCE PLUGIN FOR ETH TIPPING

Nov 14, 2021

Recently, I’ve been spending time exploring Ethereum/web3 with the goal of
trying to understand the technologies and opportunities. Having spent most of my
career building in web2, my entire concept of building has been based on
centralized systems. I’ve found that thinking about building in a decentralized
ecosystem is really foreign.

To learn more in a hands on way, I built a simple open source project called
ethTip which lets you add Ethereum tipping to a website with just five lines of
HTML.

◆


BUILDING FAST AND SLOW

Sep 18, 2020

When building products, there’s a tension between building something quickly
versus building something high quality. In order to build good products, it’s
important to balance velocity with quality. At certain phases it’s appropriate
to build it “quick and dirty”, in others it’s important to take time to create
polished, high quality experiences. I’ve seen a number of cases where people
struggle to create this balance, which produces low quality products. Here’s
when I think it’s good to build fast and slow…

◆


FIVE YEARS WITHOUT CIGARETTES

May 15, 2020

Five years ago today, I smoked my last cigarette. Previously, I smoked a pack a
day for ten years. Time for a bit of reflection on that. I always enjoyed this
quote from Choire Sicha on his article about stopping smoking:

> It’s like KonMari, except easy, because the only things you throw out are your
> cigarettes and your entire sense of self.

◆


MIGRATING FROM MAILGUN TO SES

Apr 17, 2020

While sheltered in place, I finally had the time to do something I’ve been
meaning to do for years: migrate Instapaper’s email service from Mailgun to
Amazon’s Simple Email Service (SES).

In 2018, Mailgun changed their email pricing from volume-based to tier-based
and, as a result, the cost of sending the Instapaper Weekly nearly doubled.
Shortly after the price change, we disabled the Weekly email while taking the
steps toward making Instapaper GDPR compliant, but it’s remained off because it
was prohibitively expensive to continue operating the email.

After a few weeks of work, we are almost entirely migrated onto SES. As a
result, we finally re-enabled the Weekly email after an almost 2 year hiatus! I
open sourced several tools we used for the integration, and I’ll share the steps
we took for the migration below…

◆


GETTING THE BIGGER ROLE

Mar 25, 2020

As a manager, I spend a lot of time with people discussing their career goals.
Ambitious people want to see forward movement in their careers, which most often
translates to “getting the bigger role”. That might mean promotion, becoming the
team tech lead, switching to management, or growing into a manager of managers.

In my career I’ve had success “getting the bigger role” in both a four person
startup and in an organization with thousands of employees. Luck and privilege
did play a significant role in that success, but the other most important factor
was that I was already “doing the bigger role” before getting it.

◆


APPIFICATION OF BROWSER EXTENSIONS

Dec 14, 2019



With Safari 13 launch in September 2019, Safari deprecated the old-style Safari
Extensions in favor of Safari App Extensions. The newer extensions are bundled
within a macOS app, and are closer in spirit to iOS app extensions then they are
to traditional browser extensions.

Before this change, Safari Browser Extensions were fairly similar in structure
to all modern browser extensions. More specifically, all modern browser
extensions are comprised of a “background script” and “content scripts”, with
communication between the two parts happening via messages over a
JavaScript-to-JavaScript bridge. The “background script” can access local
storage, extension settings, or a web service that interacts with the extension,
and the “content scripts” have access to all of the content on the webpages the
extension has access to.

With Safari App Extensions, the “background script” is now written in native
code, either Objective-C or Swift. There’s some implications here for browser
extension developers…

◆


CONVERTING LEGACY SAFARI EXTENSIONS

Dec 12, 2019

In the process of converting Instapaper’s Safari App Extension, I found Apple’s
documentation on Converting a Legacy Safari Extension to a Safari App Extension
to be pretty limited and unclear. Outside of the most simple of Safari
Extensions, there is no great upgrade or conversion path from the legacy
extensions to the new extensions. From the documentation:

> If you already have a Legacy Safari Extension and you want to convert it to a
> Safari App Extension, you’ll need to modify parts of it and completely rewrite
> others.

What’s missing from the documentation is what exactly you would need to modify
or completely rewrite, which I hope to outline a bit more clearly…

◆


DARK MODE FOR WEB

Oct 15, 2019

Since the launch of dark mode on iOS 13 and Android 10, I found myself wanting
dark mode for web. Dark mode is ideal for night time phone use, but it’s really
jarring to open a link in a dark mode app and be blinded by the white
backgrounds of the web.

Fortunately, Apple launched Dark Mode Support in WebKit in May of this year, and
most major browsers now support the prefers-color-scheme media query to
customize CSS for dark mode…

◆


ADVICE FOR SOFTWARE APPRENTICES

Sep 27, 2019

As the demand for software engineers continues to outpace the supply of Computer
Science graduates from four-year universities, opportunities have opened for
people from non-traditional software backgrounds to enter into the industry.

Coding bootcamp programs have opened across the country to help train people
interested in entering the software industry. These programs range from 3 months
to 1 year and focus on teaching software essentials to help their students
become software apprentices at tech companies, with the ultimate goal being to
convert into a full-time software engineer.

I’ve volunteered at several bootcamps in a variety of roles, including helping
with curriculum development, giving technical talks, and mentoring students. At
Pinterest I’ve also been on the industry-side of apprentice programs, managing
and mentoring apprentices who we have hired from bootcamps.

In the course of mentoring and managing apprentices, I’ve found some themes
around the challenges that apprentices face entering the industry, and I’m
offering this advice with the hope that it will be helpful to apprentices who I
won’t have the opportunity to work with directly…

◆


TAPPABLE ESSAYS

Apr 25, 2019



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

Jan 30, 2019

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

Jan 16, 2019

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

Dec 6, 2018

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

Nov 18, 2018

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 medium_to_jekyll.py <path-to-Medium-posts-directory> <path-to-Jekyll-root-directory>


The script does the following…

◆


Y COMBINATOR PODCAST: OPERATING INSTAPAPER THROUGH AN ACQUISITION

Nov 17, 2018



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

May 2, 2018

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

Jul 30, 2017

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

Feb 14, 2017

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

May 17, 2016

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

Apr 13, 2016


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

Mar 27, 2015

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

Jan 14, 2015



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

Oct 23, 2014

… 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

Oct 9, 2014



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

May 13, 2014

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

Jan 6, 2014

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

Jan 3, 2014

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.

◆
Home · About · Contact