Friday, December 20, 2024

Why Disney Stopped Subscriptions on the App Store

Ariel Michaeli (October 2024):

I see Disney’s choice of leaving the App Store as a long-term mistake that would cost them even more than the 30% they were giving Apple.

Ariel Michaeli:

Now that we have enough MRR data I think the reason is a bit clearer - and it isn’t just about fees.

[…]

In November, the first full month of no subscriptions, Disney+’s net revenue dropped by about $16M and Hulu’s by 28% - that’s double-digit millions in both cases - which means paying users are abandoning Disney at an alarming rate.

I think the reason Disney pulled out of subscriptions in the App Store is because they couldn’t figure out how to fight the churn which in turn necessitated getting fresh subscribers which isn’t easy.

Maybe I’m missing something, but this doesn’t make sense to me. First, the revenue reported is from both the App Store and Google Play; it would be helpful to see the Apple portion broken out. Second, why would leaving the App Store help with churn? I could maybe see that there’s more churn with App Store customers because Apple makes it easier to cancel. If you can get the same person to subscribe on the Web they might be more sticky. But, on the other hand, maybe it’s easier to sign them up with IAP. Easy come, easy go.

Without knowing the overall revenue picture, including direct-to-Disney revenue, I think it’s hard to conclude much. Of course, the App Store numbers are going down because every month there will be some cancellations with no new sign-ups. But we don’t know how many new and return subscribers there are or whether that would have been higher or lower with the App Store. Presumably, in the past there was a good stream of new App Store subscribers since the total was up over the year.

To me, the only thing this shows for sure is that the churn is very high, which suggests that lots of App Store subscribers were not staying long enough for Disney to go down from paying 30% to 15% in fees to Apple.

Previously:

Update (2024-12-20): Joe Rosensteel:

I have no data for this, but I continue to believe this is mostly about bundling in two ways: Bundles combat churn because people don’t want to start/stop parts of a bundle. Bundlers can also charge more for a bundle, which means higher fees. I think part of this will be explained when we see how much the “flagship” ESPN product will eventually cost.

The non-bundle DTC angle is that Disney can directly appeal to customers to rejoin for “relevant” shows. Can’t do that through Apple.

Provenance Rejected From the App Store

leazhito:

Around 4 hours ago developer posted that the app was once again rejected by Apple for weird reasons regarding adding games during testing.

They later posted that they submitted another appeal.

And shortly after this (see image) thread of two tweets mentions they have seemingly ran out of money due to Apple’s decision making and that unless the appeal works out, this “may be the end of Provenance for a while”.

Via Craig Grannell:

App review, as ever, is inconsistent. It still feels like Apple has it in for emulators, even if Consoles got approved (well, on one platform – last I saw, all non-iOS versions weren’t out despite the iOS one being live). What a mess.

Previously:

Apple Sued for Not Searching iCloud for CSAM

Ashley Belanger:

Thousands of victims have sued Apple over its alleged failure to detect and report illegal child pornography, also known as child sex abuse materials (CSAM).

The proposed class action comes after Apple scrapped a controversial CSAM-scanning tool last fall that was supposed to significantly reduce CSAM spreading in its products. Apple defended its decision to kill the tool after dozens of digital rights groups raised concerns that the government could seek to use the functionality to illegally surveil Apple users for other reasons. Apple also was concerned that bad actors could use the functionality to exploit its users and sought to protect innocent users from false content flags.

Child sex abuse survivors suing have accused Apple of using the cybersecurity defense to ignore the tech giant’s mandatory CSAM reporting duties. If they win over a jury, Apple could face more than $1.2 billion in penalties. And perhaps most notably for privacy advocates, Apple could also be forced to “identify, remove, and report CSAM on iCloud and implement policies, practices, and procedures to prevent continued dissemination of CSAM or child sex trafficking on Apple devices and services.” That could mean a court order to implement the controversial tool or an alternative that meets industry standards for mass-detecting CSAM.

[…]

To build the case, survivors’ lawyers dug through 80 cases where law enforcement found CSAM on Apple products, identifying a group of 2,680 survivors as potential class members.

Previously:

Swift Concurrency in Real Apps

Bryan Jones:

Consider this code, wherein we create a custom NSTableColumn that uses an image instead of a String as its header.

Holly Borla posted a fix that special-cases NSObject.init():

Now, overriding NSObject.init() within a @MainActor-isolated type is difficult-to-impossible, especially if you need to call an initializer from an intermediate superclass that is also @MainActor-isolated. Standard opt-out tools like MainActor.assumeIsolated cannot be applied to things like stored property initialization and super.init(), making the issue extremely difficult to work around. This is a major usability regression for programs that interoperate with Objective-C and make heavy use of @MainActor-isolated types.

[…]

I can’t reproduce a failure by overriding viewDidAppear in a @MainActor-isolated subclass of UIViewController, but if this is happening for methods that are marked as nonisolated or otherwise aren’t annotated with @MainActor, then that is a deliberate result of my original change. Overriding superclass methods and changing isolation does risk a data-race, which is why I made the original change. If you believe the superclass method is incorrectly annotated, that is a framework problem that you should report via Apple Feedback Assistant.

Matt Massicotte (Mastodon):

(As it turns out, UINib actually is MainActor-isolated, while NSNib is not. There’s one person out there somewhere maintaining a cross-platform app that uses nibs and this is going to make their life hell.)

The whole point of Nibs is to serialize UI components. That’s literally the only reason it exists. And that doesn’t work in Swift 6[…]

[…]

The compiler must honor the API contract of awakeFromNib. The framework maintainers have decided to not apply any isolation. The types and APIs aren’t able to fully describe the concurrent behavior, but the developer knows what’s actually going to happen at runtime.

This is a special-case of a very common issue and is exactly why dynamic isolation exists.

[…]

Some APIs, even really important ones that you use every day, just won’t ever work well with Swift concurrency. I’m certain some language changes could make things a little easier here and there. But, largely, these problematic APIs are going to be deprecated and replaced. It’s happening with Notifications right now.

Drew McCormack:

Pretty sure there are use cases for background threads. I think code for printing uses NSView, and usually involves a background op.

Der Teilweise:

TIL: awakeFromNib() can be called more than once when objects are loaded from XIBs.

IDK, maybe that is something that should be mentioned in the documentation.

Previously:

Thursday, December 19, 2024

Swift Prospective Vision: Accessors

John McCall (forum):

However, this approach has significant problems. The biggest is that the get accessor has to return an independent value. If the accessor is just returning a value stored in memory, which is very common for data structures, this means the value has to be copied.

[…]

This vision document lays out the design space of accessors for the next few years, as Swift continues to advance its support for non-Copyable and non-Escapable types. It explains Swift’s basic access model and how it may need to evolve. It explores what developers need from accessors in these advanced situations. Finally, it discusses different kinds of accessors, both existing and under consideration, and how they do or do not fit into the future of the language as we see it.

[…]

The yield accessor is the natural most-general model of a borrowing read access. It is a coroutine function which yields a borrowed value and can then do arbitrary finalization when resumed.

The borrow accessor is a specialization of that model which expresses that no finalization is required. It is an ordinary function that returns a borrowed value.

[…]

yield inout and mutate are both modification accessors.

[…]

unsafeAddress is functionally a borrowing read accessor. It is an ordinary function that returns an UnsafePointer<ValueType>.

Previously:

Delta Adds External Purchase Link in US

John Voorhees:

Delta, the MacStories Selects App of the Year, received an important update today that allows users of the game emulator to support its development via Patreon from inside the app. Existing patrons can connect their Patreon accounts from Delta’s settings, too, allowing them to access perks like alternative app icons and experimental features.

This is a big deal that goes beyond the new features for Delta supporters. According to the app’s developer, Riley Testut, Delta is the first app he’s aware of in the U.S. App Store to include an in-app link that allows users to make purchases outside the App Store using Apple’s External Purchase Link Entitlement that was introduced in January.

I guess this is progress, but now Delta is responsible for regularly sending Apple a commission and financial reports.

Previously:

SwiftUWhy

John Siracusa:

Welcome to my new series on things I don’t understand about Apple’s premier user interface framework.

[…]

To be clear, these are things I don’t understand, not necessarily things that are “wrong.” They sure look wrong (or at least “suboptimal”) to me! But maybe there are good reasons, and I just don’t know them yet. SwiftUI experts and historians, please tell me!

Previously:

Cascable Studio Rejected From the App Store

Daniel Kennett:

I’ve been shipping apps to the App Store for well over fifteen years now, and although there are App Review horror stories aplenty, I’ve always hoped I’d never be in a position to write one myself.

[…]

What you just scrolled past was the history of my (eventually successful) attempt to get the new Mac version of our app — Cascable Studio — approved for the Mac App Store. The entire process took nearly a month, and we had to push an emergency build through in the middle there with some features stripped out to get something approved for launch.

[…]

We’re at version 7.0 now, and the iOS version of this app has been on the App Store since 2015. Indeed, most of the app was fine — this ordeal was all about one particular feature.

A feature that’d already been approved and on the App Store since 2019 in a different app of ours.

[…]

Anyway, I must’ve explained what Apple Events are to three separate people throughout this process. This did eventually get to someone technical up at the appeals board, but nobody having any idea what an “Apple Event” is really cannot have helped.

App Review doesn’t like apps that integrate with other apps, which is one of the best things about the Mac.

Update (2024-12-20): Matthias Gansrigler:

If you’re wondering why there hasn’t been an update for @ScreenFloatApp recently…

#reviewhell #securitytheater

Previously:

Wednesday, December 18, 2024

Acorn 8

Gus Mueller (release notes):

“Select Subject”, “Mask Subject”, and “Remove Background” are new commands which use machine learning (or A.I. if you prefer) to find the most important parts of your image, and then perform their respective operations.

[…]

Acorn 8 now has an on canvas ruler which you can use to measure out distances, straighten your image with, or even redefine the DPI.

[…]

Acorn 8 has the ability to read in a CSV file and it’ll dynamically swap in the row values and replace text or bitmap graphics depending on what’s in the data file. It’s like mail merge, but for images. This is pretty awesome if you have a bunch of templated images you want to create.

[…]

OpenGL has been completely removed and Acorn is 100% Metal.

And there’s lots more, like the ability to export to JPEG XL. Acorn started 20 years ago and is still going strong. It remains one of my favorite apps.

Acorn’s still a one-time $29.99 purchase, but in lieu of upgrade pricing it’s temporarily $19.99 for everyone. The Mac App Store version is paid-up-front with a separate SKU for each major version.

See also: Dan Moren, John Gruber, Guy English.

Previously:

Update (2024-12-19): Corentin Cras-Méneur:

plus its fast! Like… fast. I really appreciate an app that doesn’t take 10 minutes to launch and then seems to be taking a pause every minute or so <cough>Photoshop</cough>. I use it all the time except for some very intricate and unique task manipulating individual channels.

John Gruber:

The rare sweet spot that Acorn hits is that it’s super-approachable to new and casual users, who just need an image editor sometimes, and super-powerful for power users who want to dig in.

Sequoia Fixes App Store Update Notifications

Adam Engst:

Starting in macOS 12 Monterey, clicking an update notification did nothing. Before that, it opened the App Store app, though only to the main screen, not the Updates screen. It was frustrating, and unnecessarily so.

