Archive for August 14, 2015

Friday, August 14, 2015

Modern Web Ad Blocking

Charles Arthur:

Certainly as a standard reader, here’s what happened: I accepted an invitation to read an article, but I don’t think that we quite got things straight at the top of the page over the extent to which I’d be tracked, and how multiple ad networks would profile me, and suck up my data allowance, and interfere with the reading experience. Don’t I get any say in the last two, at least?

Jean-Louis Gassée (comments):

We come here to the crux of the matter: Trust.

We feel cheated and rightly so. As users, we understand that we’re not really entitled to free browsing; we pay our bills with our selves: When The Product Is Free, We Are the Product. The problem is that we feel betrayed when we find out we’ve been overpaying. We’re being exploited — and it’s not even done nicely.

Marco Arment (no surprise that he makes more from a popular podcast and blog than a free-to-$5 app, even though it’s best-of-class):

Because of how the web and web browsers work, the involuntary data collection starts if you simply follow a link. There’s no opportunity for disclosure, negotiation, or reconsideration. By following any link, you unwittingly opt into whatever the target site, and any number of embedded scripts from other sites and tracking networks, wants to collect, track, analyze, and sell about you.


I’ve never been tempted to run ad-blocking software before — I make most of my living from ads, as do many of my friends and colleagues, and I’ve always wanted to support the free media I consume. But in the last few years, possibly due to the dominance of low-quality ad networks and the increased share of mobile browsing (which is far less lucrative for ads, and more sensitive to ad intrusiveness, than PC browsing), web ad quality and tolerability have plummeted, and annoyance, abuse, misdirection, and tracking have skyrocketed.


I recently started using Ghostery on my computers, and a simple homemade iOS content blocker that I may release for iOS 9’s launch. The web performance improvements with these are staggering, and the reports of quite how much Ghostery is blocking on most pages is shocking and disgusting.

John Gruber:

I don’t want to block “ads”. I want to block garbage JavaScript. I’ve been using Ghostery on my Macs for a few months now, and the results are impressive. I expect the results to be even more significant on the phone with content blockers in iOS 9.

Nick Heer:

Vox Media’s privacy policy is typical of most larger publishers’ policies. It notes that they or third parties can set cookies, use pixel tags, and serve (targeted) advertisements. It’s only deep into the privacy policy that they link to a page where they list some of their third-party providers. However, it is woefully out of date; Vox lists 13 third-party scripts, but Ghostery counts 26, including those from Aggregate Knowledge (cross-device targeting), Criteo (retargeting), and Lotame (cross-platform visitor tracking). Gross.

Some publishers, like Bloomberg, do not list third-party scripts in their privacy policy. Ghostery found 14 third-party scripts on their homepage, of which 12 are for advertising or tracking purposes.

Ole Begemann:

I love how Apple has implemented the content blocking mechanism, maximizing performance and protecting my browsing history from the developer of the ad blocking extension itself.


Aren’t I actively harming my favorite web sites? To some extent, that’s probably true. Will it lead to a reduction of good content? Maybe, though anecdotally, the number and obtrusiveness of ads on a site doesn’t seem to be positively correlated with the quality of the content.

Nick Heer:

While Apple is adding content blocking to Safari on iOS, it doesn’t impact content shown in apps, meaning Facebook’s revenue seems much safer than Google’s. I anticipate the latter pushing their mobile app much more readily.

I wish there were a way I could directly pay sites like iMore and a few others to not show me their ads. They have some great content, so I always scan their RSS feeds, but I also always hesitate before clicking through because the page design is so reader-hostile. Unfortunately, I’ve read over and over that this idea doesn’t work. I don’t know what the solution is.

Previously: Safari Content Blocker and Web Advertising.

Update (2015-08-17): Wil Shipley reports a JavaScript alert ad at the Washington Post.

Google and Alphabet

Steven Levy:

Yes, we get it. Google is not a conventional company. Larry Page said so in the first letter to shareholders when the company went public in 2004. And in case we missed this, Page repeated the quote today when announcing that Google, as it existed before August 10, 2015, would thereafter be known as Alphabet. Most of the stuff we interact with from Google — search, ads, YouTube, Gmail, and Android — will be part of just one of several companies under the Alphabet umbrella. At least that company will retain the familiar name.

