Archive for October 28, 2021

Thursday, October 28, 2021

Swift Concurrency for Older OS Versions

Xcode 13.2 Beta:

You can now use Swift Concurrency in applications that deploy to macOS 10.15, iOS 13, tvOS 13, and watchOS 6 or newer. This support includes async/await, actors, global actors, structured concurrency, and the task APIs.

See also: Swift concurrency back deployment. The memory corruption issues are apparently fixed, too.


Update (2021-10-29): John Sundell:

Although Swift 5.5’s new concurrency system is becoming backward compatible in Xcode 13.2, some of the built-in system APIs that make use of these new concurrency features are still only available on iOS 15, macOS Monterey, and the rest of Apple’s 2021 operating systems.


Thankfully, the above problem is something that we can fix ourselves, since Swift’s new concurrency system ships with a continuation mechanism that lets us retrofit existing code with async/await support.

Here’s how we could use that mechanism to replicate the above async/await-powered URLSession API in order to make it available all the way back to iOS 13[…]

Update (2021-12-16): Dimitri Bouniol:

Now that Swift’s concurrency system is backwards compatible with iOS 13/Catalina, here are a few packages you might want to check out!

Update (2022-01-31): Doug Gregor:

For folks using #SwiftLang concurrency on older Apple platforms, Xcode 13.3 beta addresses launch-time crashes reported on earlier OS versions (eg iOS 12, macOS 10.14).

Update (2022-04-27): Ole Begemann:

Boy, this back-deployment of Swift features is complicated.

tl;dr: Critical concurrency bug fixes that shipped in iOS 15.4/macOS 12.3 don’t magically make it into the concurrency runtime used on iOS 13/14.

Photoshop for the Web Public Beta

Google (Hacker News):

The idea of running software as complex as Photoshop directly in the browser would have been hard to imagine just a few years ago. However, by using various new standardized web technologies, Adobe has now brought a public beta of Photoshop to the web.


Adobe previously brought Spark and Lightroom to the web and had been interested in bringing Photoshop to the web for many years. However, they were blocked by the performance limitations of JavaScript, the absence of a good compile target for their code, and the lack of web capabilities. Read on to learn what Chrome built in the browser to solve these problems.


WebAssembly and its C++ toolchain Emscripten have been the key to unlocking Photoshop’s ability to come to the web, as it meant that Adobe would not have to start from scratch, but could leverage their existing Photoshop codebase. WebAssembly is a portable binary instruction set shipping in all browsers that was designed as a compilation target for programming languages. This means that applications such as Photoshop that are written in C++ can be ported directly to the web without requiring a rewrite in JavaScript.

John Gruber:

Unsurprisingly, supported only in Chrome and Microsoft Edge, but an impressive demonstration of just how rich a platform Chrome is for something like this.


Texas vs. Google Second Amended Complaint

Nick Heer (PDF, Hacker News):

Twelve U.S. Attorneys General, led by Texas’ Ken Paxton, amended their suit against Google with fewer redactions and plenty more allegations than first seen ten months ago.

Keach Hagey and Tripp Mickle (via Hacker News):

Google takes a cut of 22% to 42% of U.S. ad spending that goes through its systems, according to a newly unredacted lawsuit by state attorneys general, shedding new light on how the search giant profits from its commanding position in the internet economy.

The share the Alphabet Inc. subsidiary takes of each advertising transaction on its exchange—a marketplace for ad buyers and sellers—is typically two to four times as much as the fees charged by rival digital advertising exchanges, according to the suit, which is being led by Texas.

Thomas Claburn (Hacker News):

Header bidding emerged around 2015 as a way to bypass Google’s control of the ad auction ecosystem and the fees it charged. By 2016, the court filing explains, about 70 per cent of major publishers were using header bidding to offer their ad space to multiple ad exchanges at the same time, not just Google, to get the best deal from advertisers.

“Google quickly realized that this innovation substantially threatened its exchange’s ability to demand a very large – 19 to 22 percent – cut on all advertising transactions,” the revised complaint says. “Header bidding also undermined Google’s ability to trade on inside and non-public information from one side of the market to advantage itself on the other – a practice that in other markets would be considered insider trading or front running.”