In Sequoia, however, Apple finally made this notification work as it should. When a notification informs you that updates are available, you can click anywhere on the notification to open the Updates screen of the App Store app. Once there, you can click individual Update buttons or use Update All to download all the updates.

Next, please fix the iOS software update notification, where it looks like there’s no way to opt out of the update and that you can only decide when it will inevitably happen.

Previously:

Magic Mouse Rumors

Mike Wuerthele:

In a report on Sunday morning by Bloomberg, Apple is said to be prototyping new versions of the Magic Mouse internally. On the top of the list of changes, is a relocation of the charging port, and perhaps new ergonomics, but that point isn’t clear.

It’s not clear when a new design will arrive. The report says to not expect anything for at least a year, and maybe not for 18 months.

Joe Rossignol (tweet):

While no specific design details about the next Magic Mouse were shared, perhaps Apple will take some inspiration from popular alternatives for the Mac, like Logitech’s excellent MX Master 3S. That mouse features an ergonomic design with a thumb rest, a front-facing USB-C charging port, precision tracking, two scroll wheels, and more.

The overall look of the Magic Mouse has not changed much since 2009, so a redesign has been a long time coming. Notable changes over the years include the mouse switching from AA batteries to a built-in rechargeable battery in 2015, new color-matching options with the iMac in 2021, and the switch from Lightning to USB-C this year. Overall, the Magic Mouse has not received much attention from Apple over the past decade.

Christian Selig:

I really wish Apple would license out the cool Magic Mouse “gesture surface” tech to third-party mouse companies like Logitech. Apple’s never going to make a mouse as ergonomic as like, an MX Vertical, which is fine, but I really want that smooth scrolling!

Previously:

The Developers Who Came in From the Cold

Paul Kafasis:

In 2020, the disaster foreshadowed literally one sentence ago struck. Beta versions of MacOS 11 broke ACE, our then-current audio capture technology, and the damage looked permanent. When we spoke briefly to Apple during WWDC 2020, our appeals for assistance were flatly rejected.

[…]

With this in mind, we engaged in further discussions with the company throughout the MacOS 11 beta period. Those were much more fruitful than our initial conversation, and eventually yielded a two-part plan. First, ACE would be temporarily allowlisted, so its audio capture could continue to function for the near future. Second, Apple would work with us to develop a sanctioned method of capturing audio on the Mac.

[…]

Happily, we’re at the end of both this story and 2024. I’m delighted to say that we have completed our transition to ARK, and it now powers all of our audio capture apps on MacOS 14 and higher. Our glorious hassle-free future has finally arrived, and you can get started with our apps in under a minute.

As with Mail plug-ins, Apple initially kept the old functionality but added hurdles that made it much more difficult to install apps that used it. The audio situation started out worse because Apple summarily dropped the functionality in a macOS beta with no replacement. With Mail plug-ins, Apple announced a replacement API at WWDC two years in advance (though without specifying the transition date). But then the fortunes reversed, as audio got a longer transition period and, it seems, a new system that was both functional and reliable.

Mail extensions continue to be neither. The API is still woefully incomplete to do the sorts of things plug-in developers were doing, and what functionality there is mostly doesn’t work, in my experience. I ended up relying on multiple layers of alternative implementations to efficiently do what I need to do, and as these are separate from the Mail extension they still require additional security/privacy hurdles to set up.

Incidentally, none of this was necessary with SpamSieve 1.0 because the initial mail clients that it supported, Entourage and Mailsmith, had top-notch AppleScript and rules support and so could do everything that was needed without loading any third-party code.

Previously:

Tuesday, December 17, 2024

Issues Adopting Swift Testing

I’m in the process of migrating from XCTest to Swift Testing. The basic stuff is pretty easy to translate, and in many cases I don’t even need to change the code inside my test methods. I’ve long been writing what Swift Testing calls expectations in terms of my own helper functions such as eq(), unwrap(), and fail() instead of XCTAssertEqualObjects() and friends, XCTUnwrap(), and XCTFail(). This is more concise, and I have many overloads for eq() that provide more precise reporting. I can simply reimplement these helpers atop #expect(), #require(), and Issue.record().

Although Swift Testing supports structs, you can also use classes as suites of tests. So I can still use a common base class that provides standard functionality for all my tests. Each project has a subclass with its own test data and project-specific functionality, and sometimes I have more layers for groups of tests that have lots of common setup. It seems like this architecture will continue to work, and it’s much nicer with Swift Testing because I can do the setup in init() instead of having to override func setUpWithError(). With XCTest, I also always had to override func tearDownWithError() to clear out property values because otherwise they would still exist while the next test ran. Swift Testing, as far as I know, does not have this problem, so I can rely on deinit to clear out the properties automatically and only override it when I need to do more than that.

All this said, I have run into some issues where the migration is not as straightforward, and I discuss some of these below. I’m new at this, and of course I’m hoping that some of this stuff I’m just wrong about and that there’s actually a better way.

Floating Point Equality

Swift Testing doesn’t seem to have the equivalent of XCTAssertEqual(_:_:accuracy:). This is easy enough to work around but a curious omission. Maybe it’s waiting on language support for approximate equality.

Implicitly Unwrapped Optionals

The vision document criticizes XCTest’s “frequent need for implicitly-unwrapped optional (IUO) properties in test subclasses.” Swift Testing makes this a bit better in that you are initializing your properties in init() instead of in setUpWithError(), so you don’t have to worry about them all having values before your code is run. But this doesn’t really fix the problem when you are using a hierarchy of test classes to set up common state. I generally call super.setUpWithError() in the first line because setup of the subclass will depend on properties that were set up by the base class. But this is backwards from Swift’s initializer rules, where the subclass needs to initialize its properties before calling super.init()—and without using any helper member functions. So it seems like I still need IUOs or perhaps lazy properties, though those don’t work well with error handling.

Confirmations Don’t Work Like Expectations

With XCTest, I could create multiple expectations in the same test, tell it to wait for all of them, and it would run the run loop and make sure they were all fulfilled, even though the order might be undefined. For example, I have tests to prevent memory leaks where I add a bunch of objects that I expect to be deallocated by the end of the test. Each gets a separate expectation, and when it goes away it calls the corresponding fulfill() method. I also have tests that make sure a particular block of code results in a notification being posted. Swift Testing’s confirmations seem designed to handle the latter type of test but not the former. As far as I can tell, you can only await one confirmation at a time, so you have to knew the order in which they will be confirmed. It also doesn’t run the run loop while waiting. I can probably rewrite these tests without using confirmations, just spinning the run loop until all the objects are deallocated.

Parallel Tests in the Same Process

With XCTest, parallel tests run in separate processes, which means that each test has its own copy of global state and doesn’t really need to know that it’s running in parallel, unless you’re writing to UserDefaults or something. With Swift Testing, everything runs in one process, and you can opt out certain tests or suites using the .serialized trait. However, if you’re doing this because of global state you would need to apply it everywhere, which would be easy to forget (in that case, I might as well use --no-parallel) and would make things much slower. I don’t want that.

My tests use several different kinds of global state. Some classes have flags to make them behave differently for testing purposes, e.g. to refresh right away instead of asynchronously. Some classes have failure handlers that will log errors in production but should report them as test failures (using the appropriate framework) when testing—and sometimes they get overridden in testing when we are actually testing the failure reporting. And I have some functionality like getting the current Date that I swap out so that I can feed the tests certain known values.

With XCTest, these could all be just regular static properties. It’s not worth using dependency injection and passing stuff down many levels when these things only need to change during testing. With Swift Testing, the answer seems to be to use task-local properties so that each test gets its own independent copy. But this is easier said than done.

The first issue is that I’m deploying my apps on versions of macOS that don’t support Swift Concurrency. It seems like I should be able to do something like:

#if TEST
@TaskLocal
@available(macOS 10.15, *)
#endif
static var flag = true

to use Swift Concurrency only during testing, but I still ran into some compiler errors. Xcode seems to not figure out that the test target has a higher deployment target and that when compiling for testing it’s set to use the Test scheme, which sets TEST. I’ve long had problems like this with Swift and conditional compilation. Maybe there’s a way to work around it, but I haven’t looked into it much yet because there’s a larger issue.

I don’t know how to concisely set the task-local values when setting up my tests. With XCTest, I would just assign to the properties in setUpWithError(). This is not possible with Swift Testing because @TaskLocal doesn’t work with assignment statements. It’s structured, so you are supposed to give it a closure:

Class.$flag.withValue(false) {
    // Do test stuff
}

I want to do this once per test class, usually just inheriting the value from the base class. I don’t want to have to do it in every test method. With XCTest, there is a hook so I could do something like:

override func invokeTest() {
    Class.$flag.withValue(false) {
        super.invokeTest()
    }
}

but as far as I know there is no way to do this with Swift Testing. Maybe it will eventually be possible through custom execution traits, though that seems a bit awkward for this purpose.

Previously:

Monday, December 16, 2024

Take Control of Apple Media Apps

Take Control (via Kirk McElhearn):

Back in 2019, Apple replaced iTunes for Mac, iOS, and iPadOS with three apps—Music, TV, and Podcasts—with audiobooks handled by the Books app. Take Control of Apple Media Apps is your guide to this post-iTunes world. Covers macOS 15 Sequoia, iOS 18, and iPadOS 18 or later, plus Apple Watch, Apple TV, and HomePod.

Expanding on his earlier title Take Control of macOS Media Apps, Kirk McElhearn shows you how to manage your music, videos, podcasts, and audiobooks on all your Apple devices. Whether you just want to play your media, or you want to go deeper with special features like Apple Music, Genius, Shuffle, Playing Next, and iTunes Match, this comprehensive guide has the answers you need.

Kirk also looks at various ways of bringing audio and video into Apple’s media apps, tagging music and videos so you can find them more easily later, creating playlists, sharing your library over a home network, and accessing your media libraries on your iPhone, iPad, Apple Watch, Apple TV, or HomePod.

Apple started with a simple app, iTunes. You ripped CDs or bought songs on your Mac and synced them to your iPod. But now there are multiple media apps, devices, cloud services, formats, and rating systems. There are subscriptions, streaming, Siri, AirPlay, and families. I can think of no one better than McElhearn to make sense of it all.

Previously:

Forked

Drew McCormack (Mastodon):

I’m launching a new Swift framework called Forked for working with shared data, both on a single device, and across many.

[…]

The merging that @ForkedModel provides is pretty powerful. It does property-wise merging of structs, and if you attach the @Merged attribute, you can add your own custom merging logic, or use the advanced algorithms built in (like CRDTs).

To give an example, the notes property above is a String. With @Merged applied, it gets a hidden power — it can resolve conflicts in a more natural way. Rather than discarding one set of changes, or merging to give somewhat arbitrary results, it produces a result a person would likely expect. For example, if we begin with the text “pretty cool”, and change the text to “Pretty Cool” on one device, and to “pretty cool!!!” on another, the merged result result will be “Pretty Cool!!!”. Nuff said.

And this works within your app’s process, between processes (eg with sharing extensions), and even between devices via iCloud.

See also:

Previously:

Gemini 2.0

David Pierce (Slashdot):

Google is releasing Gemini 2.0 on Wednesday, about 10 months after the company first launched 1.5. It’s still in what Google calls an “experimental preview,” and only one version of the model — the smaller, lower-end 2.0 Flash — is being released. But Hassabis says it’s still a big day.