The other companies — including Google X, Fiber, Calico, Nest, Sidewalk, and Google Ventures — will be fully owned, but separate, each with its own CEO and finances.

Ben Thompson:

The same logic applies to all of Alphabet’s non-Google companies: none are likely to be monetized through advertising, or benefit from Google’s shared infrastructure and sales and marketing organization, so why should they be a part of the same company? It makes a great deal of sense to have different companies with different business models — that result in different incentives — as separate entities with clear accountabilities.


And so we’ve come full circle: Page may be abandoning day-to-day responsibilities at Google, but he has no intention of abandoning Google’s profits. Alphabet’s plan to report Google’s results on a standalone basis will likely reveal that the search-and-advertising company investors have bought stock in is, absent the financial blackhole of Google’s moonshots, doing even better than most suspected. Unfortunately for said investors the additional clarity will only serve to illuminate just how much money is not being returned to shareholders and is instead being spent by Page and Brin on what they think matters. Will investors trust Page to spend it wisely?

Ken Auletta:

The one theory that I think is closest to the truth is that Larry Page suffered from Sergey Brin envy. Page had turned into what he had always admonished Googlers not to become: a bureaucrat.


Most C.E.O.s who step down are pushed out, and then they prattle about wanting to spend more time with their families. Larry Page, by contrast, really does want to spend more time with Sergey Brin.

Liz Stinson and Margaret Rhodes (via John Gruber):

Given the confusion surrounding the announcement, Alphabet’s visual identity plays a vital role helping people understand the differences between the two companies. Whereas Google’s goofy logo reflected a not-quite-mature web, Alphabet’s rational, bright red wordmark signals a growing-up phase. If Google’s logo reflects a campus with multi-story slides and themed conference rooms, Alphabet’s says, “I have a lobby full of Knoll furniture.”

We asked designers and branding experts to make sense of the new wordmark. Their reactions spanned the congratulatory to the skeptical.

The Mac App Store, Paid Upgrades, and Trials

Dan Counsell (tweet, comments):

Software is the outlier. As I write this, I can’t think of any other business where the customer pays just once and receives free updates and improvements for life. But yet this is how the App Store has been setup for software developers. It’s simply not sustainable.


If the App Store never offers developers the options for paid upgrades, it will continue to encourage a culture of disposable one time apps. This is not good news for developers, Apple or our mutual customers.

Curtis Herbert:

A sales model based on upgrade pricing relies on convincing your users that the new version of your app is worth more of their money. As a developer you now have to hold features back. You need to create a big enough splash with each major update to convince existing users to hand over more money, and hope the temporarily increased press coverage will attract new users to look at your product.

Over time this is going to become more difficult as your existing versions are going to be become "good enough" for most of your customers. There is a limited quantity of awesome new features that everyone cares enough about to pay for.


Services and premium features, now those are things users understand.


Basing your revenue on a service instead of app sales has another benefit specific to the App Store. While the App Store Review Guidelines prohibit timed trials and demos for the app itself, they don’t prohibit timed trials on features that are normally part of and in-app purchase or subscription.

Wil Shipley:

I’ve already bought one Taylor Swift album I don’t understand why I should have to pay her more for her work since then.


The MAS actually penalizes you if you update an app which has a bunch of good reviews. Because after you publish a new update the average rating that is shown next to your app in the search results/category lists disappears until you get at least 5 new reviews for the current version.


My proposal is simple. When a developer creates “My great product 2.0” they do so as a new SKU, but can associate it as an upgrade of “My great product 1.0” in iTunes connect. When “My Great Product 2.0” is released, existing users will get notified of the availability of an upgrade. How? In the App Store app, the user will get a badge under updates. The updates section will include a row at the top labeled “Upgrades” below the "Purchased" item.

Milen Dzhumerov:

Unfortunately, I don’t think paid upgrades will ever happen - IMO, trials are even more important (not happening, either).

Sandro Pennisi:

Trials would solve so much and would make the AppStore more interesting for “pro” software.

Milen Dzhumerov:

Yup but won’t ever happen as total App Store revenue would decline massively - people won’t pay for crappy apps.

Sandro Pennisi:

