Archive for April 18, 2022

Monday, April 18, 2022

NSPersistentCloudKitContainer in 2022

Steve Troughton-Smith:

For the longest time, Core Data had a very bad rap for iCloud syncing, so I just never engaged with it even after the APIs were improved. What is the story in 2022? Is Core Data + CloudKit in a good place, or nightmare fuel? What are the current pitfalls? …should I use it?

Becky Hansmeyer:

It’s been nightmare fuel for me, but maybe I just don’t have it set up right. I hear from users now and then who say that all of their data has been wiped out, and I have no idea what could have happened.

Roland Gropmair:

I tested it a bit, it seemed to work fine. But I never got it working with watchOS - no way to troubleshoot - and left it there

Antwan van Houdt:

For my specific use case it has been a nightmare to optimise the size of the data. My app generates many but small records and this doesn’t go well with CoreData + CloudKit. I created a binary format which reduces the amount of records that helps with this problem somewhat.

Davide Benini:

It’s quite reliable, a bit hard to set up and debug, but still much simpler than building your own sync system. You’ll need to follow Apple’s docs to set up sync and reconcile conflicts yourself, but it’s a logical process an quite mechanical.


It works quite good, but I think it is better to have your own sync code instead of using the Apple Blackbox sync implementation, then you will have more control on edge cases, and you can troubleshoot issues much more easier.

Binary Formations:

The built-in CloudKit mirroring stuff is too opaque for our needs.

Quentin Zervaas:

It is a really elegant solution that mostly works well, but in rolling out this update, we’ve come to learn a few things about it.


[Just] because an event finishes, doesn’t mean everything is in sync yet. You may experience many consecutive events of the same type all within a short timeframe.


If an error occurs, it will frequently give you a CKError, but these aren’t necessarily the same as when accessing CloudKit directly. For example, if you receive a CKError.Code.partialFailure, it’s not possible retrieve the errors that would normally be contained.


For errors that aren’t a CKError, I haven’t been able to find documentation for many of the errors that occur, but these are the ones I’ve discovered (I’m sure there are more).


There’s some quirky behaviour with Apple Watch, which can make it challenging to keep everything up-to-date between the Apple Watch and its linked iPhone.


Since NSPersistentCloudKitContainer uses transactions to keep the data in sync, it needs to propagate through every database changed one by one.


OWC miniStack STX

Other World Computing:

The miniStack STX now features Storage and Thunderbolt Xpansion, continuing its award-winning legacy as the best sidekick a Mac mini can have. Meet the world’s first Thunderbolt certified Thunderbolt 4 storage solution.

With a universal SATA HDD/SSD bay AND an NVMe M.2 PCIe SSD slot, you can expand your mini’s storage capacity to gigantic proportions. Three Thunderbolt (USB-C) ports enable you to connect to millions of Thunderbolt, USB, and future USB4 drives, displays, A/V mixers, cameras and tablets; as well as desktop accessories like a keyboard, card reader, or mouse.

That’s 3 Thunderbolt ports in addition to the one that goes back to the Mac. It’s $279 for the base configuration with no storage.


Update (2022-08-09): Josh Centers:

While OWC explicitly designed the miniStack STX for the Mac mini, it fits well enough underneath my iMac, and it could also serve as a charging and Time Machine dock for a Mac laptop with an external display.

Satechi Dual Vertical Laptop Stand

Satechi (via MacRumors):

Keep your workstation tidy and every device within reach with Satechi Dual Vertical Stand for laptops and tablets. The 2-in-1 design supports your Macbook and iPad vertically at the same time, improving your working efficiency.

I like the idea of this, but I wonder whether it blocks too much of the cooling around the Mac’s hinge.


Ben Thompson (Hacker News):

Last week OpenAI released DALL-E 2, which produces (or edits) images based on textual prompts; this Twitter thread from @BecomingCritter has a whole host of example output[…]


[C]reating games, particularly their art, is expensive, and the expense increases the more immersive the experience is. Social media, on the other hand, is cheap because it uses user-generated content, but that content is generally stuck on more basic mediums — text, pictures, and only recently video. Of course that content doesn’t necessarily need to be limited to your network — an algorithm can deliver anything on the network to any user.

What is fascinating about DALL-E is that it points to a future where these three trends can be combined. DALL-E, at the end of the day, is ultimately a product of human-generated content, just like its GPT-3 cousin. The latter, of course, is about text, while DALL-E is about images. Notice, though, that progression from text to images; it follows that machine learning-generated video is next. This will likely take several years, of course; video is a much more difficult problem, and responsive 3D environments more difficult yet, but this is a path the industry has trod before[…]


Machine learning generated content is just the next step beyond TikTok: instead of pulling content from anywhere on the network, GPT and DALL-E and other similar models generate new content from content, at zero marginal cost. This is how the economics of the metaverse will ultimately make sense: virtual worlds needs virtual content created at virtually zero cost, fully customizable to the individual.

Bram Adams (via Hacker News):

DALL·E is intuivitely understandable on an emotional level while simultaneously being quite unintuitive on a logical level.


Here are some things I’ve picked up so far that I think can help push the dialogue around DALL·E forward.


Update (2022-04-21): Mike Rundle:

When humanity has access to a machine that can render anything you can possibly think of, the creative side of art will be how to describe such an image in a way that connects to the soul of the AI and how it understands the world.

Update (2022-10-07): Matt Sephton:

Each have their pros/cons. In my usage DALL-E could render a Moai 🗿 exactly but had no idea any the style I was asking for, Midjourney gave a rough Moai but had exact style, Stable Diffusion gets both. Personally, I prefer the output of Midjourney

Former Employee Downloaded Cash App Account Info

SEC 8-K (via Hacker News):

On April 4, 2022, Block, Inc. (the “Company”) announced that it recently determined that a former employee downloaded certain reports of its subsidiary Cash App Investing LLC (“Cash App Investing”) on December 10, 2021 that contained some U.S. customer information. While this employee had regular access to these reports as part of their past job responsibilities, in this instance these reports were accessed without permission after their employment ended.

The information in the reports included full name and brokerage account number (this is the unique identification number associated with a customer’s stock activity on Cash App Investing), and for some customers also included brokerage portfolio value, brokerage portfolio holdings and/or stock trading activity for one trading day.


Cash App Investing is contacting approximately 8.2 million current and former customers to provide them with information about this incident and sharing resources with them to answer their questions.

Block is the new name for Square.