“Effectively,” Hassabis says, “it’s as good as the current Pro model is. So you can think of it as one whole tier better, for the same cost efficiency and performance efficiency and speed. We’re really happy with that.” And not only is it better at doing the old things Gemini could do but it can also do new things. Gemini 2.0 can now natively generate audio and images, and it brings new multimodal capabilities that Hassabis says lay the groundwork for the next big thing in AI: agents.

[…]

Google is also launching Project Mariner, an experimental new Chrome extension that can quite literally use your web browser for you. There’s also Jules, an agent specifically for helping developers find and fix bad code, and a new Gemini 2.0-based agent that can look at your screen and help you better play video games. Hassabis calls the game agent “an Easter egg” but also points to it as the sort of thing a truly multimodal, built-in model can do for you.

Matt Birchler:

The basic idea of this seems to be that you ask Gemini a question about a topic, ideally something complex with several things you want to know, and it will go out and read a bunch of websites to generate a Google Doc with all if its findings. It takes a few minutes to do this, so you can even close the browser tab and come back when it’s done, but once it does, it creates a pretty decent “executive summary” of the topic at hand.

[…]

I mentioned at the start that I prefer ChatGPT and Claude to Gemini, and I’m pretty confident that preference still stands even with these updates. I think Cluade is a very good coding assistant and its web UI is so much better than anyone else at letting me play with the generated code as I iterate on it.

Mike Rockwell:

If you watch a handful of videos showing how to troubleshoot a plumbing issue, for example, YouTube will start showing recommendations for other plumbing-related videos.

But you haven’t suddenly become a plumbing enthusiast. You needed to fix a single problem and, once you’re done, that’s it.

Previously:

Update (2024-12-20): Jeff Dean:

Introducing Gemini 2.0 Flash Thinking, an experimental model that explicitly shows its thoughts.

macOS 15.2 Breaks Bootable Backups

Dave Nanian (Mastodon, 2, Hacker News):

Apple broke the replicator. Towards the end of replicating the Data volume, seemingly when it’s about to copy either Preboot or Recovery, it fails with a Resource Busy error.

In the past, Resource Busy could be worked around by ensuring the system was kept awake. But this new bug means, on most systems, there’s no fix. It just fails.

[…]

Since Apple took away the ability for 3rd parties (eg, us) to copy the OS, and took on the responsibility themselves, it’s been up to them to ensure this functionality continues to work. And in that, they’ve failed in macOS 15.2.

I wonder if this is related to the problems I’ve been having since Sequoia where I can’t cleanly eject drives, e.g. after making a non-bootable backup. Finder will show a spinner for a while and then offer to let me Force Eject even though Sloth and other tools show no open files.

Bri:

It pains me to see the authors of good software like SuperDuper! just having throw up their hands and say there’s nothing that can be done, because Apple broke our shit and there’s no way to work around it since they intentionally locked down the system and made it impossible for us, the users, to do what we want.

Remember when copying a system was as simple as just copying the System Folder to another drive? How far we’ve fallen.

Previously:

Update (2024-12-18): Adam Engst:

I haven’t seen any comments about how this affects Carbon Copy Cloner or ChronoSync, but if the problem is in Apple’s asr (Apple Software Restore) tool, those apps would likely be similarly affected.

See also: MacRumors.

Dave Nanian:

Unfortunately, the first Developer Beta of macOS 15.3 does not fix Apple’s replicator problem, which still fails with “Resource Busy” at the end of its operation.

For Apple folks, again, this is FB16090831. It seems to only affect Apple silicon Macs.

Update (2024-12-19): I continue to see reports of Time Machine problems with macOS 15.2, but these seem to be separate issues, perhaps related to SIP rather than ASR.

Bombich Software (via Adam Engst):

Copying Apple’s system is an Apple-proprietary endeavor; we can only offer “best effort” support for making an external bootable device on macOS. We present this functionality in support of making ad hoc bootable copies of the system that you will use immediately (e.g. when migrating to a different disk on an Intel Mac, or for testing purposes), but we do not support nor recommend making bootable copies of the system as part of a backup strategy.

See also: John Gruber (Mastodon), Reddit, Apple Discussions.

Mike Bombich:

While some developers seem surprised by a change in macOS 15.2, we’ve known for several years that making bootable backups would eventually become impossible.

[…]

Participating in that (Dec 2, 2020) conference call was the APFS team lead, someone from Developer Technical Support, and to my surprise, Apple’s Director of Product Marketing. When I joined the call I was prepared for a technical discussion of what was broken in ASR and whether Apple would be able to fix those issues and make it reliable enough for a commercial backup solution. The call didn’t quite go in that direction. The Marketing Director kicked off the call by asking:

So how would it look if someday in the future you simply couldn’t make a copy of the System at all?

He (and the more technical folks on the call) went on to explain why only ASR could be allowed to copy the system, and that they were committed to addressing any problems with it as long as it did not require making a compromise to platform security. Platform security is a top priority at Apple, and one of the keys to that security is a Secure Boot environment — without compromise. Allowing system files to be copied introduces an opportunity for attackers to modify key system components. Some of this can be mitigated by only allowing Apple’s ASR utility to make the copy, but there are still inherent opportunities to inject changes when copying system files.

There’s nothing like documenting changes in strategy through private conference calls. Now we are in a weird situation where ASR was included in Sequoia but no longer works, and we don’t know whether Apple intends to fix it.

Also, I don’t think this is a good security tradeoff. I don’t understand exactly what the threat is. Who is going to modify the encrypted clone drive that’s sitting in my office and force me to boot from it? (If they can do that, I have much bigger problems.) What could be modified without detection given that the system volume is signed? The problem with Migration Assistant is that it takes a long time. With a bootable clone, I can be back up and running in a minute or two. And this would just be a stopgap: I would eventually migrate back to the internal storage so the security risk would only be temporary.

Friday, December 13, 2024

Xcode 16.2

Apple (downloads):

The Command Line Tools package now supports using the swift test command to build and run package tests written with Swift Testing.

[…]

Sometimes running parallel Tests on macOS run destinations never finishes.

[…]

macOS projects that use hardened runtime but no sandboxing may run into timeout errors when attempting to preview if the project is complex enough.

[…]

Simulator process launch may stall for around 3-5 minutes per runtime as GateKeeper scans the simulator dyld shared cache.

[…]

Memory leaks can occur when calling async functions bridged from Objective-C and building in the Swift 6 language mode.

Workaround: Pass -checked-async-objc-bridging=off to the Swift compiler using “Other Swift Flags” in Xcode build settings.

Paul Hudson:

“Swift Assist is coming later this year,” said Apple in June. It’s now December [11th], so that means we’re only a few weeks from seeing it in action – Xcode 16.3 beta 1, presumably?

Previously:

iOS 18.2 and iPadOS 18.2

Juli Clover (iOS/iPadOS release notes, security, no enterprise, no developer):

iOS 18.2 and iPadOS 18.2 introduce new Apple Intelligence features, including the first image generation capabilities. Image Playground is a new app for creating images based on text descriptions, and you can add all kinds of costumes, items, backgrounds and more. You can even make your images look like your friends and family members.

Genmoji is similar to Image Playground , but it’s for creating custom emoji characters that you can use in Messages. The third image generation feature is Image Wand, which is Image Playground but in the Notes app. You can make a rough sketch and use Apple Intelligence to make it better. The update includes ChatGPT integration for Siri, so Siri can hand complicated requests over to OpenAI’s ChatGPT. For iPhone 16 users, the update adds Visual Intelligence to the Camera Control feature, so you can get more information on items and locations around you.

Juli Clover:

This guide highlights everything that’s new in iOS 18.2.

Niléane Dorffer:

But besides another batch of Apple Intelligence features, this release also includes a series of changes to the system, from updates to Safari, Find My, and Photos to the arrival of new system-wide settings for Default Apps and more. Here’s a roundup of everything new besides Apple Intelligence in iOS and iPadOS 18.2.

[…]

In addition to the new backgrounds, Safari now supports linking to text highlights on web pages. The idea here is that you can select text on any web page, tap ‘Copy Link with Highlight’, and share the copied link so that anyone opening it will immediately be shown the specific text you highlighted in yellow on that web page.

[…]

Apple has finally re-added the ability to swipe right to go back pretty much anywhere in the Photos app, including when you’re several levels deep into an album folder. It’s hard to know whether it was a bug or if Apple was being intentional about not implementing the gesture in certain places in the app before, but I’m glad to report that it is now consistently available.

[…]

Return of the volume slider on the Lock Screen.

Previously:

Update (2024-12-16): Tim Hardwick:

In iOS 18.2, Apple has introduced a thoughtful new feature for the Camera Control button on iPhone 16 models that helps prevent accidental camera launches by requiring the screen to be on before the button will register clicks.

Tim Hardwick:

Apple in iOS 18.2 has reinstated a Lock Screen feature that was unceremoniously nixed from its iPhone OS two years ago, leaving many users wondering why it was taken away in the first place.

tvOS 18.2

Juli Clover (release notes, security, developer):

tvOS 18.2 adds a selection of new Snoopy screen savers that are available as an alternative to the aerial, memory, and portrait screen saver options, plus it includes natural language search support for Siri for looking for movies, music, and TV shows.

The update also includes an option that lets the Apple TV automatically detect the best aspect ratio for a television or projector, along with new aspect ratios for projectors.

Previously:

watchOS 11.2

Juli Clover (no release notes, security, developer):

According to Apple’s release notes, watchOS 11.2 lets you pause video that you’re recording on the iPhone using the Camera Remote app on Apple Watch.

Previously:

visionOS 2.2

Juli Clover (release notes, developer, security, enterprise):

visionOS 2.2 adds new wide and ultrawide aspect ratios to the Mac Virtual Display feature, so you can have more workspace when using the Vision Pro as a display for your Mac. Apple says that the ultrawide setting is the equivalent of two 5K monitors side by side.

Previously:

audioOS 18.2

Apple:

  • Siri on HomePod is now integrated with Apple Music natural language search so you can describe what you want to hear using any combination of categories like genre, mood, decade or activity.
  • Enhance Dialogue on HomePod (2nd generation) when paired with Apple TV 4K gives you the option to hear speech more clearly over background sounds using real-time audio processing and machine learning.

Previously:

Update (2024-12-16): Michael Simon:

While not quite Apple Intelligence, the feature is definitely Apple Intelligence adjacent and will make it easier to play and discover new music. HomePod should now be able to play music with vague prompts when you don’t know the specific song you want to hear.

Thursday, December 12, 2024

macOS 15.2

Juli Clover (release notes, security, enterprise, developer, full installer, IPSW):

macOS Sequoia 15.2 adds Image Playground, an app that lets you create images based on text descriptions. You can type in whatever you like, but Apple will suggest costumes, locations, and items that you can add to an image. You can generate images that resemble your friend and family, and you can choose a photo for Image Playground to use as inspiration.

[…]

The update also adds ChatGPT integration to Siri, which is an opt-in feature. When enabled, Siri is able to hand complicated requests over to OpenAI’s ChatGPT.

Howard Oakley:

Apple’s release notes are a real joy to read and contain more detailed information at last, including the following:

  • Photos enhancements,
  • Safari supports background images for its Start Page, tries to use HTTPS on all sites, and more,
  • Sharing item locations in Find My,
  • Sudoku for News+,
  • Presenter preview for AirPlay,
  • Pre-market quotes in Stocks.