Initially, the amended complaint says, Google appeared to accommodate publishers by allowing them to use its servers to send their ad space inventory to be sold on more than one exchange at a time.

Patrick McGee:

Google’s response - “secretly made its own exchange win, even when another exchange submitted a higher bid,” complaint alleges.

The program’s name: Jedi.

Google’s own words: Jedi program “generates suboptimal yields for publishers and serious risks of negative media coverage if exposed externally.”

fasterthanlime (Hacker News):

google appears to have a team called gTrade that is wholly dedicated to ad market manipulation

Google had a plan called “Project NERA” to turn the web into a walled garden they called “Not Owned But Operated”. A core component of this was the forced logins to the chrome browser you’ve probably experienced (surprise!)

Patrick McGee (Hacker News):

Facebook and Google allegedly agreed on quotas for how often Facebook would win publishers’s auctions -- “literally manipulating the auction with minimum spends and quotas for how often Facebook would bid and win,” complaint alleges.

John Gruber:

Re: false claims about AMP performance (p. 90):

After crippling AMP’s compatibility with header bidding, Google went to market falsely telling publishers that adopting AMP would enhance page load times. But Google employees knew that AMP only improves the “median of performance” and AMP pages can actually load slower than other publisher speed optimization techniques. In other words, the ostensible benefits of faster load times for a Google-cached AMP version of a webpage were not 90 true for publishers that designed their web pages for speed. Some publishers did not adopt AMP because they knew their pages actually loaded faster than AMP pages.

The speed benefits Google marketed were also at least partly a result of Google’s throttling. Google throttles the load time of non-AMP ads by giving them artificial one-second delays in order to give Google AMP a “nice comparative boost.” Throttling non-AMP ads slows down header bidding, which Google then uses to denigrate header bidding for being too slow. “Header Bidding can often increase latency of web pages and create security flaws when executed incorrectly,” Google falsely claimed. Internally, Google employees grappled with “how to [publicly] justify [Google] making something slower.”

Tom MacWright:

google… intentionally slowed down non-amp ads to give amp a “comparative boost”?

Laurie Voss:

I don’t think enough has been made of the discovery that Google’s funding of AMP was an explicitly anti-competitive move designed to limit competition from other ad exchanges and what enormous damage this does to Google’s credibility with developers:

Google pushed AMP into a privileged place in search results and said it was a pro-consumer move to make the web faster. Publishers implemented it to get higher placement and in the process locked themselves into Google’s ad exchange. That boosted Google revenue at their expense.


Google got good people inside and outside of Google to commit to developing and propagating AMP and to buy in to the vision of making the web faster. But now we know that even the people who worked on AMP at Google were in the dark about its real purpose.

Anil Dash:

For non-developers, it may be hard to understand why this is such a big betrayal. But the bottom line is it fundamentally undermines the trust that so many had in Google’s technical motives, especially seeing their own devs (and developer advocates) apparently got duped too.

Many of us were skeptical about this particular technology for various implementation reasons (the stated goal of making web pages load faster is pretty non-controversial) but had been willing to believe that the motivation wasn’t solely anticompetitive. That’s dead now.

Patrick McGee:

In 2015, Google signed agreement with WhatsApp to give users option of backing up their messages.

Users were led to believe they were encrypted. They were not.

Google knew users were mislead.

Leah Nylen (Hacker News):

Google sought to use an August 2019 meeting with fellow tech giants Apple, Facebook and Microsoft to stall federal efforts to strengthen a children’s online privacy law, attorneys general for Texas and other states alleged in newly unsealed court documents on Friday.

Google also bragged about “slowing down” new privacy rules in Europe that would apply to digital services like services such as WhatsApp, Facebook Messenger and Microsoft’s Skype, according to internal documents quoted by the states.


Update (2021-11-12): Sarah Gooding:

During an (AMA) live Q&A session with Chrome Leadership, ex-AMP Advisory Board member Jeremy Keith asked a question that echoes the sentiments of developers and publishers all over the world who are viewing Google’s leadership and initiatives with more skepticism:

