Archive for November 30, 2022

Wednesday, November 30, 2022

Recovery Options on Apple Silicon Macs

Howard Oakley:

When pressed briefly, it starts the Mac up in normal macOS mode; when pressed and held until the Mac reports that it’s loading Recovery Options, it engages Recovery mode, where you navigate startup and other options using buttons and menus. These invariably work fully with Apple’s wireless keyboards and mice/trackpads, so there’s no need to connect them with their charging leads.

There’s also a Fallback Recovery Mode engaged by pressing the Power button twice in rapid succession, and on the second press, instead of releasing the button, hold it pressed until recovery options are reported as loading. This provides all the features of regular Recovery Mode, with the exception of Startup Security Utility, which isn’t available.

Apple:

Follow these instructions if you need to pair a Bluetooth keyboard, trackpad, or mouse with your Mac when you start up in macOS Recovery.

[…]

When the system volume and the Options button appear, press the power button three times.

The procedure for rebooting in safe mode has also changed:

Turn on your Mac and continue to press and hold the power button until you see the startup options window.

Select your startup disk, then press and hold the Shift key while clicking “Continue in Safe Mode.”

I didn’t realize this and had just been holding down the Shift key like normal, but I guess that doesn’t clean out caches anymore, though it does suppress login items.

Previously:

SwiftUI Performance Gotchas

Alin Panaitiu (Hacker News):

[LazyHGrid] container is lazy so it takes more time get the view rendered because SwiftUI has to check if each row is visible before rendering it.

[…]

What looks unusual is the huge number of updates on my custom views. Some updates also take 5ms or more which when called on the main thread, will block any UI rendering and animations.

[…]

In the following example, I needed a way to highlight the selected day, but passing selected as @State wouldn’t propagate through the view graph. So I made it a binding, which caused all the DayViews to update when selecting another day (instead of just the two days that actually changed)[…] The solution I found for this was to turn the Binding back into a State and manually add an .id() to the DayView that factors in the selected property.

[…]

Two months later, after exhausting all the optimization possibilities, the app finally felt usable. […] I’m not entirely sure if there’s still a lot of performance left on the table for the SwiftUI engineers, but it kinda looks that way from my side. There are some places where the framework seems to be doing a lot of unnecessary work.

Previously:

New Social Media Platforms

Jamie Zawinski:

If posts in a social media app do not have URLs that can be linked to and viewed in an unauthenticated browser, or if there is no way to make a new post from a browser, then that program is not a part of the World Wide Web in any meaningful way.

[…]

Hive Social is exactly this app-only experience. […] Post Dot News also seems absolutely vile.

[…]

Mastodon is kind of a mess right now, and maybe it will not turn out to be what you or I are looking for. But to its credit, interoperability is at its core, rather than being something that the VCs will just take away when it no longer serves their growth or onboarding projections.

John Brayton:

A few days ago Phil Gyford launched ooh.directory, a collection of blogs with RSS feeds.

Craig Grannell:

But get over this hurdle and it turns out Mastodon is easy. Well, easyish.

Previously:

Epic v. Apple Appellate Hearing

Florian Mueller:

This is the DOJ’s motion, which already states very specifically what aspects of the case the Biden Administration will address (every single one of which weighs in favor of at least a partial reversal of the district court’s judgment).

[…]

One of the issues that the DOJ is also going to raise at the hearing is whether there can be an antitrust market for a product that is not sold separately--such as iOS, which Apple doesn’t license separately (the only way to get a license is to buy an iPhone or iPad). Regardless of Apple’s licensing practice, there obviously is a market for smartphone operating systems in which iOS competes with Android. Apple’s own lawyers surprisingly blundered as they conceded that fact. The smartphone OS market is the foremarket part of Epic’s proposed single-brand market definition. There is competition in that one, but not in the iOS app distribution and iOS in-app payment processing aftermarkets.

Juli Clover:

The ongoing legal battle between Apple and Epic Games resumed today, with lawyers for both companies meeting in the United States Court of Appeals to attempt to get the initial ruling from last year overturned.

Kyle Orland:

If the Mac App Store was the equivalent of a lap belt, the iOS App Store, with its costly human review system, is “a six-point racing harness,” Perry said. “It’s safer. They’re both safe, but it’s safer.” […] Those kinds of “pro-competitive” security features Apple offers with its App Store restrictions legally outweigh the “minor anti-competitive effects” iOS app developers face on the platform, Perry said.

[…]

By way of example, Goldstein brought up a potential Disney App Store on iOS that could provide even greater protections for families when it comes to potentially objectionable content. Competing iOS App Stores could also provide cheaper prices, Goldstein said, by competing on Apple’s 30 percent fees.

Blocking those kinds of alternative methods for app downloads creates a kind of circular definition of “product differentiation” for the iPhone, Goldstein said. He sardonically summed up Apple’s argument: “I have a better product. You know what makes my product better? That I have no competition! … You can’t block horizontal competition [among iOS App Stores] and then use as your excuse that I am now going to offer a product that is differentiated by the fact that it has no competition!”

Florian Mueller:

Circuit Judge Smith has a more systematic approach (as do I) and stressed that antitrust analysis begins with market definition, and everything depends on it. And just like me, he feels that if the appeals court reverses Judge Yvonne Gonzalez Rogers on that part, there should be a remand, though it appears that the Ninth Circuit is perfectly prepared to do more than the bare minimum and to provide further clarity and instructions. I, frankly, think Epic should be grateful for that. It’s nothing to be taken for granted; quite often, appellate judges are minimalists and just kick the ball back into the lower court. I understand why Epic’s counsel said that in this event, things would just take longer and they’d be meeting again in the same appeals court in two years from now. They don’t want it; they want a solution as quickly as possible, and maybe they’re uneasy about what the Supreme Court might do in the next step. But it would be incredibly beneficial if the appeals court resolved market definition, especially if one looks beyond just Epic’s case: there are so many App Store issues.

[…]

The problem with the district court’s rule-of-reason analysis is that it doesn’t really balance the anticompetitive effects of Apple’s App Store monopoly against the attempted procompetitive justifications.

Circuit Judge Smith asked how the court of appeal could analyze a rule-of-reason decision without any quantitative amounts. In my opinion, this also counsels for a remand.

Florian Mueller:

The most important question here is whether one considers the district court’s finding of Epic not having proved lock-in a legal or factual determination. Apple uses an overbroad definition of what is “factual” and accuses Epic of, conversely, describing actually factual determinations as legal conclusions. So let’s look at this part more closely because that’s what the appeals court is going to do in the months ahead.

[…]

In its reply brief, Epic then countered Apple’s suggestion that it was confusing customer satisfaction (voluntary) with lock-in (an unwanted consequence of a previous decision)[…]

Previously: