Archive for May 12, 2023

Friday, May 12, 2023

Apple Service Outages

Ben Lovejoy:

The number of Apple service outages lately seems to have risen to the point where they’ve become almost routine.


Let’s look just at Apple service outages and issues in the four-and-a-bit months of the year to date – and these are just the examples found by a quick search of our own site, which only reports the more widespread problems[…]


I can’t count the number of times I see tweets about Apple service outages, confirm them on DownDetector, and then check Apple’s system status page to see nothing but green lights.

I regularly encounter outages with App Store Connect, notarization, and Siri. I wouldn’t say that things have been getting worse, though.


Update (2023-05-19): Steve Troughton-Smith:

There seems to have been a huge uptick in Apple services outages over the past six months. Is AWS/Akamai no longer able to handle their scale? Has Apple tried to move things in-house and is finding out the hard way why that's so hard? Or has internet infrastructure in general just been under a huge amount of DDOS attacks lately?

All the above?


Update (2023-05-24): Filipe Espósito:

If you’re having issues with Apple’s iMessage on Tuesday, it’s not just you. The platform is currently down or partially not working for some users. While in some cases users can send text messages but not media, others have been complaining that iMessage is not working at all.

Update (2023-06-23): Adam Overholtzer:

I’m continuing to get several emails a day about #Cloudkit sync failing in my app, and now the 1-star reviews are starting to appear. No errors in logs or CloudKit console.

Is anyone else seeing a rise in CloudKit failures?

Jaanus Kase:

I have very few users, but I do hear that occasionally there are “iCloud outages.” Maybe all of us using CloudKit should do some kind of community effort to set up some monitoring to understand the problem better, since Apple’s own seems to be insufficient?

NSPredicate, Core Data, and NULL

Douglas Hill (via Peter Steinberger):

I’ve been implementing support for Apple Shortcuts in my reading app so users can create automated workflows. I noticed certain property-based article queries using EntityPropertyQuery weren’t returning the expected number of articles. I had fourteen articles saved on the iPad simulator. Four of these articles were written by me. However when I searched for articles where the author was not “Douglas Hill”, there were only two results instead of the expected ten.


I did some research online and second-hand sources supported my hypothesis. NULL is not considered equal or unequal to anything in SQL, or in other words, comparisons with null are neither true nor false.

It’s confusing because—unless you explicitly check for NULL—rows where NULL values would be used in a comparison don’t participate in matching. This break all sorts of intuition. For example, combining the matches for P and !P does not give you everything.

From a programmer’s point of view, I wouldn’t say either way to handle null is unequivocally better. However I’d expect consistency from NSPredicate. The surprising thing to me is that Core Data doesn’t smooth over this behaviour of SQL in order to match how comparisons usually work on Apple’s software stacks.

That might be confusing, too, though, and I’m not sure whether it would be possible in the general case, with more complex expressions. NULL also affects areas beyond comparisons. It’s just an unavoidable part of working with a database, which Core Data essentially is, despite Apple’s protestations.

What’s also weird, but not surprising when you think about it, is that NSPredicate is not only inconsistent when you use it directly vs. with Core Data but also within Core Data itself. One of the cool things about Core Data is that you can query all the objects in a context, including pending changes. But what this means is that the same Core Data fetch request can return different objects before and after saving, even if you didn’t change the context in between. It’s just that unsaved objects use the in-memory NSPredicate comparisons, whereas saved ones use SQL and its different handling of NULL.

LLM Coding Tools in Xcode

Kade Killary (via Hacker News):

Therefore, in this article I’ll cover how to catapult your productivity to the heavens via a series of command line wrapper functions around the OpenAI API.


I think the real differentiator in the coming months/years will be developer productivity. Good, bad or indifferent there seems to a be an unavoidable advantage to those who aggressively adopt workflows that lean into AI versus fighting, or ignoring, it. I think there is an oncoming paradigm of rapid prototyping combined with simulation that will help to isolate and test various components of a project. Additionally, the ability for translating languages and developer productivity in new languages.

Rob Jonson:

[Google Codey is available] through extensions in all major IDEs. Except of course xcode. Because Apple protected us from a rogue plugin by killing plugins.

(yes - technically extensions are still a thing, but they’re so limited they might as well not be)