Among the more significant bugs fixed is that Apple silicon virtualisation on M4 Macs can now open all VMs, including macOS guests before 13.4. For those running Ruby with YJIT enabled, this update should fix kernel panics with M4 chips.

See also: Mr. Macintosh.

Christian Zibreg (via Ric Ford):

Apple’s custom emoji generator, Genmoji, is now available on iPhone and iPad with iOS 18.2 and iPadOS 18.2, but Mac owners will need to wait a little more because Genmoji is a no-show in macOS Sequoia 15.2. Instead, “Genmoji will be available on Mac in the coming months,” Apple confirmed.

[…]

Priority notifications is another Apple Intelligence feature coming later than sooner. Priority notifications leverage AI to summarize and surface what’s most important at the top of the stack.

Tim Hardwick:

Users on iPhone who updated to iOS 18.2 have the [Mail sorting] features. However, iPad and Mac users who updated their devices with the software that Apple released concurrently with iOS 18.2 will have noticed their absence.

Luc Vandal:

Dear SwiftUI devs at , will this [toolbar crash] issue ever going to be fixed?

Ric Ford:

Lee Mendoza emailed us to report that macOS 15.2 patches a recurring Apple bug again, which breaks home directory relocation.

Matthias Gansrigler:

As of macOS 15.2, option-“only” keyboard shortcuts work again for sandboxed 3rd party apps!

Previously:

Update (2024-12-16): Paul Kafasis:

This update once again brings important audio-related bug fixes to the operating system.

Ilja A. Iwas:

If you ignored best practices and added a method called imageWithTintColor: (without using a custom prefix) to the NSImage class in your macOS app, macOS 15.2 is here to collect your dues.

Previously:

macOS 14.7.2 and macOS 13.7.2

Apple (release notes, full installer):

This document describes the security content of macOS Sonoma 14.7.2.

Apple (release notes, full installer):

This document describes the security content of macOS Ventura 13.7.2.

See also: Howard Oakley.

Previously:

Wednesday, December 11, 2024

OmniFocus 4.5

Orion Protonentis (release notes):

There are all-new Shortcuts actions (Complete Action, Complete Project, and Find Folders), Shortcuts actions that have gained additional powers (Today’s Forecast now supports due, deferred, tagged, and flagged actions), and Shortcuts actions that have been re-written (Add TaskPaper, Find Projects, and Find Tags) or re-written and renamed for clarity (Add Action and Find Actions).

[…]

Get Database Object Result from Input required manipulating a JSON file, so we’ve replaced it with Get Action, Get Folder, Get Perspective, Get Project, and Get Tag, all of which accept OmniFocus URLs you can generate in-app using the Copy as Link command.

[…]

With this update, our Spotlight integration has been completely rewritten, and will now show your actions, action groups, projects, folders, tags, default perspectives, and custom perspectives… no matter which device you’re using!

[…]

We have added Mac-exclusive support for custom fonts, along with a list of Omni-selected system fonts that work well, and an updated slider which supports a wider range of sizes (from 9 to 42 point).

It seemed to increase the font size after I updated the Mac app, but there are now more size options than before, so I was able to get it back to where I wanted and could actually go down to 9pt if desired.

The Mac app continues to be just about perfect.

The iOS app has improved a lot since the rewrite, and really the only issue I have is that the numbers on the perspective badges still sometimes don’t match the number of actions shown in the list.

The watchOS app continues to be frustrating. Even with Bonjour syncing, it will often take 30 seconds to sync a single to change to a single action, during which time the app is not responsive. And syncing still only ever works when I manually launch the app, so the number shown on the complication is almost always stale. I wonder whether this is any better in watchOS 11, which my watch can’t run.

Previously:

Instagram Shuts Down Basic Display API

Sarah Perez (via Mike Rockwell):

A change to Meta’s developer tools is impacting third-party consumer apps that had previously integrated with Instagram. Among those affected by the changes are the Match-owned dating apps Tinder and Hinge, which had allowed their users to link their Instagram profiles to their accounts to display their posts to potential matches.

Day One, the journaling app that WordPress.com owner Automattic bought in 2021, is also losing a key piece of its functionality because of the change. The company announced on Friday that it will no longer have the ability to import users’ Instagram photos and posts into their journals, due to a change that impacts the abilities of developers to access Instagram data programmatically.

The Instagram API is still available but only works with business accounts.

Firefox Removes “Do Not Track”

Venkat (via Hacker News):

According to Wikipedia, DNT was introduced in 2009 by researchers Christopher Soghoian and Sid Stamm, and Mozilla Firefox was the first browser to implement this feature.

However, as we approach 2025, with growing concerns about online privacy and data protection, Mozilla believes that DNT is no longer an effective privacy measure. Many websites ignore the DNT signal. Therefore, Mozilla has removed the DNT signal from Firefox version 135.

Mozilla says it was not honored and so provided a false sense of privacy, and Apple said it could be used for fingerprinting. I don’t understand why something like this couldn’t be used to avoid cookie banners, for sites that are trying to play by the rules.

Previously:

Update (2024-12-16): Nick Heer:

Unfortunately, the replacement for Do Not Track — the Global Privacy Control — is not quickly catching on despite claiming to have “broad industry support” and legal might.

Festivitas

Simon B. Støvring (MacRumors):

✨ Introducing Festivitas for macOS! 🎄

Deck your dock and menu bar with endlessly customizable festive lights. Add a touch of holiday magic to your Mac ✨💻

It’s a one-time purchase for €4, only available outside the Mac App Store because it requires accessibility access to find window positions.

Jason Snell:

It’s a well executed app that’s got the flavor of the fun early Mac era. It reminds me of classic Mac apps like Underware and more modern takes like Notchmeister.

John Gruber:

There is something very core to the Mac’s origins about not just making a software toy like this, but putting effort into making everything about it really nice. Harks back to Steven Halls’s The Talking Moose and, of course, the undisputed king of the genre, Eric Shapiro’s The Grouch. Oh, and of course (thanks to Stephen Hackett for the reminder), Holiday Lights.

Simon B. Støvring:

Drawing to SwiftUI’s Canvas seems very CPU-intensive, causing Festivitas to have way too high power consumption. It’s surprising to me that drawing should be that expensive. Festivitas’ drawing is quite simple after all 🤔

Basic Apple Guy:

A collection of lovingly hand-knitted wallpapers for your Mac just in time for the holidays.

The Iconfactory:

Decorate your devices with these festive, FREE, textured wallpapers perfect for the holiday season from artist @gedeonm.

Previously:

Tuesday, December 10, 2024

Suspicious Package Keeps on Tickin’

Brett Terpstra:

Suspicious Package has been around for as long as I can remember. It’s been steadily updated over the years, and runs perfectly on the latest macOS (Sequoia). It makes inscrutable Package Installers scrutable.

[…]

This tool will give you a Quick Look extension, so you can just select a .pkg file and hit Space to see what the Package Installer will do — how many files it will install, how many scripts it will run, etc.

[…]

Suspicious Package is free. It’s developed by Randy Saldinger (Mother’s Ruin Software), who doesn’t even accept donations. He says his apps are labors of love, created just because he wanted them to exist. If you want to know what’s going on with your .pkg files (even those you trust), it’s a killer app.

Previously:

Apple’s Use of Swift and SwiftUI in iOS 18

Alexandre Colucci (Mastodon, Hacker News):

iOS 18 contains 6800 binaries, up from 6030 in iOS 17. That’s 770 new binaries.

[…]

Unsurprisingly, the number of apps adopting SwiftUI continues to grow this year. Notable mentions include:

  • The new Passwords app
  • The Siri.app which now uses SwiftUI
  • The Calculator app, which received a notable overhaul
  • The new Journal app introduced in iOS 17.2

[…]

iOS 18 now contains 592 binaries using SwiftUI and the number of binaries containing at least one line of Swift code increased by 50% between iOS 17 and iOS 18[…]

In iOS 16, only 4 apps used the SwiftUI-based app lifecycle, and this number grew to 14 in iOS 17. In iOS 18, 19 apps are now using the SwiftUI-based app lifecycle[…]

Adrian Schönig:

Migrating an app from the SwiftUI life cycle to AppKit makes me appreciate many of the niceties in SwiftUI. So much more boilerplate code in AppKit. But it’s great to be 100% in control of my windows and the menu bar.

Previously:

Skype Credit Is No Longer Available

Skype (via Hacker News):

Skype Credit is no longer available. For new purchases, check out the monthly subscriptions or make a free Skype call to anyone anytime.

This a shame, as I liked to keep Skype around as a backup way to make calls and for devices that don’t have cellular plans. I was happy to pre-pay and let them take a little of the balance now and then as I had to tickle the account to keep it active. But I’m not going to pay a monthly subscription just to have it immediately ready to make a call.

Storing Times for Human Events

Simon Willison:

What’s wrong with calculating the exact UTC time the event is starting and storing only that?

[…]

It’s surprisingly common for countries to make decisions about DST with very little notice. Turkey and Russia and Chile and Morocco are four more examples of countries that can often cause short-term chaos for software developers in this way.

[…]

My strong recommendation here is that the most important thing to record is the original user’s intent. If they said the event is happening at 6pm, store that! Make sure that when they go to edit their event later they see the same editable time that they entered when they first created it.

In addition to that, try to get the most accurate possible indication of the timezone in which that event is occurring.

Previously:

Monday, December 9, 2024

Selling Outside of the Mac App Store

Matthias Gansrigler:

But once the Mac App Store hit, I transitioned all my apps to it pretty much right away. It’s just so convenient: no license creation, no license verification (apart from receipt validation, but that has become more convenient recently), easy updating, no handling of payments, invoices, refunds, and the potential of getting featured to lots and lots of users.

[…]

Besides all that, it was high time I set up a way to also sell my apps outside of the Mac App Store. Without a licensing system for my apps, I’ve been unable to participate in software-bundles and/or collections. Lots of companies and corporations cannot purchase apps from the Mac App Store due to policies. Individuals who want to purchase my apps for work are unable to do so because of those same policies. I also am unable to give individual discounts to customers when need be. And while I am a strong proponent of the Mac App Store, I also believe in giving people a choice.

[…]

A “Merchant of Record” is a company that handles payments, invoicing, refunds, taxes, etc for indie software developers and other businesses.

There are actually quite a few to choose from: FastSpring, PayPal, Paddle, Stripe, and Gumroad, just to name a few.

He went with Paddle.

Previously:

Update (2024-12-19): Matthias Gansrigler:

Paddle Billing is very obviously targeted at recurring payments (“subscriptions”) rather than one-time purchases, underlined by the fact that Paddle Classic did have direct support for creating and/or handling license keys, whereas Paddle Billing does not.

[…]

The documentation in general is very good and detailed, but it isn’t outright obvious how all the pieces fit and work together. It feels like each piece is described nicely on its own, but how it all fits into a whole flow of a user purchasing something is up for the developer to figure out.

[…]

If you want to keep track of activations, you need a way to do that (a database and an “API” to manage all the necessary info), and will have to have a way to reset individual or all activations of a license: if a customer gets a new Mac, they might want to move their registration over from the old one, for example.

