Archive for January 2, 2023

Monday, January 2, 2023

Help Compiler

Aaron Trickey:

I just open-sourced my Help Compiler, a self-contained command-line tool to build HTML help from simple plain-text source.


A Mac app’s user guide will frequently reference its main menu. HC has built-in syntax to look up a menu item by its action selector from a NIB file, validating it and extracting the correct menu path. This makes sure the HTML stays updated as when the menu tree changes.


Cross-linking is very simple. Every section gets an ID, which HC ensures is unique, and links reference those IDs, which HC validates and for which it generates the correct relative URL.


Despite all that, most of your text looks like Markdown. Check out the README for full documentation on syntax.


Your Memories, Their Cloud

Kashmir Hill:

If I were suddenly cut off from any of these services, the data loss would be professionally and personally devastating.


Some of my data landlords were more accommodating than others. Twitter, Facebook and Instagram offered Takeout-like tools, while Apple had a more complicated data transfer process that involved voluminous instructions and a USB cable.

The amount of data I eventually pulled down was staggering, including more than 30,000 photos, 2,000 videos, 22,000 tweets, 57,000 emails, 15,000 pages of old Google chats and 16,000 pages of Google searches going back to 2011.


The granularity of what was in my digital archive accentuated the parts of my life that were missing entirely: emails from college in a university-provided account that I hadn’t thought to migrate; photos and videos I took on an Android phone that I backed up to an external hard drive that has since disappeared; and stories I’d written in journalism school for publications that no longer exist.

Via Nick Heer:

Given enough time, I think all of us want to believe we could pare down our own digital stockpiles to just the files and photos that matter. But as I have thought about it more often, I have come to accept I will never be able to anticipate within my lifetime what is truly important in my data trove. Due to a botched iPhone backup from years ago, I am missing hundreds of photos I only later discovered were important and irreplaceable. As I tried to find those images on long-disused hard drives last year, I found images from family gatherings in decade-old Aperture libraries which took on an entirely new meaning when I rediscovered them.


My long overdue project for 2023 is to ensure I have local versions of everything in iCloud. After all, I cannot know what may be relevant years from now, but I can have control over my ability to access it.

I keep local copies of my photos, videos, e-mail, and of course documents in EagleFiler. (The photos are managed by Lightroom, which is configured to store its master images and metadata within an EagleFiler folder.) The larger folders are stored on external hard drives, which are backed up using Carbon Copy Cloner and SuperDuper. To protect against bit rot, I have a repeating OmniFocus reminder for asking EagleFiler to verify the checksums.

The main hole in my system is that it only includes my older iMessages, from before the Catalyst version of Messages. My newer text messages are locked up without a good way to access them. Yes, there are apps that can export them, but they only work with messages that are locally cached. Neither my phone nor my Mac has anywhere close to a complete set of my messages stored locally, despite having tens of GB of free space.


Google Changes Appeals Process for Suspected Child Abuse Images

Kashmir Hill (Mastodon, Hacker News):

Google refused to reconsider the decision in August, saying her YouTube account contained harmful content that might be illegal. It took her weeks to discover what had happened: Her 9-year-old eventually confessed that he had used an old smartphone of hers to upload a YouTube Short of himself dancing around naked.


Google has billions of users. Last year, it disabled more than 270,000 accounts for violating its rules against child sexual abuse material. In the first half of this year, it disabled more than it did in all of 2021.


It took four months for the mother in Colorado, who asked that her name not be used to protect her son’s privacy, to get her account back. Google reinstated it after The Times brought the case to the company’s attention. […] Google did not tell the woman that the account was active again.


Jason Scott, a digital archivist who wrote a memorably profane blog post in 2009 warning people not to trust the cloud, said companies should be legally obligated to give users their data, even when an account was closed for rule violations.

It remains to be seen how well the new process works.


Overcast Keeping Its Servers

Under the Radar:

Abandoning the CloudKit plan for Overcast in light of new information.

He’s still finding the CloudKit Web API to be unreliable. Also, a surprising 10% or so of the app’s users can’t use CloudKit, either because the phone isn’t signed into iCloud or because iCloud Drive is disabled.

The Web interface will stick around.


Our one big headache with CloudKit is that some users get into a weird ghost state, where iCloud is logged in but our app fails to connect - as if they aren’t logged in (while other stock apps like Notes keep on syncing). The only fix we can think of is to log out of iCloud and back in, but if the user accumulated any content since last sync it all goes poof.

Craig Hockenberry:

My advice to anyone who uses iCloud is to have a backup strategy in place before you deploy any features that depend on it.

It’s not a matter of if it will fail, but a matter of when. You will need those backups.

Tot, which uses NSUbiquitousKeyValueStore and an all-Apple iCloud stack, gets stuck in this state - our #1 support issue for customers.


Update (2023-04-22): Jeff Johnson:

Does CloudKit require iCloud Drive?

Curiously, it seems to be semi-documented here.