Xcode source editor extensions are not at the same level, but there is one for Copilot. Christian Tietze:

Just yesterday, I used the Copilot Xcode plugin to write a lot of boilerplate for me. I can confirm it does its job.

I used it to help me write a unit test spy for an umbrella repository, or façade, that conforms to 5 protocols. In my human mind, there was rhythm and similarity, but code completion can’t help there.

And there are a variety of tools that give you a text box outside of Xcode:

Federico Viticci:

At a high level, S-GPT is a shortcut that lets you ask ChatGPT questions from an input box on your iPhone, iPad, or Mac; answers are returned by ChatGPT and displayed in an alert on your devices. You can ask whatever you want, wait a couple of seconds, and get a response back from the assistant. S-GPT only supports text, and there are no limits in terms of question length.

QuickGPT (Mastodon):

Easily access ChatGPT from the menu bar, Dock, or using a keyboard shortcut.

Joe Fabisevich (via John Gruber):

Short Circuit works on on your iPhone, iPad, and Mac. Now you can have a premium ChatGPT experience no matter where you are or what you’re doing.


Update (2023-05-29): Adam Wulf:

There are many tasks during my development day that take up significant time, not because they’re complicated, but because they’re tedious. With Developer Duck, these tasks are significantly faster. I use it for adding DocC comments, writing simple extensions, writing tests for those extensions, and even researching unfamiliar APIs.

More App Store Studies

Juli Clover:

Apple’s App Store policies may be violating Japanese antitrust law, according to a new report from the Japan Fair Trade Commission (FTC) that was shared by Nikkei. Japanese regulators do not believe there is enough “competitive pressure” on Apple and Google as the two companies have a duopoly in mobile operating systems and dominate the app market.


Japanese regulators want Apple and Google to allow users to choose third-party payment methods for apps and services, rather than forcing them to use the built-in purchase options in the App Store and Play Store.


The FTC suggested that app store commission rates between 15 and 30 percent could be an abuse of a dominant bargaining position.

Florian Mueller:

The JFTC makes a clear distinction between conduct that raises concerns under Japan’s Antimonopoly Act (AMA) and further observations and recommendations that may require new legislation in order to restore competition.

Potential violations of the AMA relate to “exclusion of competition through self-preferencing”, the unilateral imposition of “high commission rates” (app tax), and a concept that is increasingly relevant in Japan as well as South Korea, and possibly also in other East Asian jurisdictions: “abuse of a superior bargaining position”.


In its market study, the regulator correctly identified the problem that switching rates between mobile operating systems are low, and that Android apps don’t compete with iOS apps (and vice versa). Also, 97.4% of all Android app downloads in Japan are made from the Google Play Store, which shows that Google faces “[l]imited competitive pressure from other app stores.” Sideloading on iOS (which again is entirely impossible on iOS) also exerts “[l]imited competitive pressure” because users commonly download apps from app stores. Web apps are also dismissed as a competitive force as they just can’t compete with native apps[…]

Apple (MacRumors):

An independent study conducted by economists at Analysis Group found that small developers on the App Store grew their businesses and reached more customers around the world, even outpacing larger developers. With the support of a wide range of App Store tools and initiatives, small developers globally — defined as those earning up to $1 million a year and with fewer than 1 million annual downloads — grew revenue 71 percent between 2020 and 2022. In the U.S., those developers saw an above-average increase of 83 percent in earnings during the same period.

This is the same group that did the study last year, and again it’s “independent” but funded by Apple. The PDF is very short, only including summary statistics.

It sounds like they are saying that small developers in the US have increased their sales 83% in just two years, which is incredible but does not match what I am personally seeing or the general sentiment that I hear from other developers. So I tried to figure out what exactly the study is saying and what it really means:

I also thought this part was interesting:

In addition, while over half of all developers’ earnings in 2022 originated from games, small developers’ earnings came from apps across more diverse categories, such as entertainment, social networks and health and fitness apps, with games accounting only for about a quarter of small developers’ earnings.

Note that they switched to talking about developers who were small in 2022. It sounds like they’re trying to spin a success for small developers—look how many different ways there are for you to succeed. But this is exactly what you would expect to see given that there is a high level of inequality and that most revenue comes from games. You could also look at this as saying that it’s harder for small developers to be successful with games or that it’s hard to have a big hit that’s not a game.