When it comes to commercial licenses, I figured administrators wouldn’t want employees to be able to mess with a copy’s registration, so those require a “key” to be reset, which is individually created and sent alongside the license keys.

Update (2024-12-20): Matthias Gansrigler:

Having implemented the backend and licensing mechanism, there was still an important part missing: a way to download and install updates for the app.

NetNewsWire 6.1.6

Brent Simmons (release notes):

The theme of this release is using less bandwidth (and, as a consequence, less battery). It fixes a conditional GET issue and it now pays attention to Cache-Control response headers and 429 response codes.

It also fixes an AppleScript bug I reported.

Previously:

FTC and CFPB Reining in Data Brokers

FTC (tweet):

The Federal Trade Commission will prohibit data broker Mobilewalla, Inc. from selling sensitive location data, including data that reveals the identity of an individual’s private home, to settle allegations the data broker sold such information without taking reasonable steps to verify consumers’ consent.

Under the FTC’s proposed settlement order, Mobilewalla will also be banned from collecting consumer data from online advertising auctions for purposes other than participating in those auctions, marking the first time the agency has alleged such a practice was an unfair act or practice.

CFPB:

The Consumer Financial Protection Bureau (CFPB) today proposed a rule to rein in data brokers that sell Americans’ sensitive personal and financial information. The proposed rule would limit the sale of personal identifiers like Social Security Numbers and phone numbers collected by certain companies and make sure that people’s financial data such as income is only shared for legitimate purposes, like facilitating a mortgage approval, and not sold to scammers targeting those in financial distress. The proposal would make clear that when data brokers sell certain sensitive consumer information they are “consumer reporting agencies” under the Fair Credit Reporting Act (FCRA), requiring them to comply with accuracy requirements, provide consumers access to their information, and maintain safeguards against misuse.

Karl Bode:

This time the FTC is taking aim at Gravy Analytics and its subsidiary Venntel, which the FTC announcement and complaint says violated the FTC Act by illegally selling sensitive consumer location data without obtaining verifiable user consent for commercial and government uses.

Nick Heer:

As usual, I am conflicted about these policies. While they are yet another example of Lina Khan’s FTC and other government bureaucrats cracking down on individually threatening data brokers, it would be far better for everyone if this were not handled on a case-by-case basis. These brokers have already caused a wealth of damage around the world, and only they are being required to stop. Other players in the rest of the data broker industry will either self-govern or hope they do not fall into the FTC’s crosshairs, and if you believe the former is more likely, you have far greater faith in already-shady businesses than I do.

Previously:

Tim Cook Interview About AI and AVP

Steven Levy (MacRumors):

We are here to discuss Cook’s big move in this high-stakes environment: the impending release of Apple Intelligence, the company’s first significant offering in the white-hot field of generative AI. Some consider it belated. All year, Apple’s competitors have been gaining buzz, dazzling investors, and dominating the news cycle with their chatbots, while the world’s most valuable company (as I write) was showing off an expensive, bulky augmented-reality headset. Apple has to get AI right.

[…]

[Apple Vision Pro is] an early adopter product, for people who want tomorrow’s technology today. Those people are buying it, and the ecosystem is flourishing. The ultimate test for us is the ecosystem. I don’t know if you’re using it very much, but I’m on there all the time. I see new apps all the time.

[…]

It’s clear to me that if you zoom out way into the future, and you look back and ask what Apple’s biggest contribution was, it will be in the health area. That’s what I really believe.

On the one hand, who could be against health? But I find it a bit disturbing that Cook focuses on an area where Apple is providing top-down, closed solutions, albeit seemingly good ones. It’s kind of the same deal with some of the newer services and Apple Intelligence stuff. Press a button to auto-generate a “personalized” Memories movie. Read the curated news in a siloed app. Ask HomePod to play songs from Apple Music but not your own library.

HyperCard this is not. The Apple I like is focused on making tools to empower users and making open platforms to empower developers (who in turn help empower users). I think of iLife, built-in scripting languages, RSS in Mail, and bundled developer tools that didn’t need a membership and permission to call certain APIs.

Apple invented the personal computer and the modern smartphone. Its platforms and their ecosystem are a multiplier for the work of hundreds of millions of people. If Cook meant health in that scientists are using Apple platforms to help cure diseases, that would be one thing, but he’s talking about stuff like using Apple Watch to tell you that you aren’t sleeping well and using AirPods to diagnose your own hearing loss. These are important but small ball. I guess the implication is that there’s much bigger stuff in the pipeline that will overshadow Apple’s pre-Cook accomplishments. I’ll believe it when I see it.

[Apple Park has] promoted collaboration even more than I thought. That was a key component of the design, but there are so many places here where you just unexpectedly run into people. In the cafeteria, at the coffee bar, outside when you’re going across the pathway.

Previously:

Friday, December 6, 2024

Key Repeat in Sequoia

Brett Terpstra:

But one thing I found frustrating was that setting key repeat delay and key repeat speed in System Settings was having no effect. Keys that had diacritics still just popped up the special character popover, and keys without didn’t do anything at all when held.

[…]

Run the following in Terminal:

defaults write -g ApplePressAndHoldEnabled -bool false

Then reboot your machine (simply logging out might do it). Now the key repeat settings in System Settings will actually have an effect.

Microsoft Discontinues Surface Studio 2+

Hartley Charlton:

Microsoft has discontinued its Surface Studio 2+, marking the end of the company’s only direct competitor to Apple’s iMac, leaving a gap in the Windows ecosystem for high-end all-in-one PCs.

[…]

First introduced in 2016, the Surface Studio formed an attempt to challenge Apple’s hold on the creative professional market. Its standout feature was a 28-inch 4.5K PixelSense touchscreen mounted on a unique hinge that allowed the display to tilt into a flat, drafting-table position. Paired with accessories like the Surface Dial and Surface Pen, the Studio was designed to attract graphic designers, illustrators, and video editors. Despite its innovative design, the Surface Studio struggled to gain significant traction due to its steep price point, which started at $2,999 for the original model, and its reliance on hardware components that were frequently a generation behind current industry standards.

It was an iMac competitor in that it was all-in-one, but given the price and marketing focus it seems like more of a professional-level product like the Mac Studio. Apple has since discontinued its own large-screen all-in-one and refocused the iMac line toward the lower-end, e.g. 24-inch displays and less connectivity and RAM.

Stephen Hackett:

For years, Apple fans have looked at the Surface Studio longingly, wondering what a version of a tilting Mac desktop could look like.

I guess if Apple makes something like this it will be an iPad.

Previously:

Update (2024-12-09): Sebastiaan de With:

RIP to the Surface Studio. I owned the first version and loved it, but Windows was a terrible OS for it. Incredible hardware.

Sören:

The Surface Studio, though, only ever used H-series CPUs; the 27-inch iMac and iMac Pro were much beefier. The difference is even more stark with RAM — 32 GiB ceiling on the Studio even in the 2022 model, whereas the iMac went up to 128, or even 512 for the Pro.

[…]

The other uphill battle, though, was software. The Studio came out at peak “UWP will be the new way to write apps, and they’ll run on desktop, tablet, phone, Xbox, HoloLens”, and that ecosystem simply didn’t materialize.

UK App Store Commission Lawsuit

Tim Hardwick:

Led by competition policy professor Sean Ennis, the suit alleges Apple’s 15-30% commission on App Store sales creates an anti-competitive tax on the UK technology industry. The lawsuit seeks £785 million ($995 million) in damages on behalf of UK app developers. The case could potentially benefit up to 13,000 developers who have sold apps or in-app subscriptions to iOS users since July 2017.

[…]

This latest legal challenge expands on a previous suit filed last year, which initially represented around 1,500 UK developers.

Previously:

RCS in iOS 18

Juli Clover:

This guide explains everything that you need to know about RCS, including how it works, how to use it on Apple devices, why you might not see it, why Apple decided to adopt it now, and the benefits that you can expect from RCS now that support for the feature is live.

[…]

Google’s implementation of RCS for Google Messages supports end-to-end encryption on Android devices, but it is worth noting that Apple is adopting the RCS Universal Profile created by the GSM Association and not a version of RCS modified by Google. RCS messages from iPhone to Android users are NOT encrypted at the current time.

iPhone-to-iPhone RCS messages don’t seem to be end-to-end encrypted, either. Unlike SMS, they do at least use TLS.

Charles Martin:

Videos, GIFs, and photos sent in messages between the two platforms now retain their original quality level, for example.

iPhone users also now see when an Android user you’re in a chat with is typing, prior to their finished message appearing, and they will see the same when you’re typing. Read receipts and delivery notifications between platforms now work as they have done when chatting with iPhone users.

It’s also now seamless for both iPhone and Android users to add and manage participants in a group chat originated on either platform. Scheduling messages to Android device users the way you can to Apple users is still not possible — but Apple claims that is a problem with RCS.

[…]

The ability to send a message to an Android user when using in-flight Wi-Fi or when the Wi-Fi connection is less than rock-solid doesn’t work properly.

Dan Moren:

Satellite texts work for iMessage and SMS—but not RCS, as Apple says that the packet sizes are too large.

Juli Clover:

RCS is also supposed to support emoji reactions from Android users, but it wasn’t working properly when iOS 18 launched. It’s not clear what changed, but The Verge says that something that Google or Apple tweaked made it work as of this week.

Tim Hardwick:

Apple introduced RCS support with iOS 18. However, full functionality will depend on carrier support. The good news is that major U.S. carriers like Verizon, T-Mobile, and AT&T already support RCS. Apple also has a list of carriers that support RCS on its website.

  1. Open Settings on your iPhone and select Apps at the bottom of the menu.
  2. Tap Messages.
  3. Under “Text Messaging,” select RCS Messaging.
  4. Toggle RCS Messaging to the green ON position if it isn’t already enabled.

Henry (via Hacker News):

I can’t help but feel RCS is almost indistinguishable from an OTT service at this point, controlled almost end-to-end by Google, who is driving the specification evolution, and both the only relevant server implementation and Android client.

[…]

On the iOS side, things are a bit more complex. Right now the RCS client is compatible with Universal Profile version 2.4, which is 5 years old.

[…]

On a more annoying note, RCS is still pretty far from being enabled worldwide. Like with other IMS configuration, the feature needs to be set up in iOS carrier bundles.

Due to unclear reasons, this is still not the case in many countries. Even in the US, some MVNO subscribers can’t use RCS yet.

It isn’t the first time Apple selectively delays standard IMS features. It’s a bit hard to believe carriers are at fault here, especially the ones that have been running their own Jibe deployment for years and have publicly communicated about the upcoming iOS support.

Stephen Schenck (via Hacker News):

Last year, Google announced its support for Messaging Layer Security (MLS), a new standard that promises to keep end-to-end encrypted (E2EE) messages secure across apps and platforms, in one-on-one and group chats alike. We’re finally starting to see the fruits of that effort, as references to MLS appear in the Google Messages app.

Developed by the Internet Engineering Task Force (IETF), the big problem MLS attempts to solve is E2EE group messaging. Google has already extended rich-communications services (RCS) to support E2EE for groups, and while it remains to be seen exactly how MLS will be integrated into Messages, we can hope to see it leading to more robust, secure communication across not just platforms, but supporting all your favorite apps.

Tim Hardwick:

