Archive for April 28, 2016

Thursday, April 28, 2016

WebKit Prefixing Policy

Edward O’Connor (comments):

Over time this strategy has turned out not to work so well. Many websites came to depend on prefixed properties. They often used every prefixed variant of a feature, which makes CSS less maintainable and JavaScript programs tricker to write. Sites frequently used just the prefixed version of a feature, which made it hard for browsers to drop support for the prefixed variant when adding support for the unprefixed, standard version. Ultimately, browsers felt pressured by compatibility concerns to implement each other’s prefixes.

The current consensus among browser implementors is that, on the whole, prefixed properties have hurt more than they’ve helped. So, WebKit’s new policy is to implement experimental features unprefixed, behind a runtime flag. Runtime flags allow us to continue to get experimental features into developers’ hands while avoiding the various problems vendor prefixes had. Runtime flags also make it easier for us to have different default settings between stable builds and preview builds such as Safari Technology Preview.

Amazon Kindle Unlimited Scammers

Brady Dale (via Bruce Schneier):

Amazon created Kindle Unlimited, a Netflix for books, that’s delivering indie authors revenue and readers. But it turns out that the way it works may have created an opportunity for scammers to steal earnings from real writers producing genuine works.


Kindle Unlimited authors get paid out of a pool of funds set up by Amazon each month ($14.9 million in March 2016). Their cut of that pool is determined by the number of pages a reader reads in their books, not by the number of books readers check out. Top performers get an extra boost of as much as $25,000 in one month for being a top ten author.

But, what if someone finds a way to trick Amazon into believing that “readers” have read thousands of pages, when in reality they haven’t read any?

Running UI Tests on iOS With Ludicrous Speed

Peter Steinberger:

We rely on busy waiting via creating a custom runloop - the condition is checked every x milliseconds and only once it returns true, the control flow continues. This might seem crude, but it’s a much, much better solution than adding random timeouts and allows us to run tests at an insane speed while also getting reliable results, even under heavy load. It’s somewhat similar to XCTestCase’s asynchronous testing extension waitForExpectationsWithTimeout:handler:, just faster and more flexible.

Now, the final puzzle is to simply increase the speed of Core Animation itself. And the best part: This is not even private API!

App Store Review Guidelines History

Shape (via Andy Bargh):

We refer to the App Store Review Guidelines all the time. It’s hard to spot the changes, so we made this site for ourselves and our clients.

They have summaries of the changes as well as diffs.