How We Built an Impossible App
by Brad Johnson, on Dec 2, 2015 4:58:00 PM
Why Privacy Watch is an App with Extraordinary Powers
This is an iceberg. Please check out SWIM on GitHub.
We have a dirty little secret here at SWIM: Privacy Watch is just the tip of the iceberg.
Maybe you noticed that you don’t need to refresh the Privacy Watch Chrome extension like you do a web page, Twitter feed or fantasy sports app. In fact, you’d be hard pressed to find apps that work in real-time without the user prompting a refresh. For the few you do find, a clever developer had to go through great lengths with timers and other mechanisms to automatically get a page to show fresh information.
We didn’t need to do that, here’s why:
Privacy Watch is sitting on top of something we built here that Apple, Google, Facebook and tech companies everywhere don’t have, a truly real-time application platform (more on that later). But developing an unbelievable piece of technology is only half the battle; we needed to prove it worked in order for anyone to believe us.
All our team members at SWIM have strong opinions about internet privacy and we saw an opportunity to accomplish multiple goals. By developing the consumer application that eventually became Privacy Watch, we could prove out our platform while promoting awareness about online tracking (and hopefully encouraging transparency by trackers). Because Privacy Watch and the data it generated was never part of our monetization strategy, we could offer it for free without compromising on what data we needed to collect. We’re proud to say that we don’t collect any information about Privacy Watch users and we never will.
What’s so special about SWIM?
I could write hundreds of blogs just about SWIM (and I probably will); the potential applications are countless. The platform was conceived on the notion that as applications have evolved, they’ve become increasingly reliant on the hodgepodge of databases and services that link them together. These nebulous (pun intended) clusters of components are commonly referred to as an app’s “backend”. The problem is that, frankly, backends are unsuited for the jobs they’re tasked with performing.
Databases and the services that have been built around them are frighteningly good at what they do: storing, sorting and retrieving information. They’ve become so good at this that developers have turned to database technologies to help them power the functionality of their apps. Unfortunately, databases were never intended for that kind of work. In order to circumvent this shortcoming, years of development effort has gone into what we’ve termed “The Duct Tape Problem”.
The Duct Tape Problem
Imagine you have a drinking glass with a crack in it. In order to prevent the glass from breaking further, you wrap it in duct tape. But because the duct tape starts falling off over time, you wrap it in another layer. Eventually you repeat the process until there’s no way the glass will break, but now it’s almost impossible to take a drink.
The Duct Tape Problem illustrates how developers have treated application backends. By chaining multiple databases, messaging systems, web servers and other components together, clever developers have been able architect complex solutions to their own app problems. But these solutions haven’t made for very good drinking glasses.
SWIM is a better drinking glass
When creating SWIM, we applied a First Principles approach (which has been around since Aristotle and championed by contemporary thought leaders like Elon Musk). First Principles basically means looking at a problem without making any assumptions. Doing this led us to an obvious conclusion: developers just want to make their apps work.
By ignoring existing technologies, we were able to build a platform specifically optimized for accomplishing tasks. Without getting into the mechanics of SWIM (another blog for another day), you can understand it like this: SWIM is a collection of hundreds of thousands of single-job applications in the cloud that communicate with each other as if they were all in the same place. It happens in real time, no database required. Which gets us back to Privacy Watch.
How does Privacy Watch use SWIM?
It looks like Privacy Watch is doing a lot of work on your computer, but that’s not actually the case. The Privacy Watch extension you see on your Chrome toolbar is simply a user interface that communicates with SWIM. When you arrive at a new web page, Privacy Watch sends the scripts for that page to SWIM to be parsed by cookie, script and ad services (every web page has their own set of services generated automatically). SWIM identifies which companies are responsible for any tracking on the site and prompts the UI to display the appropriate notifications and graphs.
This happens instantly because all computations occur in real time; the user often sees the notifications even before the page is finished loading. There are no refreshes, Privacy Watch is constantly updated by maintaining a persistent connection with SWIM at all times. SWIM extends the Privacy Watch application into the cloud, outsourcing all tasks that don’t make sense to accomplish locally.
Here’s how SWIM can help application developers:
In a perfect world, application developers would write custom code, deploy and manage their apps without needing to think about a backend. SWIM allows developers to build applications by simply writing their UI and linking their functional components through SWIM. Instead of contorting applications to fit the requirements of a backend, SWIM reflects the requirements of an app and evolves with it. Using SWIM, developers no longer need to fear adding features to their applications; unlike rigid backends that need to be reconfigured to accommodate minor changes, SWIM simply reconfigures itself.
Developers never have to worry about the location of individual functions, the platform handles logistics while enhancing the performance and responsiveness of the application. Because SWIM is entirely distributed, applications are no longer subject to scalability issues that currently hinder database-reliant applications. By eliminating those duct tape database components, SWIM eliminates performance bottlenecks entirely and frees developers to build apps as they should be, unobstructed.