The issue of Internet privacy is a challenging one. No one wants their every click & page view tracked, catalogued and shared across countless databases of the thousands of advertising partners working to serve the most targeted marketing efforts that have ever existed. To guard against tracking and malvertising, I use quite a few Chrome extensions:
- uBlock [link]
- Collusion for Chrome [link]
- Disconnect [link]
- Facebook AdBlock [link]
- Facebook Ads Remover [link]
- HTTPS Everywhere [link]
- IBA Opt-out (by Google) [link]
- Keep My Opt-Outs [link]
- Privacy Badger [link]
- ScrewAds Plus for YouTube [link]
The issue with many of these extensions, however, is that they tend to be a touch overzealous about what they block webpages from serving. For the average user, this can be a regular nuisance; as a developer, it’s anathema to your workflow.
An Interim Resolution, Hardly a Solution
Unless explicitly specified in chrome://extensions/ via the “allow in incognito” option, extensions are, by default, disabled in Chrome’s incognito mode. As a result, a series of five key commands had become nothing short of a reflex action for me whenever it appeared as though content might be missing from a page:
- ? + L (highlight the current URL in the omnibar)
- ? + C (copy URL to clipboard)
- ? + ? + N (open new incognito window)
- ? + V (paste URL from clipboard)
- ? (load URL in incognito window)
As a developer and no stranger to the command line, I use keyboard commands and shortcuts whenever possible. Because of this, I had become pretty quick at performing the above sequence. But when you’ve clicked within a video or any such action that shifts keyboard focus from the browser to a plugin, the sequence can no longer be quickly performed.
Moreover, as a product designer, I knew I wanted a better user experience for this set of actions; specifically, I wanted a one-step process. As my desire for a solution mounted, so did the frequency with which I complained about this broken workflow to my colleagues.
Stop Critiquing, Start Creating
Recently, my wonderfully talented colleague and friend, Simon King, wrote a piece with the above title about an iOS app he created called News Now (which I use daily). In the article, he explains how his frustration with the irregular listening experience of the official NPR app led him to create News Now. He also includes a quote from LCD Soundsystem’s venerable frontman, which every designer should take on as a personal mantra:
“The best way to complain is to make things.” —James Murphy
With the above mantra in mind, along with a suggestion from Simon himself that I might explore a browser extension as a solution, I set out to solve my problem. A quick perusal of the developer documentation for Chrome extensions led me to chrome.window.create — a method that accepts an optional incognito parameter — and I knew I was good to go.
Next step: How to create an extension? My research immediately led me to the excellent Extensionizr, an open source boilerplate generator for Chrome extensions. Through helpful tooltips for each of the many options, I learned I needed a browser action, background.js event page, permissions to access the browser’s open tabs, and no options, overrides, content scripts, or addons.
A Happy Accident
As it turns out, opening a page in incognito mode initiates a new browser session in which you are logged out of every account. This enables you to quickly browse a site outside of your filter bubble and compare it to the page you see when logged in.
It goes without saying that I owe a huge thanks to Simon both for his inspiration and his suggestions.
In need of an icon for my extension, I turned to the excellent Noun Project. I knew I wanted to use a mask icon to visually reference Chrome’s incognito mode, and the Noun Project has no shortage of options. But when I saw Jason Voorhees of Friday the 13th franchise fame, the choice was an instant and obvious one. Jason comes from the amazing Faces of Evil icon collection by Icons8.