This blog has been archived.
Visit my home page at

I installed BlockParty, and the only thing I can say is WOW

09/18/2015 update. Okay, Peace has been pulled. Guess I'll keep using it for a while, though.

09/17/2015 update. I'm now running Marco Arment's Peace, powered by Ghostery.

I just let out a load of complaints about iOS 9 beta last night, but apparently forgot about one nice thing: Safari content blocking.

In this day and age, not being iOS/OS X developers ourselves won't stop the rest of us from obtaining ObjC/Swift source code.1 I simply typed "Safari content blocker" into GitHub's search box, and there it popped, the most starred repo relevant to my search, krishkumar/BlockParty. Thanks to Apple's new sideloading policy in Xcode 7, I was able to immediately test it out on my phone.

The effect is just amazing. In my few minutes of browsing, I did not seem to encounter a single ad (on various consistently ad-laden news sites). You should definitely give it a shot. What's even more amazing is that BlockParty's blockList.json, at the time of writing, is only 1578 lines long — a JSON array with 197 objects. Only 197 rules, blocking 197 domains. Compare that to EasyList, which at the moment is a 48820 line monster. Of course, EasyList is much more fine-grained (as are AdBlockPlus's filtering mechanisms); with BlockParty I can actually see some blank boxes that used to host ads. But still, very impressive. Many thanks to @krishkumar for publishing BlockParty, and to Justin Searls for publishing a detailed tutorial.2

197 domains made our online lives so miserable. Hmm.

  1. Actually developing a Safari content blocker extension is as easy as writing a JSON blocker list, but I'm not sure if you need an app with a UI to support the extension. Anyway, there are professional iOS developers out there ready to share the code, so I'll just happily join for a ride.↩︎

  2. Without which I would have been scratching my head, not knowing that I had to go to Settings->General->Profiles to trust my personal profile.↩︎