Given the court proceedings against AMP, why should anyone trust FLOC or any other Google initiatives ostensibly focused on privacy?

The question drew a tepid response from Chrome leadership who avoided giving a straight answer.

The Facebook Papers

Isobel Asher Hamilton and Katie Canales (via Hacker News):

Seventeen US news organizations on Monday said they had reviewed leaked internal documents obtained by former Facebook employee-turned-whistleblower Frances Haugen.

Their reports on the documents span a wide variety of issues at the company, including its fading popularity with teens, its ability to counter hate speech, and its treatment of politicians.

David Pierce Anna Kramer:

Before it was The Facebook Papers, of course, it was The Facebook Files, a Wall Street Journal series that included the first looks at many of Haugen’s documents. (You can read the backstory of that name change, along with more details on the consortium of journalists that worked together on the Papers stories, from The New York Times.)

The stories started to publish last Friday night, but landed with a bang Monday morning and have been coming out ever since. Since they’re spread across lots of publications, we’ve rounded them all up in one place (in no particular order), to make them easier to find and read.

Nick Heer:

One thing I am trying to keep straight in my own head, as more reporting is published, is the source of different leaks. The Wall Street Journal’s “Facebook Files” series is primarily sourced to documents from Haugen, as are stories from other publications collected under the “Facebook Papers” banner. But a story on Friday from the Washington Post is sourced to a different whistleblower.

One thing that remains unclear is whether Haugen and her team supplied these documents to the other outlets, or if they received them from a third party.

Russell Brandom, Alex Heath, and Adi Robertson:

Facebook scrambled to address human trafficking content after Apple threatened to kick its apps off the iOS App Store, a leaked SEV (or Site Event) report shows. The report, referenced briefly by The Wall Street Journal’s Facebook Files reporting, indicates that Apple threatened to pull Facebook and Instagram from iOS on October 23rd of 2019.


The Wall Street Journal first revealed that news outlets and political parties had complained about users favoring negative and hyperbolic content. Facebook was considering ways to fix the problem, and one method involved re-weighting the News Feed to optimize for “civic health” instead of primarily focusing on meaningful social interactions or session time.


A highly publicized plan from early last year to hide like counts on Instagram never happened because testing the change hurt ad revenue and led to people using the app less.

Ellen Cushing:

But these documents show that the Facebook we have in the United States is actually the platform at its best. It’s the version made by people who speak our language and understand our customs, who take our civic problems seriously because those problems are theirs too. It’s the version that exists on a free internet, under a relatively stable government, in a wealthy democracy. It’s also the version to which Facebook dedicates the most moderation resources. Elsewhere, the documents show, things are different. In the most vulnerable parts of the world—places with limited internet access, where smaller user numbers mean bad actors have undue influence—the trade-offs and mistakes that Facebook makes can have deadly consequences.


Update (2023-12-11): Nick Heer:

Kim Zetter says on Twitter that Meta briefed journalists last week about this news — which was supposed to be revealed tomorrow — at approximately the same time Joan Donovan filed a complaint against Harvard. Donovan claims the school forced her out after she tried to make public documents leaked by Frances Haugen. Shortly thereafter, the Chan Zuckerberg initiative pledged $500 million to Harvard around the same time and, Donovan alleges, that in part led to her eventual dismissal.

Acquiring Kaleidoscope

Christopher Atlan:

When an app is transferred to a new owner, the historical revenue data is not transferred. And because it was only recently transferred from Black Pixel to Hypergiant, we had to look for other sources of data to find the trailing twelve months (TTM) revenue, which was needed to have an overview of the app’s financial performance.

We weren’t able to get all the Kaleidoscope graphic assets. And we had no way of looking up references to issues that were noted in the source code because bug reporting and customer support history were no longer available.


After reviewing the pros and cons of each option, we ultimately decided on taking out a loan from a bank. We were able to get a six-year term, which provides the freedom to try and make the app profitable. We have two years to try and make it work. If it doesn’t, the six-year timeframe makes monthly repayments manageable in a scenario where we’d have to downsize the team.