The GSM Association (GSMA), the organization responsible for developing the Rich Communication Services (RCS) standard, announced on Tuesday that it is working to implement end-to-end encryption (E2EE) for messages sent between Android and iPhone devices, though no specific timeline for the implementation has been provided.

The news comes on the heels of Apple’s recent adoption of RCS with the launch of iOS 18, which replaced SMS with RCS messaging for texts sent to Android users. While the update brings improvements such as high-resolution media sharing, read receipts, and typing indicators, it notably lacks end-to-end encryption.

[…]

Currently, not all RCS providers offer E2EE. Google Messages, which enabled E2EE by default for RCS conversations last year, is one of the exceptions.

Nick Heer:

RCS rolled out in a relatively early beta release for my iPhone — perhaps in July — and I have appreciated both typing indicators and read receipts when chatting with friends who do not have iPhones.

[…]

However, I have at least two questions. The first: how will users be able to tell the difference between a private RCS discussion and one which is not end-to-end encrypted? Apple has several visual indicator options. For example, a message thread could have a persistent padlock or bubbles could use a different colour. Both add a layer of visual complexity which could raise questions or add confusion.

Perhaps a simpler choice would be better. The placeholder text in the compose box, for example, now says “Text Message • SMS” or “Text Message • RCS” depending on which protocol is being used. Surely it could also say something like “Encrypted • RCS” and, if Apple wanted to, it could make iMessage threads match with an “Encrypted • iMessage” placeholder.

An obvious answer would be to make encrypted RCS blue, like iMessage, since it’s far more similar to iMessage than to SMS, but no one seems to expect Apple to do that.

Louie Mantia:

There’s a huge disconnect when you meet anyone that doesn’t have or use the same communication app you do. When your only option to reach someone is through an app you rarely use, you’ll rarely reach out.

SMS exists on all cell phones. It’s not just a built-in app, it’s a built-in service through your telecom provider. It’s default functionality on a network level.

Eric Schwarz:

SMS is outdated, insecure, and sucks, but it works on everything. If you swore off Facebook Meta like I did? Anyone who lives on WhatsApp, Instagram, and Facebook Messenger are off-limits. Asking someone to sign up for a specific service because you’re the one person they know who uses it? Not gonna happen.

Previously:

Update (2024-12-17): John Gruber:

Turns out Google Fi doesn’t support RCS fully either.

Thursday, December 5, 2024

MIST (macOS Installer Super Tool)

Ric Ford:

MISTmacOS Installer Super Tool – is a remarkable Mac app from Nindi Gill that greatly simplifies the processes of downloading macOS and firmware versions that Apple itself complicates and makes difficult (especially with older releases).

See also: SUS Inspector.

Previously:

Update (2024-12-06): ednl:

There is also still the Python download script “installinstallmacos.py”.

And I saw this page that catalogues a bunch of options, including that script and MIST.

US Officials Recommend Encrypted Messaging Apps

Kevin Collier:

The hacking campaign, nicknamed Salt Typhoon by Microsoft, is one of the largest intelligence compromises in U.S. history, and it has not yet been fully remediated. Officials on a news call Tuesday refused to set a timetable for declaring the country’s telecommunications systems free of interlopers.

[…]

In the call Tuesday, two officials — a senior FBI official who asked not to be named and Jeff Greene, executive assistant director for cybersecurity at the Cybersecurity and Infrastructure Security Agency — both recommended using encrypted messaging apps to Americans who want to minimize the chances of China’s intercepting their communications.

Via John Gruber:

It seems kind of new for the FBI to call encryption “our friend”, but now that I think about it, their beef over the years has primarily been about gaining access to locked devices, not eavesdropping on communication protocols. Their advocacy stance on device encryption has not changed — they still want a “back door for good guys” there. Their thinking, I think, is that E2EE communications are a good thing because they protect against remote eavesdropping from foreign adversaries — exactly like this campaign waged by China. The FBI doesn’t need to intercept communications over the wire. When the FBI wants to see someone’s communications, they get a warrant to seize their devices. That’s why the FBI wants device back doors, but are now encouraging the use of protocols that are truly E2EE. But that’s not to say that law enforcement agencies worldwide don’t still fantasize about mandatory “back doors for good guys”.

Pieter Arntz:

Sophisticated state-sponsored campaigns from China are constantly targeting network appliances and devices. Among the culprits are four major APT groups: Volt Typhoon, Salt Typhoon, Flax Typhoon, and Velvet Ant. Volt Typhoon made headlines earlier this year when the FBI removed their malware from hundreds of routers across the US.

The infrastructure that the US government relies to communicate on is made up of the same private sector systems that everybody else uses. By abusing their components that make up part of the infrastructure, the Chinese are said to have been able to eavesdrop on political and industrial leaders in multiple countries.

John Gruber:

While writing the previous item regarding the FBI encouraging the use of E2EE text and call protocols, I wound up at the Play Store page for Google Messages. It’s shamefully misleading regarding Google Messages’s support for end-to-end encryption. As I wrote in the previous post, Google Messages does support E2EE, but only over RCS and only if all participants in the chat are using a recent version of Google Messages. But the second screenshot in the Play Store listing flatly declares “Conversations are end-to-end encrypted”, full stop. That is some serious bullshit.

I don’t see what the big deal is when the third sentence of the description says: “End-to-end encryption is on by default when you message other Google Messages users who have RCS enabled.”

Apple marketed iMessage as end-to-end encrypted for years, even though it really wasn’t if you had iCloud backup enabled. And it still isn’t, by default—you have to opt into Advanced Data Protection. Neither the App Store nor the Messages & Privacy page mentions this.

Tim Cushing (Hacker News):

The Government executed a search warrant at Defendant’s residence and seized fifty-two devices, including an iPhone and an iPad. Law enforcement identified contraband on several devices, but could not examine the iPad, which was passcode-protected, or the iPhone, which would not power on.

The Government retained the iPad and iPhone for over a year. Eventually, with the assistance of a digital forensics expert who had not previously been involved in the investigation, the Government was able to repair the iPhone and power it on. The Government then applied for, and received, a new search warrant. Pursuant to this authority, agents searched the iPhone and—thanks to intervening developments in digital forensics tools—the iPad.

The most logical assumption would be that a non-working device would be of limited evidentiary value. But the DHS (whose Homeland Security Investigations unit took point in this case) apparently felt otherwise.

What’s almost hidden here is that reviving the phone led to the government being able to crack it, despite the presence of a passcode. And, in case you’re still wondering about the value of walled gardens, cracking the iPhone immediately led to cracking the iPad, which suggests if the government has one Apple device owned by a suspect it can get into, it can probably get into the rest of their Apple devices.

[…]

This is another government party extensively modifying seized property to make it more receptive to phone-cracking efforts. One would think a court would need to be apprised of this opportunity before it became a reality, if for no other reason than the original warrant only authorized a search, not the literal cracking of a cell phone (or its casing, at least) to replace a circuit board and install new firmware.

This was apparently an iPhone 6, however.

Previously:

Swift Proposal: Precise Control Flags Over Compiler Warnings

SE-0443:

This proposal suggests adding new options that will allow the behavior of warnings to be controlled based on their diagnostic group.

  • -Werror <group> - upgrades warnings in the specified group to errors
  • -Wwarning <group> - indicates that warnings in the specified group should remain warnings, even if they were previously suppressed or upgraded to errors

[…]

Thus, for example, you can use the combination -warnings-as-errors -Wwarning deprecated, which will upgrade all warnings to errors except for those in the deprecated group. However, if these flags are specified in the reverse order(-Wwarning deprecated -warnings-as-errors) it will be interpreted as upgrading all warnings to errors, as the -warnings-as-errors flag is the last one.

[…]

We are also introducing a new compiler flag, -print-diagnostic-groups, to display the names of diagnostic groups along with the textual representation of the warnings.

I’ve linked to this before, but I wanted to give it a full post because I think it’s important. I’d still like to see even more control over warnings, e.g. a way to suppress a particular warning or deprecation only within a certain region of code, as was possible with Clang.

Previously:

Microsoft Still Unhappy With iOS Cloud Gaming Rules

Ryan Christoffel:

Back in January, when Apple first shared its new App Store guidelines that allowed cloud streaming apps, it was expected that these would pave the way for services like Xbox Cloud Gaming to debut.

Over half a year later, there’s been no news on Microsoft’s front about an upcoming release.

A new report by Tom Warren at The Verge helps explain why. It points to a late July submission Microsoft made to the UK’s Competition and Markets Authority (CMA).

As the public but redacted submission outlines, Microsoft believes that, despite January’s changes, Apple still makes it impossible for cloud gaming services to exist on the App Store.

Juli Clover:

Microsoft’s chief complaint is that the App Store rules require subscriptions and features to be made available on iOS devices with in-app purchase, which is “not feasible.” A consumption-only situation where content is purchased on another platform and played on iOS is not allowed for cloud gaming apps.

Apple’s 30 percent commission fee “makes it impossible” for Microsoft to monetize its cloud gaming service, and it is neither “economically sustainable nor justifiable.”

Microsoft also complains about Apple’s lack of support for alternative app stores and the limitations of web apps, such as an inability to access device hardware features.

Damien Petrilli:

I obviously agree with this.

However coming from Microsoft who charges 30% for all games on Xbox without any alternative allowed. And charging a monthly fee just to access your own internet just undermine their arguments.

[…]

However, like for the printers-cartridges business model, the only way to make [selling hardware at a loss] work is to forbid competition which is illegal.

Previously:

Wednesday, December 4, 2024

Google Page Annotation Links

Barry Schwartz:

When you are browsing a web page in the Google App native browser, Google can “extract interesting entities from the webpage and highlight them in line.” When you click on them, Google takes you to more search results.

I don’t think this is a new feature, I mean, I’ve heard of this before from Google. I just can’t find my write up on it. Maybe it was only Android before and it was named something else. That being said, this will lead to people going to your site, then Google injecting links on your site that will lead your website visits to Google Search.

[…]

Hate it? Well, Google added a new opt out form - the only issue, it can take up to 30 days for the opt out form to work.

This is for individual Web sites to opt out. I guess there’s no way for users to opt out for all the sites they visit.

Via Nick Heer:

The results from a tapped Page Annotation are loaded in a floating temporary sheet, so it is not like users are fully whisked away — but that is almost worse. In the illustration from Google, a person is apparently viewing a list of Japanese castles, into which Google has inserted a link on “Osaka Castle”. Tapping on an injected link will show Google’s standard search results, which are front-loaded with details about how to contact the castle, buy tickets, and see a map. All of those things would be done better in a view that cannot be accidentally swiped away.

Maybe, you are thinking, it would be helpful to easily trigger a search from some selected text, and that is fair. But the Google app already displays a toolbar with a search button when you highlight any text in this app.

This is not cool, though I have to say that I don’t recall ever hearing about anyone using the Google app instead of just Safari or a third-party browser. But now I see that it’s #1 in the App Store in the Utilities category (beating Chrome at #2). Are people really using it now? Because of Gemini?

Previously:

ReadKit 3.3

Balazs Varkonyi:

Added Smart Folder Actions, enabling matching items in a smart folder to be marked as read or starred and to be used for advanced content filtering.

Enhanced folder/tag selection in relevant management interfaces with powerful search capabilities. Filter folders/tags using a search field for quicker navigation, select matching items directly by pressing Return, and use ⌘ + Return on hardware keyboards to autocomplete partial matches or select the single match automatically.

