The Best Way to Complain is to Make Things
The issue of Internet privacy is a challenging one. No one wants their every click and 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
- Collusion for Chrome
- Disconnect
- Facebook AdBlock
- Facebook Ads Remover
- HTTPS Everywhere
- IBA Opt-out (by Google)
- Keep My Opt-Outs
- Privacy Badger
- ScrewAds Plus for YouTube
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)
- ⌘ + shift + N (open new incognito window)
- ⌘ + V (paste URL from clipboard)
- enter (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. 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 add-ons.
A press of the “Download it!“ button and a few lines of JavaScript later, my issue was solved and I had written my first Chrome extension. All that was left was to follow Google's instructions on packaging and uploading, and a few minutes later, my work was live in the Chrome Web Store:
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.
Shoutouts
It goes without saying that I owe a huge thanks to Simon both for his inspiration and his suggestions.
Thanks also to Alex Wolkov, the developer behind the awesome Extensionizr. If ever you're writing a Chrome extension, this boilerplate generator will save you quite a lot of time.
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 Icons8.
Open In Incognito is available on the chrome web store here. The project's source code is available on GitHub.
Get in touch