True. But it would be a healthier App Store. Trials means you can charge more. I know it won’t happen. Sadly.

Milen Dzhumerov:

Agreed. But no exec can pitch declining rev given how much they boast about it each year at WWDC.

Sandro Pennisi:

Honestly, if you think about it it’s a joke to expect people to pay for software without being able to try first.

Milen Dzhumerov:

Yup, it’s an utter joke - like the stone ages. It’s unbelievable… but it’s not a technical problem, it’s policy.

See also: Feeder 3.0, The Lagging Mac App Store, and Accidental Tech Podcast #128.

Peak App Care

Kirby Turner:

Today I’m happy to announce Peak App Care. Peak App Care is a monthly subscription service for maintaining your iOS apps. What do I mean by that? Simply put, I monitor your app for crashes and fix them as quickly as possible. Not only that, I also perform small jobs such as bug fixes and enhancements to your app at your request, and I even manage the App Store for you, from updating screenshots to submitting new builds on your behalf.

What I have found is that many apps available today in the App Store are published by companies with zero iOS developers on staff. Those companies, instead, rely on freelancers and software shops to build their apps for them. The problem, however, is that often times there’s no plans to keep the app up to date after the initial release.

What happens when the app starts crashing or customers start reporting bugs? What happens when Apple releases a new version of iOS or a new device?

This is a serious problem. It will be interesting to see whether his fixed price for “Unlimited Fixes and Small Jobs” works.

Planes, “Planes”, and Automated Fare Pricing

Paul Kafasis:

United Airlines is apparently code-sharing with Amtrak’s passenger railroad service to get you to Philadelphia. They’re also referring to Philadelphia’s 30th Street Rail Station (that’s what ZFV stands for) as an airport. Do you think the conductor announces that train as “United flight 3174”? Man, I hope so.

But the wacky train-instead-of-plane isn’t even the half of it. Take a look at the first half of this itinerary, and compare it to the original search. It’s the exact same flight!

This type of airline pricing nonsense is not entirely uncommon. Opting for the lower fare and then getting off at Newark even has a name, “Hidden city ticketing”. Still, it’s not very often that you can save over $200 just by missing a train.

An Xcode Plug-in for Unsmoothed Text

Mike Ash:

Major trouble started when I got a retina display for my Mac Pro. I use it side by side with a normal non-retina display. Stuff that benefits from font smoothing, like web pages, e-mail, documentation, and cat pictures go on the retina display. Code goes on the regular display. However, the mere presence of the retina display made Xcode insist on font smoothing all over again, and the usual remedies were powerless.

I decided I’d have to get some code into Xcode and hack it from within. I thought about code injection using something like mach_inject or simply abusing lldb, but it turns out that Xcode has a built-in plugin mechanism that works well for this. It’s undocumented and not officially supported, but it’s not too hard to use.


The final and most annoying required key is DVTPlugInCompatibilityUUIDs. This is set to an array of strings. Each string is the UUID of an Xcode version that the plugin is compatible with. Each Xcode version has its own compatibility UUID. If your plugin doesn’t have the right UUID in its list, Xcode will refuse to load it.


Put this code in +load and our override now runs every time an NSTextView is drawn in Xcode.

What magic code goes in the override, though? With the surrounding code in place, it provides an excellent environment for experimentation. I tried CoreGraphics calls to disable font smoothing, I messed about with fonts, and various other things. I finally discovered that the magic incantation was to enable the use of screen fonts:

[[self layoutManager] setUsesScreenFonts: YES];

I’ve wanted something like this for a long time. Fortunately, NSTextView is not written in Swift, so it can be swizzled.

Student Loses Facebook Internship After Pointing Out Privacy Flaws

Allison Pohle:

Khanna, who detailed the experience in a case study published Tuesday in Technology Science, a journal published by Harvard University, told he created the app to show the consequences of unintentionally sharing data. That way, he said, users could decide for themselves whether or not it was a violation of their privacy.


Three days after the extension was posted, and two hours before he was supposed to leave to start his internship, Khanna received a call from a Facebook employee telling him that the company was rescinding his summer internship offer. Khanna said he was told that he violated the Facebook user agreement when he scraped the site for data.

However, Khanna told that the data was from his own messages, which meant he used information accessible to all Facebook users, not just to employees.