[…]

Added an image viewer on macOS.

Previously:

CoreData Studio 1.5

Momentarium:

  • Easy Data Inspection: Quickly browse and inspect your CoreData data models with our intuitive interface.
  • Customizable Layout: Tailor the layout to your needs, with adjustable column widths, row heights, and more.
  • Relationship Visualization: Visualize complex relationships between entities with our interactive graph view.
  • Support for Multiple CoreData Versions: Compatible with CoreData versions from iOS 10 to the latest releases.
  • Powerful Search: Instantly find any record by searching its content, so you can quickly locate the data you need.
  • DB Live Editing: Ability to save update and changes
  • Data Track Changes. Track and trace changes in your SQLite database.

This sounds cool, and it’s only $4.99, but I wasn’t able to get it to work for me. It seems to need an uncompiled model file, which I don’t have for any of the third-party apps whose data I want to inspect or for my own apps (since they build the models in code). SwiftData apps would have the same problem.

Previously:

UK CMA vs. Apple’s Browser Rules

Tim Hardwick:

In its report, the CMA’s independent inquiry group determined that Apple’s Safari browser policies prevent competing browsers from implementing certain features, such as faster webpage loading technologies. The investigation also revealed that many UK app developers would prefer to offer progressive web apps as an alternative to App Store distribution, but Apple’s current iOS limitations make this impractical.

Adding to competitive concerns, the regulator highlighted a revenue-sharing agreement between Apple and Google that “significantly reduces their financial incentives to compete” in the mobile browser space on iOS. The CMA also found that both companies can manipulate how users are presented with browser choices, making their own offerings appear as the clearest or easiest options.

[…]

In its summary of provisional decision, the regulator is recommending that these findings be addressed through the UK’s upcoming Digital Markets, Competition and Consumers Act, which takes effect in January 2025. This legislation will give the CMA new powers to designate firms as having “Strategic Market Status” and impose appropriate interventions to promote competition.

Previously:

Tuesday, December 3, 2024

PPSSPP Emulator Stuck in App Review

PPSSPP:

PPSSPP is an open source PSP emulator, that lets you run your own PlayStation Portable games on your various devices. PPSSPP is officially available on Android through Google Play, PC, Mac, and recently iOS through the App Store. There is also a Linux flatpak build. The project is ongoing for more than 11 years now, and has been downloaded over 100M times. It has millions of active users on Android.

[…]

For some time now, I have simply not been able to update the paid iOS version on Apple’s App Store. The free version flies through review in a few hours, while the near-identical paid version is just stuck.

[…]

Below is an authentic conversation with App Store Review.

[…]

I tried appealing the previous conversation to the App Store review board, with no result.

It’s just so frustrating. I want to get a bugfix update out, and I can’t.

App Review is continually complaining about things that either aren’t true or that were allowed for other apps, including from the same developer.

Via Craig Grannell, who terms the situation “kafkaesque” (Mastodon):

Apple never wanted emulators on the App Store. I imagine it felt strong-armed into allowing them, due to EU regulators getting antsy, or as a means to attempt to derail third-party app AltStore, which an awful lot of people primarily cared about due to Nintendo emulator Delta. Even with that, Apple first authorised a terrible rip-off over Delta, and everything since has been at best a crapshoot.

[…]

These aren’t the only issues emulator authors have faced. Last I checked, MAME4iOS was in limbo. Several other emulator authors have given up. Meanwhile, Apple merrily approves emulators that barely work and are exploitative crap. A cynic might wonder whether this is intent, to showcase the worst of emulation and put people off.

Craig Grannell:

Increasingly feels like they were only allowed to blunt AltStore and Delta. Now that’s over with, several emulator authors are having trouble with approvals or updates.

Francisco Tolmasky:

Imagine you’re the most valuable company on Earth. Billions of dollars of cash on hand. Best engineers in the world. You could legitimately leave an impact on anything you work on. And one of the primary things you choose to focus on is stubbornly policing fucking game emulators. Like forget about whether it’s good or bad, it is just so unbelievably small minded. An Apple running on all 8 cylinders wouldn’t have time to give a shit about stuff like this.

Take a moment to wrap your head around the fact that Apple fought a multi-year court battle to try to prevent you from putting links in your app. I get that that may have significant revenue effects — but the point is that a company with Apple’s resources should have way more interesting and impactful ways of generating revenue. There is something deeply broken from a creativity perspective if “don’t let app devs talk to users” represents the state of the art in business strategy at Apple.

[…]

No one is even asking Apple to do anything. No one is asking Apple to make sure old apps run. There’s no maintenance burden being requested. Just don’t literally devote time to 1) stopping these projects and then 2) in an act of truly bizarre pettiness, approving a weird competing copycat emulator? Like honestly, would love to hear the reasoning on this move. Only shady ripoff emulators are allowed? This is all so clearly in bad faith that I can’t understand any defense of it.

Previously:

Losing “Podcast”

Dave Winer:

We’re losing the word “podcast” very quickly. It’s come to mean video interviews on YouTube mostly. Our only hope is upgrading the open platform in a way that stimulates the imagination of creators, and there’s no time to waste. If you make a podcast client, it’s time to start collaborating with competitors and people who create RSS-based podcasts to take advantage of the open platforms with no silo walls, otherwise having a podcast will mean getting distribution deals from Google, Apple, Spotify and Amazon. And they, as we know, are nuzzling up to the government leaders, who will want to impose severe limits.

Previously:

Update (2024-12-04): Ben Cohen:

But this year, YouTube passed the competition and became the most popular service for podcasts in the U.S., with 31% of weekly podcast listeners saying it’s now the platform they use the most, according to Edison Research.

Via Nick Heer:

Cohen omits key context for why YouTube is suddenly a key podcast platform: Google Podcasts was shut down this year with users and podcasters alike instructed to move to YouTube. According to Buzzsprout’s 2023 analytics, Google Podcasts was used by only 2.5% of global listeners. YouTube is not listed in their report, perhaps because it exists in its own bubble instead of being part of the broader RSS-feed-reading podcast client ecosystem.

But where Google was previously bifurcating its market share, it aligned its users behind a single client. And, it would seem, that audience responded favourably.

[…]

Of the top twenty podcasts according to Edison Research, fifteen have what I would deem meaningful and regular video components.

[…]

Also, YouTube channels have RSS feeds, though that is not very useful in an audio-only client like Overcast.

Previously:

Pat Gelsinger Out at Intel

CNBC (MacRumors, Hacker News):

Intel ousted CEO Pat Gelsinger over the weekend, capping a tumultuous nearly four-year tenure at what was America’s leading semiconductor company before its stock price and market share collapsed.

The company announced Gelsinger’s resignation Monday morning, which a person familiar with the matter said came after a contentious board meeting last week over Gelsinger’s perceived failure to respond to Nvidia’s competitive edge and a lack of confidence in Gelsinger’s turnaround plans.

[…]

Gelsinger set out an audacious plan when he arrived in 2021 to transform the languishing company into a chipmaking juggernaut. He sought to achieve parity with the two leading chipmakers, Samsung and Taiwan Semiconductor Manufacturing Co. He pursued big buildouts in the U.S. and around the world, a costly endeavor that weighed heavily on Intel’s free cash flow and increased the company’s debt load.

He also wooed government investment, positioning Intel as the single-largest beneficiary of the U.S. CHIPS and Science Act. Government money has begun to flow to Intel in recent weeks and will aid the company’s chip fabs in Arizona and Ohio.

Rui Carmo:

Pat Gelsinger’s abrupt exit from Intel raises more questions than it answers, especially given the timing right after securing CHIPS Act funding. It feels like a classic case of boardroom drama, where the lack of a smooth transition hints at deeper issues—-perhaps a clash of visions or a failure to deliver on ambitious projects.

Ben Thompson (Dithering):

It seems likely that the board has cold feet about the foundry business, and a split may be forthcoming.

John Carmack:

I’m concerned to see Pat Gelsinger ousted as Intel CEO. He wasn’t a firebrand visionary, and it wasn’t exactly going great, but he was deeply technical, and I don’t expect his replacement to equal him there. “Business harder” isn’t going to return Intel to greatness, only technical achievement will.

Previously:

Update (2024-12-04): Charlie Demerjian (Hacker News):

Our views that Gelsinger did turn the ship are unchanged. Intel had a cultural problem, not a technical one and the one thing Pat did was change the culture for the better. There are green shoots of this popping up here and there if you know where to look with more coming every day. As we described yesterday, the problem is that technical changes happen over a three year timescale, finance looks at one year or less.

[…]

Why was this mess allowed to not only fester but continue and grow? Because the internal incentive structure was so broken that it encouraged employees to lie for profit. Worse yet lies went unpunished. SemiAccurate has many emails, texts, and had conversations about meetings where this happened.

[…]

As SemiAccurate keeps saying, Intel had a cultural problem, not a technical one. The technical problems were a symptom of the underlying culture and could not be fixed without a cultural sea change. Pat did that, or at least did most of it, and it was working. Sure he made some serious missteps and at times cheesed off many folk in the financial world, but he did the right things to fix the company. And he was just fired for it. I don’t have words that can express my disdain for the Intel board that will pass muster in a family publication such as SemiAccurate.

Sean Hollister:

Gelsinger was a lifer who joined the company at age 18 and spent 30 years on the job, from 1979 to 2009, before returning to lead the company in 2021. Even some people who’ve left Intel as a result of Gelsinger’s layoffs tell me they believed he was the right person for the job. They believed in his strategy to regain silicon leadership, they liked that he was an engineer himself, and they liked that he was there to fix long-standing technology problems left (or ignored) by previous CEOs.

Remember the 486, Intel’s 1989 flagship CPU that was the first x86 chip with over a million transistors? Gelsinger was the lead architect. Later, he became Intel’s first CTO, helping push industry standard technologies like USB and Wi-Fi as well as Intel chip design.

[…]

Over a decade ago, Intel spent billions investing in Dutch multinational ASML, which is today the most important company in chips. It’s the only firm in the world that manufactures machines capable of pulverizing a ball of tin, using high-power lasers, such that it emits an extremely tight wavelength of ultraviolet light to efficiently carve circuits into silicon wafers, a process known as EUV.

Intel initially believed in the tech, even carving out a $4.1 billion stake in the company, then decided not to order the pricey machines. But Taiwan’s TSMC did — and went on to become the undisputed leader in silicon manufacturing[…]

[…]

His hunch: Intel’s board may want to split off its foundry business entirely, above and beyond the spinoff that Gelsinger already announced, turning Intel into a company that simply designs chips like its direct rivals.

Oxide Computer Company:

How did Intel get here? Some of the cultural problems may be deep in the DNA. Bryan and Adam have some ideas for what happens next, and who might be the next CEO.

They are anti-Gelsinger.

See also: John Gruber.

Update (2024-12-06): See also Gelsinger’s oral history with the Computer History Museum (parts 1 and 2) and the Acquired and Sharp Tech podcasts.

Update (2024-12-09): Alex Heath (via Hacker News):

I wanted to hear what [Rene] Haas thought should happen to his longtime frenemy. There were reports that he approached Intel about buying a big chunk of the company before Gelsinger was ousted. At the same time, Arm is also rumored to be eyeing an expansion into building its own chips and not just licensing its designs.

Haas and I touched on all that and more in an exclusive interview earlier today, which will air in full on a future episode of Decoder.

Doug O’Laughlin (via Hacker News):

Pat wanted to pursue the big, bold IFS bet, with 100s of thousands of wafers, when the reality is just getting 10s of thousands of wafers is a massive problem as is. Pat has a bit of an optimistic naivety that comes into play, and I am sure it was likely frustrating. But the reality is he’s the single best candidate for the company.

[…]

This begs the question—what the hell was the board doing? Today, I will talk about Pat Gelsinger, the Intel board, and an example of when boards and short-termism fail. Yes, maybe splitting up the company would result in a better result for shareholders, but it would be much worse for America.

I would liken firing Pat in the final hour of 18A to quitting the final round of chemotherapy in cancer treatment. Instead of seeing the long and painful process through, I think the board will let Intel die and be sold for parts. It’s the correct answer to maximize relatively short-term shareholder value, but it's a nearsighted move that the Intel board specializes in.

Bryan Cantrill (Mastodon, Hacker News):

The host CPU discussion ended up confirming our beliefs (befitting our writing-intensive culture at Oxide we wrote up our findings in RFD 12 Host CPU Evaluation), and the NIC discussion similarly was a dead end. The switching silicon discussion, however, was interesting: Tofino was TSMC-fabbed (the only Intel part at the time fabbed outside of Intel) and we found the programmable nature of it via P4 to be really compelling.

[…]

"Go PC" was an embodiment of the arrogance that I feared came from the top; how could anyone think that Intel’s biggest problem in 2021 was competing against…​ the Mac?!

[…]

Skepticism of Gelsinger’s plan for Intel aside, we at Oxide anxiously watched Tofino. At Intel, the team itself believed it was safe under Gelsinger, and things did indeed seem okay for a while. Fast-forward two years to 2023, and we got an urgent request for a call from the executive leading the Tofino effort. Fearing the worst, we were honestly somewhat relieved to learn that Tofino hadn’t been killed outright — but all future development of the part had been cancelled.

[…]

In the end, for all of the decisions that we made at Oxide — out of all of the companies and parts that we bet on, out of all the partners that we had sent RFD 68 Partnership as Shared Values to — only one had walked away from us, and it was the largest and best capitalized partner, who had repeatedly told us that they would not do exactly what they in fact did. How can Intel ever expected to be trusted when they treat partners this way?

See also: ksec and Ben Thompson.

Modern CSV 2.1

Adam Engst:

Because CSV is an interchange format, I usually import files into a spreadsheet, make any necessary changes, and then save, print, or export for whatever my next step is. I usually use Excel for processing because it can save an opened CSV without a separate export step, which Numbers requires. Google Sheets would also require exporting and would clutter my Google Drive with temporary documents that I need only briefly.

Please don’t interpret my usage of Excel as an endorsement, though. I have a fractious relationship with Excel, particularly when working with running times, which spreadsheets treat like times of day and often reformat in weird ways.

[…]

I ran across an intriguing app earlier this year that has become my go-to tool for working with CSV files: Modern CSV. When you launch it, it looks like a spreadsheet, displaying data in rows and columns, but it doesn’t require that you write formulas to manipulate data. Instead, it has an extensive set of data manipulation capabilities that you apply directly to the contents of a CSV file. In essence, Modern CSV uses CSV as its native format and lets you choose common data transformation, conversion, concatenation, and other actions from menus instead of pre-parsing files in a text editor or building formulas and juggling results columns in a spreadsheet app. With CSV as the native file format, you skip all that to work directly with tabular data.

If you need more than what Excel and BBEdit can do, this looks great.

Previously:

Monday, December 2, 2024

Microsoft-Trusted ICP-Brasil Certificate for google.com

Andrew Ayer (via Hacker News):

A Brazilian certificate authority trusted only by Microsoft has issued a presumably-unauthorized certificate for google.com.

This can used to intercept traffic to Google from Edge and other Windows applications (except Chrome and Firefox). Hug-ops to Google folks.

Microsoft are well aware of the extensive history of problems with this CA - I emailed them my concerns in 2021, and further issues were raised during a public CCADB discussion in 2022 - but they clearly don’t care.

Previously:

Microsoft at 50

Steven Levy:

[Nadella] tells a story from a few years ago, when a group of tech analysts came from China to take the measure of Silicon Valley. They attended all the key developer’s conferences: Apple’s WWDC, Google I/O, AWS Re:Invent, and of course, Microsoft’s own Build. “They said, ‘God, you know what? For anything that the United States has got, we’ve got equivalents in China. We’ve got ecommerce, search, hardware manufacturers, social networks of our own. But there’s this one company that we visited, Microsoft, that’s pretty different.’” As Nadella tells it, the delegation marveled at the company’s breadth, with everything from the PC operating system to Xbox: “It all comes together as this one systems platform.” And, he now implies, Microsoft’s breadth sets it up to seize the most propitious opportunity in the history of technology.

It was an odd choice of anecdote, considering that Microsoft’s history has been plagued by its eagerness to use its size as a cudgel—and that today it’s under investigation by the European Union and the US Federal Trade Commission for those same tendencies. Nadella skates past that and brings up his greatest triumph, AI. He tells the tens of thousands of Softies around the world that the new goal was to put Copilot—that’s Microsoft’s name for its AI—in the hands of people and organizations everywhere.

Nadella doesn’t say outright what everyone in the room knows: Just a decade ago, pundits had declared the company brain-dead.

[…]

“In a five-minute break, walking to the bathroom and back, we were able to completely change the company strategy around support for Linux and open source,” says Guthrie. When Nadella later told Ballmer, who was in his final days at the company, he simply informed him of the policy shift. Then, two months after Nadella became CEO, Guthrie suggested that they change the name “Windows Azure” to “Microsoft Azure.” It was done on the spot, sending a signal that Microsoft would no longer assess every move based on its impact on Windows.

Previously:

FTC Opens Microsoft Antitrust Investigation

Kyle Wiggers:

The FTC has launched an antitrust investigation into Microsoft, accordingtomultiplereports that corroborate earlier reporting by the Financial Times.

The agency is said to be looking into whether Microsoft violated antitrust law in multiple segments of its business, including its public cloud, AI, and cybersecurity product lines. Of particular interest to the FTC is the way Microsoft bundles its cloud products with its office and security tools, says The New York Times.

Via Dare Obasanjo:

Being “better together” has been Microsoft’s strategy in the enterprise forever and it’s escaped scrutiny mainly because consumer big tech companies like Amazon, Google & Meta took the regulatory spotlight.

Nick Heer:

Obviously, the FTC’s concerns with Microsoft’s business practices stretch well beyond bundling Teams. According to this Bloomberg report, the Commission is interested in cloud and identity tying, too. On the one hand, it is enormously useful to businesses to have a suite of products with a single point of management and shared credentials. On the other hand, it is a monolithic system that is a non-starter for potential competitors.

The government is understandably worried about the security and stability risks of global dependence on Microsoft, too, but this is odd:

The CrowdStrike crash that affected millions of devices operating on Microsoft Windows systems earlier this year was itself a testament to the widespread use of the company’s products and how it directly affects the global economy.

Previously:

Microsoft Donates the Mono Project to Wine

Mono (via Hacker News, Slashdot):

The Mono Project (mono/mono) (‘original mono’) has been an important part of the .NET ecosystem since it was launched in 2001. Microsoft became the steward of the Mono Project when it acquired Xamarin in 2016.

The last major release of the Mono Project was in July 2019, with minor patch releases since that time. The last patch release was February 2024.

We are happy to announce that the WineHQ organization will be taking over as the stewards of the Mono Project upstream at wine-mono / Mono · GitLab (winehq.org).

[…]

Microsoft maintains a modern fork of Mono runtime in the dotnet/runtime repo and has been progressively moving workloads to that fork. That work is now complete, and we recommend that active Mono users and maintainers of Mono-based app frameworks migrate to .NET which includes work from this fork.

Previously:

Wednesday, November 27, 2024

Amazon S3 Adds Put-If-Match (Compare-and-Swap)

AWS (via Hacker News):

Amazon S3 can now perform conditional writes that evaluate if an object is unmodified before updating it. This helps you coordinate simultaneous writes to the same object and prevents multiple concurrent writers from unintentionally overwriting the object without knowing the state of its content. You can use this capability by providing the ETag of an object using S3 PutObject or CompleteMultipartUpload API requests in both S3 general purpose and directory buckets.

This will probably enable some cool stuff.

Unlisted MindNode Classic

Markus Müller-Simhofer (via John Gordon):

Despite our best efforts, we encountered difficulties bringing our planned changes to MindNode. Providing seamless sync, live collaboration, and other new features was impossible when storing documents as files on disk. We revised our plans and started to develop a new app, “MindNode Next,” that now manages its documents directly in the app and synchronizes them using CloudKit.

[…]

With the release of MindNode Next, we will soon rename the current version of MindNode to “MindNode Classic.” This name change aims to better distinguish between the two versions of MindNode. We understand that MindNode Classic holds significant importance for many of our users, and we are committed to continue supporting it. Our team will continue to work on shipping enhancements and bug fixes for MindNode Classic.

[…]

Due to a request by Apple, we had to hide MindNode Classic on the App Store.

Markus Müller-Simhofer:

This is not great for our users who want to reinstall the app (they need to use the direct link or the purchased app dialog) and I’m sure we will get several bad reviews on the new app for this. However this is better than removing it from sale since we can continue to release updates for the app.

Ken Case:

This is what we’ve done with our older apps also. Definitely better than removing them from sale! Especially for business and educational customers who otherwise had no way to install their bulk purchases.

Previously:

Brazil Rules Against Apple’s Anti-Steering Rules

Reuters:

Brazilian antitrust regulator Cade said on Monday that Apple must lift restrictions on payment methods for in-app purchases, among other things, as the watchdog moved to proceed with an investigation into a complaint filed by Latin America e-commerce giant MercadoLibre.

[…]

MercadoLibre’s complaint, filed in 2022 in Brazil and Mexico, accused Apple of imposing a series of restrictions on the distribution of digital goods and in-app purchases, including banning apps from distributing third-party digital goods and services such as movies, music, video games, books and written content.

[…]

Cade ruled that Apple must allow app developers to add tools so customers can buy their services or products outside the app, such as through the use of hyperlinks to external websites.

Tim Hardwick:

Apple has 20 days to comply or face daily fines of $43,000.

[…]

The Brazilian case mirrors similar antitrust concerns raised in the EU. In March 2024, the European Commission fined Apple €1.8 billion ($1.95 billion) for restricting music streaming apps from informing users about cheaper subscription options outside the App Store.

Nick Heer:

It would look very silly to me if Apple continues to deal with these consistent findings in country after country after country after country in individualized ways instead of updating its rules globally. Very silly, indeed.

Previously:

Update (2024-12-06): Tim Hardwick:

A Brazilian federal court has overturned an antitrust ruling that would have required Apple to allow third-party payment systems in the App Store within 20 days.

[…]

The decision came hours after reports emerged of Apple appealing the original order, with the company arguing that the required changes were too complex to implement within the given time frame.

While the injunction has been overturned, the broader antitrust investigation into Apple’s App Store practices will continue. Cade is expected to appeal the court’s decision, and Apple could still eventually be required to implement changes to its App Store policies in Brazil.