Archive for June 2022

Thursday, June 30, 2022

PowerPhotos 2.0

Brian Webster (tweet):

In PowerPhotos 2.0, it can now see and work with any photos in your iCloud photo library, and will automatically download any photos from iCloud as needed.

[…]

Photos has an export command, but it is fairly limited in what it can provide. PowerPhotos 2.0 has a new, more fully featured export function[…]

[…]

You can now open each library in a separate window in PowerPhotos, allowing for easier comparison between libraries, and dragging and dropping photos/albums between libraries.

[…]

PowerPhotos 2.0 uses a new duplicate comparison algorithm that can find more duplicate photos which are not quite 100% identical, such as scaled down copies of photos, photos that have been resaved in a different format or with different compression, and even photos with minor edits applied to them.

It’s $29.95 or $14.95 for upgrades.

Brian Webster:

Ever since the transition from iPhoto to Photos, I’ve basically just been spinning in place with PowerPhotos to keep compatible with Photos since Apple didn’t provide a good public API on the Mac. Since PhotoKit came to Catalina, I’ve finally been able to actually move forward.

Took a good year and a half or so to do the necessary rewriting to fully take advantage of PhotoKit, and add the new features I wanted. I’m hoping now I have a solid foundation for the future and adding new things to PowerPhotos won’t take so long going forward.

Previously:

Swift URL Improvements at WWDC 2022

Natalia Panferova (tweet):

Previously, to obtain the path to a file in the application folder, we had to use FileManager APIs, which are quite cumbersome. Now, we can get the paths to system folders directly from static properties on URL type.

However, it sounds like the new API—which does not throw any errors—does not guarantee that the folder actually exists.

Another great improvement is the new appending(path:directoryHint:) method, that replaces the old appendingPathComponent(_:isDirectory:). The new method accepts a DirectoryHint parameter, which indicates whether Foundation should perform a file system check to determine if the path refers to a folder. The default value is inferFromPath, meaning that this information will be inferred from the path string we pass to the method. If the string contains a trailing slash, it will be treated as a directory path.

That deserves a “finally,” because for 20+ years most code (which omits the isDirectory parameter) has been incurring overhead for accessing the file system every time a URL is created.

Previously:

Netherlands and Apple Reach External Payments Agreement

Apple:

Following productive conversations with the Netherlands Authority for Consumers and Markets (ACM), today we’re introducing additional adjustments to Apple’s plan to comply with the regulator’s order pertaining to dating apps on the App Store in the Netherlands:

In accordance with the ACM’s wishes, we’ve made adjustments to the user interface requirements announced this past March for developers who choose to use either or both of the entitlements.

[…]

The 3 percent commission discount also applies to in-app purchases that qualify for a lower commission rate (for example, App Store Small Business Program enrollees or subscription services after one year of paid service — both of which already qualify for a 15% commission).

ACM:

Apple has changed its unfair conditions, and will now allow different methods of payment in Dutch dating apps. With this concession, Apple will meet the requirements that the Netherlands Authority for Consumers and Markets (ACM) set under European and Dutch competition rules. Until recently, customers of dating apps had only been able to pay using the payment method that Apple imposed. In ACM’s opinion, Apple abused its dominant position with those practices. From now on, dating-app providers are able to let their customers pay in different ways. ACM forced these changes by imposing an order subject to periodic penalty payments. In the end, the sum of all penalty payments totaled 50 million euros.

I can’t believe the ACM is declaring victory when there’s still a 27% fee to Apple. Who would want to use this entitlement, go through all the extra work it entails, and make it harder for customers to make purchases—to end up paying more in fees?

Florian Mueller:

While a few details have changed lately, the one thing that has not changed is that Apple still charges developers such a high commission for using third-party payment systems that it would be a “net negative” for developers to implement their own payment systems (for payments from Dutch users) in dating apps. That’s because Apple’s commission is only 3% below the App Store commission, and payment services charge roughly that percentage, or potentially even more on small amounts if they have a minimum per-transaction fee.

[…]

Again, I don’t blame the ACM for not saying “we lost.” It would be the only honest thing they and Match Group could say in this situation, but for institutional reasons they can’t. However, at least they shouldn’t spout total nonsense. The part about benefits to developers and consumers is a disgrace.

Juli Clover:

Though Apple is making these changes, the company says that it does not believe these updates are “in the best interest” of user privacy or data security, and it is continuing to appeal the original ACM order.

Previously:

StoreKit External Purchase Entitlement for South Korea

Apple:

The Telecommunications Business Act in South Korea was recently amended to mandate that apps distributed by app market operators in South Korea be allowed to offer an alternative payment processing option within their apps. To comply with this law, developers can use the StoreKit External Purchase Entitlement. This entitlement allows apps distributed on the App Store solely in South Korea the ability to provide an alternative in-app payment processing option. Developers who want to continue using Apple’s in-app purchase system may do so and no further action is needed.

Those who want to use a different payment system will need to enable the entitlement in Xcode, use required StoreKit APIs, and submit a separate app binary for iOS and/or iPadOS that is distributed solely on the App Store in South Korea.

This is interesting since Apple recently removed the requirement for apps in the Netherlands to create a separate binary in order to do external purchases.

Tim Hardwick:

Apple provides developers with a list of pre-approved payment service providers (PCPs) in South Korea that includes KCP, Incise, Toss, and NICE. Developers can still use a different PSP, but it must meet the same criteria of having a secure payment processing system and an established track record of protecting user privacy. Notably, Apple will earn a 26% commission on all processed sales, despite the Korean regulator’s misgivings about commissions taken on third-party payment systems.

John Voorhees:

It’s hard to imagine that Apple’s new StoreKit External Purchase Entitlement will be attractive to many developers, given its limitations and the need to create a separate version of apps just for South Korea. I expect we’ll see this new StoreKit entitlement offered on a country-by-country basis as other countries follow South Korea’s lead, but I don’t expect it will lead to meaningful use of third-party payment processors unless and until apps are available outside the App Store via sideloading.

Previously:

Wednesday, June 29, 2022

M2 Display Limit

Benjamin Mayo (tweet):

The move from Intel to Apple Silicon meant Apple’s best-selling machines, the 13-inch MacBook Air and MacBook Pro, went backwards in one regard. They were no longer capable of driving two external displays.

But that was easily excused. It is only the first-generation of Apple Silicon after all. Although using two monitors at once is not really an edge case, it’s certainly not a dealbreaker for a base model laptop. As such, the sang was remarked upon and quickly excused as a footnote; a strange quirk of first-gen engineering.

Year two, here comes M2. CPU is better, GPU is better … and yet the one-display limitation remains.

Previously:

German Antitrust Probe Into App Tracking Transparency

Tim Hardwick:

Germany’s Federal Cartel Office, the Bundeskartellamt, has initiated proceedings against Apple to investigate whether its tracking rules and anti-tracking technology are anti-competitive and self-serving, according to a press release.

[…]

Apple said the feature was designed to protect users and not to advantage the company. However, the Bundeskartellamt’s preliminary findings indicate that while users can also restrict Apple from using their data for personalized advertising, Apple “is not subject to the new and additional rules of the App Tracking Transparency Framework.”

John Gruber:

Apple’s privacy and tracking rules do apply to itself. Apple’s own apps don’t show the track-you-across-other-apps permission alert not because Apple has exempted itself but because Apple’s own apps don’t track you across other apps.

[…]

Apple’s own advertising offerings — Search Ads — have indeed grown significantly post-ATT, but that’s not proof of self-serving.

[…]

In this new world where around three out of every four iOS users ask not to be tracked, non-tracking ad platforms benefit — including Apple’s own Search Ads.

This whole discussion is muddied by Apple’s self-serving definition of tracking. Search Ads does use App Transaction Data:

This includes historical information about users’ transactions on the App Store, including apps they’ve downloaded and in-app purchases they’ve made.

This is not considered tracking because Apple defined it to not be tracking. And Apple doesn’t even ask the customer to opt in. But if another company wants to target ads based on app purchases, that does count as tracking. This is because the purchase would have to be detected by a third-party app. The reason Apple doesn’t track you across other apps is because it doesn’t need to—it owns the store so it just gets the data directly from there. It even gets information about purchases that happen within the app because it requires that apps use its In-App Purchase system.

Nick Heer:

However, this advantage is difficult to replicate by any individual app or service. Only other gigantic companies, like Amazon and Facebook, can draw upon a trove of first-party data for ad targeting purposes. I have been arguing for the past year how it looks really bad for Apple to be setting privacy rules on its platform that restrict third-party advertisers while running its own ad network.

The solution here is not to empower others to more easily track users. If Apple is found to be illegally self-preferencing, I would hope it is resolved by allowing the continued operation of App Tracking Transparency while requiring Apple to reduce its first-party advantage.

For example, a hypothetical third-party app store would get all of the same information that Apple does without it counting as tracking. This is why the definition is so ridiculous. Imagine a third-party app store run by Facebook or Google or an app ad company. By Apple’s definition, that would all be cool because the information gathered from those sites stays within the same company. But the people that like ATT would not be OK with that. Obviously, it’s not more private if Facebook is processing the actual transaction rather than just being aware it.

This thought experiment shows that the ATT definition doesn’t get at the real issue, which is that people don’t like those companies having so much data. But there’s little questioning of the principles behind ATT because it seems to be targeting the right corporate victims.

(It’s also arguably hurting developers—who have more difficulty finding customers—and customers—who in theory don’t find as many apps that they’re interested in and also get the developers’ increased acquisition costs passed on to them—but it’s hard to measure these effects.)

In other marketplaces, a definition like ATT’s wouldn’t do much because any company selling both ads and apps/services would already have the necessary data without having to “track.” The reason ATT “works” is that Apple has a monopoly on app distribution, so no one else gets data by default. Apple’s privileged position means that the effects of ATT will be asymmetric—Apple will benefit and its competitors will be harmed.

Of course, you can look at this whole situation and see it as a good thing for customers, on balance. In theory, it is good for their privacy, though in practice my understanding is that Facebook really cares more about customer segments than individuals. It’s just that they need the individuals’ data in order to derive the segments data. You can also say that Apple has pure motives, and I think they largely do. They’ve created an interlocking that benefits them, but I think they would still do ATT even if for some reason they couldn’t do search ads. But is what’s in the hearts of Apple’s decision makers what determines whether the policy is self-serving? Or is it the policy’s effects, which I think it is hard to argue are not anti-competitive?

Florian Mueller:

This leads to the second unique aspect of the German FCO investigation (the first one was the gatekeeper statute): that country is known for a very strong data privacy movement.

When the French Adlc declined to order interim measures against Apple, it was too early to demonstrate Apple’s self-preferencing. That’s not an issue now, and the German FCO has raised the issue. We may see some really interesting Franco-German dynamics in this context.

Previously:

Passkeys

Meet passkeys (Hacker News):

Learn how to add support for passkeys to create a quick and easy sign in experience for people, all while offering a radical increase to account security. Passkeys are simple and strong credentials built to eliminate phishing attacks. We’ll share how passkeys are designed with security in mind, show you how people will use them, go over how to integrate passkeys in your log in flow, and explore the platform and web APIs you need to adopt this feature.

The developer documentation is here. I don’t understand the slide at the end where it says that Passkey protects against device theft but a password manager (maybe) doesn’t.

Other questions:

Kuba Suder:

If these “passkeys” are stored in a safe way protected with biometrics… how do I log in using them on my 2019 iMac with no secure enclave?

Dan Moren:

The addition of passkeys should also remove the need for multifactor authentication—no more entering codes from an app or via SMS. That was always an additional feature provided because of passwords’ inherent insecurity, but the way in which passkeys work makes it unnecessary.

[…]

One additional question that has now been answered for passkeys is what happens when you’re logging in on another device, either from Apple or another manufacturer. The FIDO Alliance that backs the passkey standard (of which companies like Apple, Microsoft, Google, and Amazon are all members) has an approved solution: a QR code that you scan with your phone, providing a secure way to log in.

The methodology behind this process is fascinating: among other things, the authenticating device (likely your iPhone) creates a Bluetooth-based relay server which, by the very nature of Bluetooth’s limited range, helps ensure that you are in fact in proximity to the device into which you’re logging in. That makes it much more difficult for phishers to trick you into giving up your passkey: sending you a QR code in an email or text message won’t work because it won’t be able to get access to the Bluetooth connection.

Dan Moren (also Bruce Schneier):

Andrew pointed me to a blog post by Terence Eden, which contains a bit of a thought experiment on what happens if you have a catastrophic accident (say, a house fire) and lose access to all your devices[…]

[…]

Well, there are recovery methods in place, as you might suspect. Apple talks broadly about them in a support article[…]

Apple:

To recover a keychain, a user must authenticate with their iCloud account and password and respond to an SMS sent to their registered phone number. After they authenticate and respond, the user must enter their device passcode. iOS, iPadOS, and macOS allow only 10 attempts to authenticate. After several failed attempts, the record is locked and the user must call Apple Support to be granted more attempts. After the tenth failed attempt, the escrow record is destroyed.

It sounds like anyone who can get into your Apple ID account and either see your phone notifications or redirect an SMS message can delete all your passkeys.

Glenn Fleishman:

A passkey replaces two-factor authentication, and it’s worth breaking down why, as it seems counter-intuitive: how can a single code held on a device provide distinct aspects of confirmation? The rubric for multiple security factors is usually stated as at least two of “something you know, something you have, or something you are.” A passkey incorporates at least two of those:

  • Something you know: While commonly thought of as a password, the “know” part is really any fixed piece of information you possess. Think of a 20-character randomly generated password stored in your password manager. Do you “know” that? Yes, in the sense that it’s retrievable exactly as entered.
  • Something you have: Because passkeys are locked to devices, you prove your possession of a device by unlocking the passkey: no device, no passkey.
  • Something you are: Although passkeys don’t require biometric authentication using Face ID or Touch ID, it’s an option. Apple always lets you use a device passcode to backstop Face ID or Touch ID, so it’s a blurred line with “something you know” compared to a dedicated biometric device with no fallback option.

In what sense are passkeys locked to a device if they are syncing via iCloud Keychain? Is the idea that they must be on one of your devices because there is no way to export them?

Update (2022-06-30): Meek Geek:

What if something was broken with your Apple Card and Apple says you owe them money, or if you’re a developer who ran afoul of Apple’s App Store rules?

Would a suspension of your iCloud account mean that you lose access to all your passkeys?

Previously:

Tuesday, June 28, 2022

Creating Custom Extension Points for Mac Apps With ExtensionKit

Guilherme Rambo (tweet):

We’ve been able to develop extensions for Apple’s apps and operating systems for a while, but Apple never offered a native way for third-party apps to provide custom extension points that other apps can take advantage of.

With ExtensionFoundation and ExtensionKit on macOS, now we can.

However, Apple’s documentation lacks crucial information on how to use these new APIs (FB10140097), and there were no WWDC sessions or sample code available in the weeks following the keynote.

Thanks to some trial and error, and some help from other developers, I was able to put together some sample code demonstrating how one can use ExtensionFoundation/ExtensionKit to define custom extension points for their Mac apps.

Update (2022-06-30): Jesper:

This is not the first time I’m getting these vibes from Apple frameworks; IOSurface and its ilk has been like that, and the sessions on ScreenCaptureKit were almost comical at their circuitous avoidance of describing what you actually do with the audio/video buffers you are handed.

[…]

Apple is big enough that it’s time to grow beyond the scrappy image, respect developers both inside and outside the company and allocate time and opportunity to move beyond “no overview available”.

BBEdit 14.5

Bare Bones Software:

If a language server includes “quick fix” information in a diagnostic (error/warning) that it returns, BBEdit will add a “Fix” button to the diagnostic’s item in the popover list.

[…]

Added “Tail Mode”: when turned on, BBEdit will move the insertion point to the end of the file if it is changed while BBEdit has it open.

[…]

The Find, Multi-File Search, and Pattern Playground windows get an additional cheat sheet for the “Replace” field. This provides a quick reference for constructing Grep replacement patterns.

[…]

Added finer-grained control over invisibles display: it is now possible to explicitly turn on (or off) display of spaces and line endings when “Show Invisibles” is enabled.

[…]

When Auto-Indent is turned on, “New Line Before Paragraph” and “New Line After Paragraph” will indent the inserted line by the same indentation as the line on which the command was invoked.

Previously:

Update (2022-07-01): Dr. Drang:

What I like about Tail Mode is that it works like tail -f but by doing so in a BBEdit window, all my ingrained habits for searching and copying text will work, which they don’t in Terminal or iTerm.

[…]

Although I have a feeling Rich Siegel will soon have a bbtail command to go along with bbdiff and bbfind, I couldn’t wait. Here’s my combination shell script/AppleScript[…]

Monday, June 27, 2022

OmniFocus Plug-Ins for Deferring Actions

Nicholas Riley:

There must be a word for procrastinating by building tools that aid in deferring tasks.

[…]

The idea is that when the defer/due dates have passed, it’s easier to say “I want to do this starting tomorrow, or due tomorrow” rather than “I want to do this starting a week after the prior due date”.

Most of my OmniFocus projects are parallel or single action lists, so I prioritize and hide actions that I don’t want distracting me by setting defer dates. I’ve long used an AppleScript to defer actions to the next day or week.

Riley has created some Omni Automation plug-ins to do this sort of thing. This means that they can work on iOS, too. It’s neat how the plug-in can tell OmniFocus when its action should be enabled. It can also use a form to ask the user for input, and this works appropriately on both macOS and iOS.

Previously:

WorldWideWeb App

Craig Hockenberry (Hacker News):

About a decade ago, things started to change. Since then it’s gotten harder and harder to start a simple web server for testing HTML, CSS, and JavaScript. I eventually found a way to do it using AppleScript, but as Apple continues to remove open source components from its standard macOS distribution, this workaround isn’t likely to last.

So I decided to write my own web server app.

Alex Guyot:

Solidly developer-focused in scope, the app serves files from a local directory to an automatically generated URL, making these files available to any device on your local network.

[…]

WorldWideWeb enables developers to easily open their in-development website on an actual smartphone- or tablet-sized device rather than using a simulator. They can then make changes to their files and simply reload the browser tab to see those changes live.

[…]

The story here is quite a bit different for the iPad and iPhone. These devices have previously had no well-known way to achieve the functionality that WorldWideWeb is providing, and certainly not with all the ease and elegance of an app by The Iconfactory. Now, alongside the excellent code editor Runestone (which I covered here last month), WorldWideWeb completes a potential end-to-end pipeline for web development on Apple’s mobile platforms.

I wonder how iOS multitasking treats this. I’ve certainly had problems using VLC’s Web server, because simply tapping a notification or going into Settings puts the app in the background, killing the HTTP connection. I guess that shouldn’t be an issue when serving small files, though, and it doesn’t support PHP or CGI scripts that might run for a while, though the new version does use WebSockets:

Craig Hockenberry:

The main improvement in version 1.0.1 is “auto refresh”. As you edit the text files in your Website Folder, the app watches for changes. When an update is detected, a web socket is used to send a notification to the browser that causes a refresh.

A small bit of JavaScript is injected into every HTML page to make this happen, and the feature can be disabled if that causes a problem.

Previously:

Update (2022-06-30): WorldWideWeb plays audio in the background in order to keep the network connection alive.

Previously:

Exporting/Archiving E-mail From Apple Mail

Miles Wolbe:

Mail’s built-in export (and import) methods suffer from various limitations and bugs; the following tests were run under macOS 12.4 and Mail 16.0[…]

Of course, I recommend EagleFiler for this, which offers a variety of ways of importing from Apple Mail.

1. Mailbox → Export Mailbox...

I’m not sure what’s causing the importing problem that he mentions, but historically the Export Mailbox… command has not generated valid mbox files. I have not seen the “some messages could not be imported” error when importing properly formed mbox files, such as those generated by EagleFiler.

2. Click and drag multiple messages from Mail to Finder

You can also do this to export messages from EagleFiler, if you want to convert them from mbox to .eml format. Unlike Mail it doesn’t fail for messages with long subjects.

3. AppleScript

Many scripts, such as the mentioned Export Selected Mail Messages, will corrupt message data because they don’t properly handle a bug/oddity in Mail’s AppleScript support. Mail types the source AppleScript property as text when really it should be treated as raw data. If the script retrieves the source as a Unicode string and then writes it to a file, the non-ASCII bytes will be altered.

EU and Possibly US to Require USB-C for Phones

European Parliament (via Hacker News):

By autumn 2024, USB Type-C will become the common charging port for all mobile phones, tablets and cameras in the EU, Parliament and Council negotiators agreed today.

[…]

Under the new rules, consumers will no longer need a different charging device and cable every time they purchase a new device, and can use one single charger for all of their small and medium-sized portable electronic devices. Mobile phones, tablets, e-readers, earbuds, digital cameras, headphones and headsets, handheld videogame consoles and portable speakers that are rechargeable via a wired cable will have to be equipped with a USB Type-C port, regardless of their manufacturer.

Jon Porter:

The single biggest impact of this legislation is likely to land on Apple’s iPhone. While the rest of the smartphone industry has gradually converged around USB-C as a single, standardized wired charging port, Apple has steadfastly stuck with Lightning, the proprietary connector it introduced with the iPhone 5 way back in 2012. The EU’s legislation could finally force it to move on.

The EU’s rules are just a provisional agreement for now and will need to be approved by both the European Council and European Parliament before they become official. That’s expected to happen after summer recess, which ends on September 1st.

Rosyna Keller:

Of course, even with such mandates, Type C would still have the same major flaw Type B, Mini USB, and Micro USB all suffer from: the “male” connector is on the device, not the cable, and that tiny little part can break of or become misaligned, requiring port replacement.

I’m less worried about that than I used to be because I now use primarily wireless charging. I’m more likely to use a cable when travelling, and that’s when it’s frustrating to need separate cables for Lightning. With newer iPads using USB-C, too, Lightning is not even ubiquitous among Apple devices.

Chance Miller:

Now, a group of senators in the United States is looking to follow suit, calling on the US Commerce Department to adopt a similar policy to address the “lack of interoperability standards for charging and other device accessories.”

[…]

According to the senators, proprietary charging standards such as Apple’s Lightning port are an example of “planned obsolescence” that is “expensive and frustrating for consumers, and drives the proliferation of electronic waste.”

I don’t think it’s “planned obsolescence.” Switching now would generate more waste in the short term, as customers discard their Lightning stuff. Maybe it would reduce waste in the long term, though it’s not clear to me how these proposals address the long term, i.e. how we will ever move beyond USB-C after it’s been mandated.

Juli Clover:

The next-generation AirPods Pro could come with a long list of new features that include heart rate detection, the ability to function as a hearing aid, and a USB-C port according to a report from 52Audio.

Granted, I think a USB-C AirPods case has been rumored ever since the first version.

Previously:

Friday, June 24, 2022

Xcode 14: High Sierra and Later

Xcode 14 Beta 2 Release Notes:

Xcode 14 supports building applications that target macOS 10.13, iOS 11, tvOS 11, watchOS 4, and later.

In other words, Xcode 14 is dropping support for macOS 10.9 through 10.12. Note also that Xcode 13 doesn’t run on macOS 13. There’s pressure from both sides to discourage developers from supporting macOS Sierra and earlier.

Saagar Jha:

Yeah, this is really going to suck. Some of our users have old Macs that can’t update to Sierra (which dropped support for several computers :/)

All in all, it’s not a good year for those with older devices:

Looking back to the previous transition, the first Intel Macs were released in 2006 and ran Tiger. Snow Leopard was released in 2009 and dropped support for PowerPC Macs. Lion was released in 2011 and dropped support for Rosetta.

Previously:

Update (2022-06-27): Howard Oakley:

Caught in the middle are Mac users, who won’t see Apple forcing third-party developers to drop support for those older versions of OS X, but will inevitably blame the developers instead. It’s thus a perfect management solution, as it reduces the cost of customer support but shifts blame for the consequences away from Apple onto third-parties.

[…]

As usual, Apple remains silent. Nowhere in its presentations at WWDC, nor in the list of Ventura’s new features, does Apple state that it’s pulling support for four versions of OS X/macOS up to Sierra, inclusive.

[…]

I’m afraid it’s simply not feasible for small developers to maintain two versions of their source code, building in two different versions of Xcode, on two different versions of macOS, especially when many of us are trying to migrate to Apple silicon for development.

GitHub Copilot Is Generally Available

Thomas Dohmke (Hacker News):

Today, I am thrilled to announce that we are making GitHub Copilot generally available to individual developers. Your AI pair programmer is here.

With GitHub Copilot, for the first time in the history of software, AI can be broadly harnessed by developers to write and complete code. Just like the rise of compilers and open source, we believe AI-assisted coding will fundamentally change the nature of software development, giving developers a new tool to write code easier and faster so they can be happier in their lives.

[…]

GitHub Copilot wouldn’t be possible without GitHub’s vibrant community of students and creators. To support and give back to those communities, we’re making GitHub Copilot available for free to verified students and maintainers of popular open source projects.

FOSS Post (via Hacker News):

Some open source software developers argued that the resulting neural networks is a derivative work of the GPL work, and hence, should be demanded to be released under the GPL license as well.

GitHub’s current CEO said that from their point of view, they see this as a part of “fair use”; which implies that using few lines of modified codes from a public source code is not enough to establish any type of lawsuits against them[…]

However, others argue that the neural network outputs (on the average of a 0.1% probability) copy-pasted snippets from various repositories on GitHub, and hence, it can not fall under fair use[…]

ReinH (via Hacker News):

github copilot is incredible. it just sells code other people wrote, but because it’s an “AI” it is apparently allowed to launder that code without it being a “derivative work”.

Previously:

Customize the Contextual Menu of a Mac WKWebView

Alexander Clauss:

Under iOS the WKWebView class provides a delegate method which allow to customize the contextual menu of the web engine (the menu which opens when long-pressing a link). Unfortunately under macOS the WKWebView does not provide such a method for its contextual menu. This article explains how you can customize the contextual menu of WKWebView under macOS as well. It’s not that obvious how to do this, but it can be done.

Yandex CEO Resigns

Simon Sharwood (Yandex, Hacker News):

Arkady Volozh, CEO of Russia’s biggest internet company Yandex, has resigned after being added to the European Union’s list of individuals sanctioned as part of its response to the illegal invasion of Ukraine.

Yandex is an analogue of Google, having started as a search engine and then added numerous productivity, cloud, and social services.

[…]

The document also accuses Yandex of “promoting State media and narratives in its search results, and deranking and removing content critical of the Kremlin, such as content related to Russia’s war of aggression against Ukraine.”

Reuters (via Hacker News):

Volozh, who co-founded the Yandex search engine in 1997, was put under EU sanctions on Friday after the bloc accused him of “materially or financially” supporting Russia, which sent tens of thousands of troops into Ukraine on Feb. 24.

ddtaylor:

Yandex does one thing that most other search engines refuse to do: search for hashes. If you take a hash and put it into Google, Bing, etc. they basically refuse to search for it unless it’s a “well known” hash.

Previously:

Thursday, June 23, 2022

Festival of Artisanal Software: Summer 2022

SummerFest:

The new season brings new plans, fresh projects, and great new ideas. Whether you’re mapping out your next novel, finishing your dissertation, planning a product, or writing memories for your grandkids, these great tools will help. As is our custom in this season, we’re hosting a gathering of software artisans who are working to transform research and writing for a new era. We’ve all finished our latest updates, we’re working together to save you lots of money. Get the tools you need at a terrific price, for a very limited time.

This is your chance to get EagleFiler and SpamSieve, both recently updated, for 25% off with coupon code SUMMERFEST2022. They’re joined by some great apps from indie Mac developer friends, including: Hook Pro, HoudahSpot, MailSuite, Mellel, Nisus Writer Pro, and Tinderbox.

Also check out the apps from Flying Meat, which are now $20 to celebrate 20 years in business.

Finding the “To” Address in iOS Mail

Matt Birchler:

Mail helpfully shortens the “To” value to just me, which is fine, but I would expect to be able to tap on my name and see which email address this was sent to. Instead, I get this[…] It just loads my contact card with all my emails listed.

This has been bothering me for a decade, too.

I’ve gotten a few messages from people suggesting that the contact card should show the “recent” tag next to the email I’m coming from. If that’s the intended solution, I still have two questions, though. One, why is the label “recent”? Something like “this email” or anything more descriptive would be nice. And two, maybe it’s a longstanding bug, but as I mentioned above, the correct email wasn’t the one labeled “recent” in my example, so I don’t feel like this is a reliable thing to look for.

Testing SwiftUI for Mac After WWDC 2022

Sarah Reichelt (tweet):

In December 2019, I wrote a series of articles about using SwiftUI to build a Mac app. And in July 2020, I re-visited the sample app to apply the new SwiftUI features made available in macOS BigSur. Now that macOS Ventura and Xcode 14 are in beta, it’s time to build the app again while learning how to incorporate the new APIs.

[…]

macOS apps can have multiple windows open at once, and in previous iterations of SwiftUI, it has been difficult to detect the active one. Last year, we got @FocusedBinding but it didn’t really work. This year it works, but we also have a new EnvironmentValue called controlActiveState.

[…]

This year, we have a new method that uses another new EnvironmentValue called openWindow. […] If you create a Window scene instead of a WindowGroup, not only does this become a single presentation window, but you get a menu item for it in the Window menu without any extra work. You can add a keyboard shortcut to the Window scene too. Supposedly, you can add default sizing and positioning, but they don’t appear to work yet.

[…]

I achieved something I was unable to do last time and that is to make the text edit field have focus when the view opens.

Previously:

Update (2022-06-24): Thomas Clement:

Unfortunately, [List has the] same terrible perf in Ventura.

Update (2022-07-05): See also: Hacker News.

Flag Icons to Change the Input Source

John Gruber:

[As] part of a company-wide effort to decouple national flags as icons to denote languages, the Input menu in MacOS now uses two letter codes instead (“US” for U.S. English, “GB” for British, etc.). [The] new policy does make sense for Apple — national flags carry political connotations that languages alone do not — but it’s unfortunate for users accustomed to scanning the menu for colorful icons at a glance when switching.

Two third-party developers have come to the rescue, with similar apps that restore the “pick a flag to change input sources” functionality[…]

Previously:

Verified Brand Logos in Apple Mail

Joe Rossignol:

iOS 16 and macOS Ventura add support for the Brand Indicators for Message Identification (BIMI) standard in the Mail app, helping users to easily verify authenticated emails sent by brands by displaying the brand’s logo alongside the email’s header.

[…]

For a brand’s logo to be displayed, the sender’s domain must pass DMARC authentication checks, according to the BIMI Group website. If the email passes authentication, the Mail app queries the DNS for a corresponding BIMI record.

Maybe this will help with phishing.

Previously:

Wednesday, June 22, 2022

Limiting iMessage’s Disk Usage

Steve Troughton-Smith:

It blows my mind that Apple lets Messages-in-the-cloud suck up all the available local storage without giving you any real way to cap or reduce its size on disk without deleting the masters in iCloud. Can’t uninstall either. This is the real scam making 64GB iPads unworkable.

This bs is literally an OS upgrade blocker, would prevent you from getting security updates.

I ran into this recently as well. There are some controls in Settings to delete Top Conversations or Photos/Videos attachments, but those delete the content from Messages in iCloud, too. What if you just want to prune the local cache?

If you do decide to delete select attachments completely using Settings, I’ve found this to be buggy. After deleting some items, the list doesn’t refresh to show more, so you can’t delete any more even though there are still GBs on the phone.

Deleting from the Mac is also buggy. You can open a conversation’s info and bulk-select thumbnails—much easier than on an iPhone—but pressing Delete doesn’t actually bulk-delete them. It seems to only delete one attachment, and not always the first one selected.

The only reliable way that I’ve found to prune Message’s storage use is to set it to only Keep Messages for One Year. (It would be nice to be able to keep a bit more conversation history, but the only longer option is Forever.) Plain text messages, which take up very little space, get deleted, too, even though you really only wanted to free up space by deleting large attachments. And the messages are removed from the cloud and all devices, not just from the one that had limited storage.

What if you want to make a backup before deleting them from your iPhone—which will, via syncing, also delete them from your Mac? The Messages app has no export feature. There used to be a limited feature for automatically saving chat transcripts, but this was never in the iOS version, and Apple removed it from the Mac version when rewriting Messages using Catalyst.

Previously:

Update (2023-01-19): Nick Heer (Mastodon):

When I checked the iPad Storage menu, I saw the biggest source of my disk space problems: over 11 GB used by Messages.

This makes no sense. I do not often use Messages on my iPad. I have iCloud for Messages enabled, so my device should only be downloading messages and attachments as needed.

[…]

As written, this sounds like it is a way to control the cache of messages downloaded to your device. If “30 days” is selected, you should see only the past month’s worth of messages on your device and anything older than that will need to be downloaded on demand. But it is so much worse than that: because it syncs, it actually erases all messages in iCloud older than thirty days — permanently. This is the only warning you will get.

[…]

[There] are no controls for managing iCloud for Messages. There is no way to purge the local cache from one device without those changes syncing across all devices. The only way I was able to install this software update was to restore my iPad and set it up from scratch.

SwiftUI Scrolling Finally Works on tvOS

Daniel Saidi:

One example where SwiftUI ended up costing me both time and money, was the first tvOS project that I did on my newly started company.

[…]

Scrolling with HStack, VStack (and in SwiftUI 2), LazyHStack, LazyVStack, LazyHGrid, LazyVGrid just didn’t work. The scrolling was lagging so badly that the whole project was in jeopardy.

[…]

I finally solved this by wrapping a UIKit UIScrollView in SwiftUI, which I describe in this article. It was not ideal, but did let me ship the app with minimal changes to the overall architecture. The app was well received by the users and later ported to iOS and iPadOS, where SwiftUI did deliver on its promise and let me create these new apps quickly, building on the same foundation as the tvOS app.

Apple have never mentioned these problems or recognized them in my bug reports, but I eventually got confirmation during last year’s WWDC labs, that the problem does originate from the framework, and not from my code.

Previously:

iOS 16 Automatic Verification

Joe Rossignol:

Tapping on images of traffic lights or deciphering squiggly text to prove you are human will soon be a much less common nuisance for iPhone users, as iOS 16 introduces support for bypassing CAPTCHAs in supported apps and websites.

[…]

Apple recently shared a video with technical details about how the feature works, but simply put, Apple’s system verifies that the device and Apple ID account are in good standing and presents what is called a Private Access Token to the app or website.

John Gruber:

Color me more optimistic today than yesterday: two of the draft spec’s authors are from Google, so maybe they will go all-in for this.

Matt Birchler:

Something I didn't know for a while, but is a thing, is that reCAPTCHA v2 and v3 are completely different, and v3 tries to have a frictionless setup as well.

Previously:

Broken Renewal of MAS Receipts

Lukas Kubanek (FB9789052, tweet):

I started integrating on-device App Store receipt validation into my Mac app, currently not utilizing StoreKit for any kind of in-app purchases. I followed the documentation and employed a check that calls exit(173) if the receipt is invalid. According to the documentation, this should trigger a renewal of the receipt. When I launch the app from Xcode’s build folder for the first time, I get correctly presented with the App Store login window. After entering credentials of a sandbox user configured in App Store Connect, the app quits, relaunches, and then the following dialog appears:

“MyApp” is damaged and can’t be opened. Delete “MyApp” and download it again from the App Store.

This has been broken since around the release of Monterey. This makes it impossible to test the Mac App Store builds of my apps before submitting them to the store. Fortunately, my receipt validation code is already written and working reliably, because I don’t know how I could fully test it without being able to download a receipt.

The mentioned issue doesn’t only occur in the sandbox but also for production apps. When removing the _MASReceipt folder from the production app, it’s supposed to renew the receipt when launched. Instead, the same dialog informing about the damaged app is shown, and the app has to be re-downloaded entirely from the Mac App Store.

Previously:

Update (2022-06-27): Oddly, Apple seems to have fixed the longstanding problem the next day.

Tuesday, June 21, 2022

Mail Merge Returns to Pages

Dan Moren:

The feature was originally included in Apple’s word processing software, but got the axe in 2013’s version 5.0, when Apple redesigned its iWork suite to give even footing across the iOS, iPadOS, and macOS platforms. In the interim, Mail Merge remained possible only via workarounds like Sal Soghoian’s Pages Data Merge app.

Version 12.1, released today, brings a brand new implementation, however, which lets you populate a template document either from your contacts or a spreadsheet. On the Mac, just create a template with the File > New command or open an existing one, and then choose File > Mail Merge to step through the process. (The feature’s also available for the first time in the iOS and iPadOS versions of Pages, under the three dots menu: tap Mail Merge to start the process.)

Previously:

Update (2022-06-24): Juli Clover:

These are minor version 12.1 updates, and each app has received a few new features, as outlined below.

John Gruber:

Second, the fact that workarounds like Soghoian’s Pages Data Merge were even possible in the interim shows the essential nature of good automation/scripting support in serious apps. Automation isn’t so much about letting all users script apps, because we all know most users aren’t scripters. But automation lets the users who are scripters provide solutions for the whole community of users.

See also: Hacker News.

SwiftUI Change Log

Kuba Suder:

I made a thing: SwiftUI Index/Changelog - an alphabetical index of all SwiftUI views, modifiers, property types etc. + changelog for each version, auto-generated from official documentation.

See also: Code Workshop and SDK News.

Previously:

Review of the Mighty Browser

Jacob Russell (via Hacker News):

At its core, Mighty lets you run a chromium browser in a virtual machine on a beefed up computer that streams the data to your personal computer. Mighty’s bet is browsers will start to act more like operating systems where more and more activities will happen via web apps as opposed to native apps. By providing 2 Gps of bandwidth, 40 GB of RAM, and 8 vCPUs to each browser instance this becomes a serious value proposition and starts to remove the downsides of web versus native applications.

I’ve switched nearly my entire workflow to web applications with Mighty: Slack, Teams, Outlook, Discord, WhatsApp, as well as resource intensive web applications like Miro, Figma, Jira, and Notion. Being able to have all of these apps open in my browser while still maintaining lightning fast responses is a game changer. I can have all of these apps open without my fan coming on saving me from being “the fan guy” in the meeting as well as saving me a significant amount of battery life throughout the day.

He doesn’t say what hardware he’s using. Is there any benefit—e.g. because of their faster Internet conection—if you already have a fast computer? Otherwise, I guess is this like renting a new computer—that’s only faster for Web stuff—for $30/month. Plus, maybe there are some features that make the browser itself better.

Previously:

Update (2022-06-22): Or, I wonder if it helps in cases where you have a fast computer but a slow or high-latency connection.

WWDC Lab More Useful Than Feedback

Apple:

Bugs are an inevitable part of the development process. Though they can be frustrating to bump up against, you can help squash these sorts of problems quickly by identifying the issue you’re running into, reproducing it, and filing a bug report through Apple’s Feedback Assistant.

[…]

You should always file feedback for any bugs you find while developing for Apple platforms; after all, we can’t fix problems we don’t know about. But how can you be sure that the information you provide is helpful for triaging the issue, rather than a bug-solving dead end? Here are our top tips for making sure your bug report is clear, actionable, and — most importantly — fixable.

Casey Liss (tweet, Hacker News):

Very quickly upon getting to work on my new computer, I realized that things weren’t working properly on this new machine. After some research, it appeared that some aspects of the Vision Framework were not available on Apple Silicon based Macs.

[…]

In the roughly 225 days since I filed that feedback, I received precisely zero… well… feedback.

[…]

I didn’t expect much to come of this [WWDC] lab[…]

[…]

Having my problem worked around, in the span of five minutes, with a single-line code change is both delightful and incredibly frustrating.

Frustrating because he took the time to file a good bug report with no response, frustrating because labs are only available once a year and not everyone can get in to one, frustrating because Apple was already aware of the bug but had neither fixed it nor documented the workaround.

Previously:

Monday, June 20, 2022

Removed From Bing and DuckDuckGo

Jeff Johnson (Hacker News):

It turns out that my business web site was removed from Bing, which explains why it’s missing from DuckDuckGo.

[…]

According to the link in the results, “Bing limits removal of search results to a narrow set of circumstances and conditions to avoid restricting Bing users’ access to relevant information.” Yet none of these circumstances would seem to apply to my web site, so it’s a mystery.

[…]

A few other people I know, including Jesse Squires, have also seen their web sites mysteriously removed from Bing and DuckDuckGo. Jesse’s site is still missing! Jesse’s blog post links to a blog post by Chase Watts, Affiliate Manager at GoDaddy, who explains an exploit in Bing that allows website owners to deindex competitors, so it’s possible that this is what happened to me.

Jeff Johnson:

A whole thread full of people whose web sites have been inexplicably removed from Microsoft Bing and search engines that rely on Bing, such as DuckDuckGo.

Other people, myself included, are seeing problems where sites are clearly not removed, but neither do they seem to be fully indexed.

Scott Yoshinaga:

@gruber using the DuckDuckGo search in your archive section returns very limited results. I believe it used to be better. I’ve noticed this for my website that uses their search engine as well.

[…]

Also strange: a search term may not have any results return, but if I reload the page multiple times, search results appear eventually.

Previously:

Update (2022-06-24): Jeff Johnson:

Myself and @jesse_squires are both restored to Bing and DuckDuckGo.

No explanation given.

Update (2022-07-26): Jesse Squires:

I originally discovered and wrote about the issue in late March. Jeff published his post a few months later in June. I also received a number of emails and tweets from readers facing the same problem. It really felt like everyone was having this issue. Yet, no one — including DuckDuckGo’s own CEO — seemed to know what the fuck was going on.

[…]

[Bing] confirmed my site committed so-called violations, but refused to tell me what.

[…]

Fast forward almost exactly one month after Bing Support’s response. Ostensibly and miraculously my site is no longer violating Bing’s guidelines.

[…]

However, results on DuckDuckGo still seem incomplete compared to what they used to be, especially compared to Google.

Update (2022-08-02): Relja Novović (via Jeff Johnson):

My websites just got erased from their search results – overnight!

[…]

The first question to ask when something like this happens is: “what did you do/change/update?” The answer is, as far as I remember and can tell – nothing.

[…]

To add insult to injury, when you “Google” the term “BikeGremlin” on Microsoft Bing or DuckDuckGo, SERPs show BikeGremlin social-media accounts and results from a website “bikehow.com” that has literally copied my articles and re-published them!

Update (2022-11-01): Nicolas Magand:

This week, I tried one more time to get in touch with Bing support, I guess this makes it the seventh or eighth time. In a couple of days, I expect to receive a generic email saying that my website doesn’t follow Bing’s guidelines, without saying anything more, even if my website apparently follows every guideline. I have a background in SEO, I write original content, I have a very clean website, I use Bing Webmaster Tools and Google Search Console, and I can’t find anything wrong. I can’t find any reason for this removal. I can’t find any solution to this problem. Clearly, this is a Bing issue, and they are extremely bad at fixing it, or at least point their users to the right direction.

Update (2023-01-18): Dave Rupert (Hacker News):

Why on earth would Bing not index my site at all? To solve this, I took the first step and signed up for Bing Webmaster Tools to try to know what Bing knows about my site and sure enough: zero clicks, zero impressions, and zero indexed pages for my site. Awful.

Jeff Johnson:

Sure enough, https://underpassapp.com is now missing again from both Bing and DuckDuckGo!

My personal site https://lapcatsoftware.com was never removed from Bing or DuckDuckGo. Only my business site is missing.

Update (2023-08-18): Nick Heer (Mastodon):

[This] appears to be a somewhat common issue where Bing — and, consequently, the many small search engines which rely on its results — will completely de-index a website for no apparent reason. Bing still shows zero results for a query for site:techdirt.com, though it does again say “some results have been removed” and links to a generic help page.

Kagi Search and Orion Browser Public Betas

Kagi (Hacker News):

I (Vladimir Prelovac, Founder) started this company when I saw my children starting using the web and realized how unsafe and bad an experience it was for them. All the ads and distractions were not only detrimental to their experience but also were influencing their behavior and habits from a very young age. No alternatives exist or the ones that I tried were not good enough. I have spent the last four years bootstrapping this project, with a small team and building tools to make using the web decent again.

[…]

Today Kagi search and Orion browser enter public beta.

[…]

Kagi search comes as a free version with limited use; and an unlimited use paid option at $10 a month, both completely ad-free, tracking free, and with no search data being retained.

$10/month is not too much for the user to pay if it’s really great, but I don’t see how that can be sustainable for Kagi if it only pays their costs for 2–3 searches per day. Do most users, of the type that would pay for something like this, search far less than I do?

I’m not really sure how to think about the privacy angle. It sounds great, but—as with other search engines—you have no way to know whether they do what they say. The business model doesn’t incentivize them to track you, but how can they improve their algorithms if they truly don’t retain any data? And if they wanted to—or were compelled to—track people, it would arguably be worse than Google because they have your billing information so they know who you are. I’m not saying there’s anything particular to worry about here, just that I would not assume that any Web searches from your own device are fully private.

Anyway, I’m giving Kagi search a try and will report back. So far it definitely seems to have fewer spammy results. Mainly, though, I want to be able to find pages that don’t show up in Bing or Google at all, which is a tall order considering that it doesn’t have its own full index of the Web.

FAQ:

Kagi Search already has many unique features, like personalized results and “Lenses”. And because we depend only on our users for revenue, Kagi can and will always offer a much richer search experience for the user.

[…]

We use heuristics and deep learning to understand query intent, select the best information sources, query them directly using APIs, and rank the results. You can think of Kagi as a “search client,” working like an email client, connecting to indexes and sources to find relevant results and package them into a superior, secure and privacy-respecting search experience for you.

Our searching includes anonymized requests to traditional search indexes like Google and Bing as well as vertical sources like Wikipedia and DeepL or other APIs. We also have our own non-commercial index (Teclis), news index (TinyGem), and an AI for instant answers.

[…]

Kagi features a ‘login token’ which is simply a URL parameter that you can use to automatically log you into your existing Kagi session, from anywhere, including using search within private browser sessions. You can visit Account settings to get your login token.

Vladimir Prelovac:

Kagi doesn’t need a lot of users, because as I said, we are not a Google killer. Google has a huge moat, and a 20 year headstart, and the web is now much harder to crawl than it was 20 years ago, so we will probably never have Google scale, but we don’t need it.

We are trying to build a sustainable business for a small subset of users who think differently. We just need a couple of tens of thousands of such users to be sustainable, and that’s our first milestone.

[…]

The non-commercial indices can have a big impact on the quality of results since it helps us avoid spam, SEO optimized content, and pages riddled with ads. It also allows us to get expert opinions from small websites and personal blogs.

Vladimir Prelovac:

Maybe it will sound strange, but I do not think of our goal as optimizing for growth and number of users. It is to optimize for sustainability and quality of product.

See also: Why Google is so unbearable (and how to fix it) (via Hacker News).

Previously:

Friday, June 17, 2022

Thoughts on SwiftUI After WWDC 2022

Casey Liss:

Dear Apple developers,

Buckle up, or get left behind.

💙,
Josh Shaffer

I’m super pleased that Apple has picked a direction, and is [slightly more consistently] pointing in a single direction.

However, even as someone who [mostly, on a good day] enjoys SwiftUI, this is probably writing a check that SwiftUI can’t quite cash.

I want to believe. Apple announced lots of changes that look great and seem to address common pain points. What’s less clear is whether the new stuff works as advertised and what the current feature and performance limitations are. From a Mac perspective, I sense that some problem areas are still outline views, focus, and large amounts of data.

In which ways is it safe to try SwiftUI because if it doesn’t work out you can easily revert that component to AppKit or UIKit? In which ways is that more risky because it affects the structure of the app such that it cannot easily be excised?

To me, the Cocoa-to-SwiftUI transition feels very different from the Classic-to-Cocoa transition because the first-party apps, especially for Mac, are not good examples to aspire to. It’s not clear to what extent this is due to the technology vs. design and QA choices that Apple is making. And it’s hard to tell what Apple itself thinks because its messaging style is to say that even early and obviously rough versions of new technologies like SwiftUI and Catalyst are ready for prime time and that the resulting apps are great.

Ideally, I would start using SwiftUI for new bits of UI that I add. Realistically, the new stuff requires macOS 13, which means it will be a long time before I can ship code that depends on it.

Steve Troughton-Smith:

Apple clearly underlined SwiftUI is future of 3rd-party dev on its platforms, and that UIKit & AppKit are to be lumped in with ObjC/Interface Builder as legacy tech. What Apple didn’t show is how it might get to that idyllic fantasy-SwiftUI from the painful reality it is today

Kyle Howells:

This is especially weird given how the “Build great desktop apps” stuff is all UIKit, and all the cool apps are being built are UIKit.

David Kopec:

It would help if they rewrote a major productivity app in it. Something more complex than preferences or widgets or weather. How about Mail or Pages or Final Cut Pro. I don’t think any of those are possible with the current state of SwiftUI. And hence the skepticism.

Steve Harris:

I’m actually horrified by how bad System Settings is, it should be a flagship UI experience. Also, if they want to announce that SwiftUI is the best way to make apps then they could at least demonstrate it. Using System Settings reminds me of Shortcuts on Mac, where maybe it looks OK at first then it feels so clunky and wrong, like it’s pretending to be a native app.

Steve Troughton-Smith:

So, developers, how is everybody feeling about this set of slides from WWDC’s SOTU, now you’ve had a week?

David Kopec:

After listening to Craig on The Talk Show, I realized they really mean “best way” (in their vision) not “only way going forward” which is how I originally read it between the lines. It’s clear UIKit and AppKit will be around for a long time.

Avi Drissman:

I heard exactly the opposite. Classic will be useful and a key technology for years, until it wasn’t. Carbon will be useful and a key technology for years, until it wasn’t. I heard an explicit statement that ObjC’s days are numbered.

Ken Kocienda:

My answer is from the perspective of a longtime member of the Apple community who has stopped developing for the platform. This set of slides confirms I won’t be going back.

Dimitri Bouniol:

Still seeing lots of people complain that despite Apple being very clear that SwiftUI is the future, they don’t think it’s good enough for them…

It is ready for production, you just need to use it enough to get comfortable with knowing when to fall back to App/UIKit.

[…]

But it also doesn’t fully replace App/UIKit (yet), so start using it incrementally when you can so you can gain that experience properly rather than rushing and failing when it’s too late.

Ilja A. Iwas:

So, are master-detail interfaces with multiple selection of 1,000 complex items loaded from a local database and bulk editing these items finally possible in Swift/SwiftUI 4? With reaction times < 1s? Or is Apple overselling again?

Paul Hudson:

I’d love to hear your feedback on where you think SwiftUI is after all these changes.

  • What are the most important missing features?
  • Which bits are still tricky to learn and/or do?
  • Are there parts where you still rely heavily on UIKit?

Damien Petrilli:

The joy of SwiftUI:

  • no issue on simulator
  • layout glitches on device

Exact same code

Luc Vandal:

In fact, all the SwiftUI improvements announced at #WWDC22 motivated me to resurrect a project I nearly shipped earlier this year but decided not to because of SwiftUI not being ready. Now’s the time!

Previously:

SwiftUI Changes at WWDC 2022

What’s new in SwiftUI:

Join us as we share the latest updates and a glimpse into the future of UI framework design. Discover deep levels of customization, advanced techniques for layout, elegant strategies for sharing, and rock-solid structural approaches for designing an app top-to-bottom in SwiftUI. We’ll also have some celebratory fun as we play with the latest graphical effects and explore APIs.

Bring multiple windows to your SwiftUI app:

Discover how the Shortcuts app uses both SwiftUI and AppKit to create a top-tier experience on macOS. Follow along with the Shortcuts team as we explore how you can host SwiftUI views in AppKit code, handle layout and sizing, participate in the responder chain, enable navigational focus, and more. We’ll also show you how to host AppKit views, helping you migrate existing code into a SwiftUI layout within your app.

Compose custom layouts with SwiftUI:

SwiftUI now offers powerful tools to level up your layouts and arrange views for your app’s interface. We’ll introduce you to the Grid container, which helps you create highly customizable, two-dimensional layouts, and show you how you can use the Layout protocol to build your own containers with completely custom behavior. We’ll also explore how you can create seamless animated transitions between your layout types, and share tips and best practices for creating great interfaces.

The SwiftUI cookbook for navigation:

The recipe for a great app begins with a clear and robust navigation structure. Join the SwiftUI team in our proverbial coding kitchen and learn how you can cook up a great experience for your app. We’ll introduce you to SwiftUI’s navigation stack and split view features, show you how you can link to specific areas of your app, and explore how you can quickly and easily restore navigational state.

Meet Transferable:

Meet Transferable: a model-layer protocol that allows for effortless support for sharing, drag and drop, copy/paste, and other features in your app. We’ll explore how you can use the API for common use cases, and take advantage of advanced features to customize the behavior. We’ll also share how you can optimize for memory efficiency when dealing with large amounts of data. Whether you’re extending your models to share with other applications as strings or images or creating custom declared data types, Transferable can help you facilitate a great experience in your app.

Use SwiftUI with AppKit:

Discover how the Shortcuts app uses both SwiftUI and AppKit to create a top-tier experience on macOS. Follow along with the Shortcuts team as we explore how you can host SwiftUI views in AppKit code, handle layout and sizing, participate in the responder chain, enable navigational focus, and more. We’ll also show you how to host AppKit views, helping you migrate existing code into a SwiftUI layout within your app.

The craft of SwiftUI API design: Progressive disclosure:

Discover the latest SwiftUI APIs to help you present windows within your app’s scenes. We’ll explore how scene types like MenuBarExtra can help you easily build more kinds of apps using SwiftUI. We’ll also show you how to use modifiers that customize the presentation and behavior of your app windows to make even better macOS apps.

Efficiency awaits: Background tasks in SwiftUI:

Background Tasks help apps respond to system events and keep time-sensitive data up to date. Learn how you can use the SwiftUI Background Tasks API to handle tasks succinctly. We’ll show you how to use Swift Concurrency to handle network responses, background refresh, and more — all while preserving performance and power.

• • •

Majid Jabrayilov:

This post will cover the most significant additions and changes to the SwiftUI framework.

Paul Hudson (tweet):

I’ve managed to explore maybe two thirds of the new API, but there’s still more to explore – I’ll update this article soon.

Big Mountain Studio:

A list of everything new in SwiftUI after WWDC 2022.

Natalia Panferova:

SwiftUI has brand new navigation APIs in iOS 16 and macOS 13. They allow us to define stack-based navigation and multicolumn navigation.

Natalia Panferova:

NavigationSplitView accepts a columnVisibility parameter with a value of type NavigationSplitViewVisibility. It lets us specify what columns we would like to show.

In three-column navigation we have control over the sidebar and the middle column and in two-column navigation we can control the sidebar.

In this article we’ll be looking into how to programmatically hide and show the sidebar in two-column navigation.

Majid Jabrayilov:

Navigation was the main pain point of the framework from the very first day. Fortunately, things have changed since WWDC 22, and SwiftUI provides the new data-driven Navigation API. This week we will learn how to use the new Navigation API to build complex user flows.

Kyle Macomber:

From the beginning of SwiftUI we’ve had a vision to not only provide you with great declarative APIs, but also the underlying imperative mechanisms we use to build them.

Imagine having the low-level control to add custom extensions to CSS like a browser engine, to bundle them with your app, and share them in a package.

SwiftUI’s new Layout protocol gives you the full power and flexibility we used to implement SwiftUI’s stacks and grid to build your own first-class layout abstractions.

Swift Talk:

We take a first look at SwiftUI’s new Layout protocol and integrate the flow layout we’ve built previously.

Natalia Panferova:

In iOS 16 SwiftUI introduces a new API to create adaptive layouts ViewThatFits. This API allows us to provide alternative views when a certain view doesn’t fit into available space.

Harlan Haskins:

Layout, Grid, and ViewThatFits obviate the need for the vast majority of GeometryReaders I’ve seen in the wild. Please give them a try, you won’t be disappointed!

Ish Abazz:

I kinda think that common layouts like EqualWidth, EqualHeight, and HorizontalFlow Layouts should be included in SwiftUI. We can build them ourselves with the new Layout protocol, but why have thousands of implementations of the same common layouts?

Joseph Heck:

Oh - this is so nice! ImageRenderer to take a SwiftUI view into either an Image or PDF context through CGContext.

Khoa Pham:

There are over 20 new #SwiftUI EnvironmentValues in iOS 16 #WWDC22 ranging from Controls Input, Widgets, Scrolling and SceneKit categories.

My favorites are requestReview and openWindow

Natalia Panferova:

Starting from iOS 16 and macOS 13 we have a unified native SwiftUI API to request App Store reviews in our apps. We can read requestReview property from the environment and call it as a function at the appropriate time.

Natalia Panferova:

Starting from iOS 16 we can present resizable sheets natively in SwiftUI. In this article we’ll look into what we can achieve with the new APIs and what limitations they have in comparison with UIKit.

Khoa Pham:

In WWDC21, WWDC22 Apple provide a Slack channel for people to interact with Apple engineers in digital lounges. Here I note down some interesting Q&As

Javier:

I have categorized, curated, and in some cases commented the SwiftUI Digital Lounge questions.

Javier:

The following chart shows the number of types that are new, deprecated, or already existed but are now extended to a new platform (e.g., Tables where only available on macOS, but now they can also be used with iOS).

[…]

The following charts show how many types, initializers, methods and properties where added every year[…]

Previously:

Update (2022-06-24): Bardi Golriz (via Dave Verwer):

Not a day goes by when I don’t benefit from the SwiftUI community’s incredibly giving spirit. It was time I gave a little back. So on a Saturday night, I began archiving all questions/answers from its WWDC22 Slack channel. Several hours later, and it was done.

Lucky7 is having problems with Transferable and ShareLink.

Update (2022-06-30): James Dempsey:

There is now a way to handle a double-click on a Table or List in SwiftUI for macOS.

Swift 5.7 Announced

What’s new in Swift:

We’ll take you through performance improvements, explore more secure and extensible Swift packages, and share advancements in Swift concurrency. We’ll also introduce you to Swift Regex, better generics, and other tools built into the language to help you write more flexible & expressive code.

Embrace Swift generics:

Generics are a fundamental tool for writing abstract code in Swift. Learn how you can identify opportunities for abstraction as your code evolves, evaluate strategies for writing one piece of code with many behaviors, and discover language features in Swift 5.7 that can help you make generic code easier to write and understand.

Design protocol interfaces in Swift:

Learn how you can use Swift 5.7 to design advanced abstractions using protocols. We’ll show you how to use existential types, explore how you can separate implementation from interface with opaque result types, and share the same-type requirements that can help you identify and guarantee relationships between concrete types

Meet distributed actors in Swift:

Discover distributed actors — an extension of Swift’s actor model that simplifies development of distributed systems. We’ll explore how distributed actor isolation and location transparency can help you avoid the accidental complexity of networking, serialization, and other transport concerns when working with distributed apps and systems.

Visualize and optimize Swift concurrency:

Learn how you can optimize your app with the Swift Concurrency template in Instruments. We’ll discuss common performance issues and show you how to use Instruments to find and resolve these problems. Learn how you can keep your UI responsive, maximize parallel performance, and analyze Swift concurrency activity within your app.

Eliminate data races using Swift Concurrency:

Join us as we explore one of the core concepts in Swift concurrency: isolation of tasks and actors. We’ll take you through Swift’s approach to eliminating data races and its effect on app architecture. We’ll also discuss the importance of atomicity in your code, share the nuances of Sendable checking to maintain isolation, and revisit assumptions about ordering work in a concurrent system.

Meet Swift Async Algorithms:

Discover the latest open source Swift package from Apple: Swift Async Algorithms. We’ll explore algorithms from this package that you can use with AsyncSequence, including zip, merge, and throttle. Follow along with us as we use these algorithms to build a great messaging app. We’ll also share best practices for combining multiple AsyncSequences and using the Swift Clock type to work with values over time.

• • •

Slava Pestov:

Xcode 14 ships with Swift 5.7, which brings massive improvements to generics and protocols! 🧵

John Sundell:

Swift 5.7 introduces a new, more concise way to unwrap optional values using if let and guard let statements.

Donny Wals:

While it sounds like the any keyword acts as a type erasing helper, all it really does is inform the compiler that you opt-in to using an existential (a box type that conforms to a protocol) as your type.

Donny Wals:

In Swift 5.7, protocols can specify primary associated types. These associated types are a lot like generics. They allow developers to specify the type for a given associated type as a generic constraint.

John Sundell:

Thankfully, this is a problem that Swift 5.7 neatly solves by expanding the some keyword (that was introduced back in Swift 5.1) to also be applicable to function arguments.

[…]

Swift 5.7 once again introduces a much more lightweight way to express the above kind of declaration, which works the exact same way as when specializing a concrete generic type (such as Array<Article>). That is, we now can simply tell the compiler what Element type that we’d like our input Collection to contain by adding that type within angle brackets right after the protocol name[…]

Marcin Krzyzanowski:

“Any UIKit subclass that uses deinit now essentially causes warnings in Swift 5.7 while they are never touched on other threads anyways.”

Karoy Lorentey:

(Set now uses the new Temporary Buffers feature to make operations like intersect up to 4-6x faster.

Previously:

Update (2022-07-06): Matthaus Woolard and Natalia Panferova:

This post highlights some of the Swift updates that caught our attention this WWDC.

iCloud Shared Photo Library

Benjamin Mayo:

As Apple presented it, it seemed like the shared library would be tied to the Family Sharing system; the six users are the six people in your Family Sharing group. That would certainly be the Occam’s razor approach, removing the need for additional account management steps. However, apparently, that is not the case and the “up to six users” can include people that aren’t in your Family Sharing circle. That definitely opens up the feature to be useful to groups of people who want to share their photos but are not neatly contained into a single household, with just one shared payment method between them. It does raise some finicky questions, though, like how exactly does iCloud allocate the shared library’s storage. If someone contributes a photo, does the file size count against their personal iCloud storage quota, the person who created the shared library originally, or a wholly separate bucket altogether? Who pays for it, if you need more space? Who is in control of adding and removing people? Can you be removed from the shared library against your will, and if that happens, can you get a local copy of all the pictures of you before you lose access?

Previously:

Update (2022-07-07): Benjamin Mayo:

The old Photos shared albums are worse in every way but one: they were more social. The new Shared Library has no way for individuals to like or comment on pics.

In fact, if you heart a pic in the Shared Library, it hearts it for everyone … which feels a bit silly.

Thursday, June 16, 2022

tvOS 16 Announced

José Adorno:

The company talked during the WWDC 2022 keynote all about iOS 16, iPadOS 16, macOS 13 Ventura, and watchOS 9, but not a single word about tvOS 16.

[…]

While other operating systems have their own preview page, Apple TV’s software doesn’t. This is what we could find thanks to the release notes, developers, and more.

Joe Rosensteel:

[This] year’s WWDC announcements regarding tvOS lack any meaningful changes, and more importantly, communicate nothing about where the platform is going.

[…]

Digging deeper in to the WWDC videos on Apple’s site there’s a 24 minute-long session about designing video interfaces. It’s for iOS and iPadOS, not for tvOS. The tvOS playing experience is only referenced to explain where the title and subtitle elements came from[…] Metadata being exposed for title and subtitle is fine, but season and episode number have to be encoded into those strings by the developer, there’s nothing in the player that pulls that from a sidecar or metadata file, or any design opinion from Apple over how to format such information for consistency.

[…]

The thing that I’ve found that’s the most exciting? Developers can proactively restore an in-app purchase. This was a complaint I had when setting up my Apple TV 4K last year, where none of the in-app purchases, and subscriptions, migrated over. That that is what I’m most excited about either means I’m very boring or the list of features is very boring.

[…]

What company, and what developer, is going to argue in favor of ripping out the custom players they’ve spent years building for something that doesn’t help their own interests? There isn’t even a reason for consumers to ask for AVPlayerView, because it might be a more consistent player if it was implemented everywhere, but it isn’t a better player. The benefit of implementing AVPlayerKit is mainly for Apple, not for anyone else.

Previously:

Rapid Security Response

Howard Oakley:

One of the more enigmatic features announced for Ventura [and iOS 16] is Rapid Security Response (RSR), described as:

Get important security improvements to your devices even faster. This isn’t a standard software update. These improvements can be applied automatically between normal updates — without a restart.

[…]

The only practical way is to install those patches outside the SSV. macOS already does this for some of its bundled components, such as Safari, which has been installed on the Data volume, together with components which are changed with security data updates, such as XProtect data and MRT.

However, the Data volume isn’t a good place to keep patches to sensitive parts of macOS.

@never_released:

The cryptex (CRYPTographically-sealed EXtension) additional images are stored in DMGs and are an extension of an existing volume. There are two cryptex images present on Apple OSes being released this fall, App and OS.

[…]

As macOS Ventura only supports machines with AVX2, the x86_64 and arm64e dyld shared caches are no longer present on macOS installations for Intel processors, as they are unused there. Apple Silicon installations will also not get an unused x86_64h slice anymore.

[…]

As such, this design allows to save hard disk space in addition of allowing components to be updatable without breaking the seal for the system volume.

[…]

A new BootPolicy element, spih, representing the Cryptex1 Image4 Hash was added in macOS Ventura. This makes the Cryptex hashes part of the Secure Boot trust chain.

Previously:

Update (2022-09-14): Juli Clover:

By default, Rapid Security Responses are installed automatically, but Apple has implemented a way to remove them.

Update (2022-11-02): Apple:

In a future update to iOS 16, iPadOS 16.1, and macOS 13, Apple will add a mechanism for shipping security fixes to users more frequently. These responses are included in any ensuing minor update (not upgrade) and, on a Mac, update content appears on the Preboot volume (through symbolic links in /System/Cryptexes/).

Update (2023-07-25): Thomas Clement:

About the rapid security responses, you can’t have them set to just ‘check for updates’. Either it’s enabled and it will auto-install or it’s disabled and you will never hear about it 🤔

ParsableFormatStyle

Brett Ohland:

Apple’s modern Swift replacement system for Formatter is a set of protocols: FormatStyle and ParseableFormatStyle. The former handles the conversion to strings, and the latter strings to data.

[…]

The most direct way of parsing a string into it’s respective data type is to create an instance of a ParseableFormatStyle that’s set up to understand the structure of the incoming string. From there you access it’s parseStrategy property, and call the parse() method on it.

This is a bit cumbersome, so Apple has included custom initializers onto each of the supported data types that take the string and either a ParseableFormatStyle or a ParseStrategy instance to do the parsing. What’s interesting is that Apple includes initializers that can accept any input type, as long as you provide a ParseStrategy that informs the type how to parse it. Aren’t constrained generics neat?

[…]

New for iOS 16, you can now parse URLs using this exact manner[…]

Previously:

Apple Reneged on OCSP Privacy

Jeffrey Paul:

In the current version of macOS, Monterey, on every system update on a system containing an M1 chip, such as all the new shiny/fast ARM (“Apple Silicon”) macs, the update process phones home to Apple to obtain a special boot signature, known in Apple jargon as a “ticket”.

Jeff Johnson:

In response to the Mac OCSP appocalypse [with Big Sur], Apple promised several changes.

[…]

The first change was accomplished: macOS switched from using the unencrypted http ocsp.apple.com service to the new encrypted https ocsp2.apple.com service.

[…]

The third change, a new preference for users to opt out, is still nowhere to be found, not even in the new macOS 13 Ventura beta. The System Preferences app itself has been redesigned and renamed on Ventura, yet the promised new preference is missing, more than a year and half after Apple made these promises.

Previously:

Update (2022-06-17): See also: Hacker News.

Wednesday, June 15, 2022

Transferring Apps That Use iCloud

Apple:

Apps that use iCloud can now be transferred to another developer in the Apple Developer Program.

This is huge news.

Previously:

Update (2022-06-24): Jordan Morgan:

The most impactful change to come out of W.W.D.C. had nothing to do with APIs, a new framework or any hardware announcement. Instead, it was a change I’ve been clamoring for the last several years - and it’s one that’s incredibly indie friendly.

[…]

When my last app, Spend Stack, was acquired - it took nearly four months to get settled. This was an experienced buyer who usually had things done and dusted in one week. Why did it take so long? Because I didn’t just sell Spend Stack, I had to sell my entire LLC, Dreaming In Binary, which I had owned for many years to that point. Instead of transferring the app, I had to manage a slew of logistical hurdles that neither I, or the acquirer, wanted to otherwise.

Now, there is no more creating an LLC per app.

[…]

The long and short of it is this - many of us would skip iCloud sync altogether because it meant we couldn’t transfer any app using it in the future.

Stage Manager’s Utility

Steve Troughton-Smith:

I do feel Stage Manager has a bit of an identity crisis. Who is it for? The long tail of users? It’s way too confusing and unpredictable, harder than a desktop. And for pro users? It’s far too rigid and opinionated, meddling.

I’m not sure that it’s harder than a desktop. Stage Manager on the Mac is not for me, but it seems like a useful feature for people who don’t want to manage windows but also don’t want everything full-screen.

I think I might actually use it on iPadOS, when I have an iPad that supports it. It seems less confusing than the current iPad multitasking system when multiple windows are involved.

Steve Troughton-Smith:

Related: where on earth is a system-level feature for tabbed windowing? That’s the kind of thing that should have been introduced several steps earlier than resizable, overlapping windows on iPad 👀

Dan Grover:

It’s nice macOS is getting attention, but demos seem to revolve around solving problems of imaginary person that uses only native, Apple-produced apps. Stage Manager does nothing for my 79 browser tabs I use to get work done.

Typical pro macOS user probably has things spread across a zillion Google Docs, Slack channels, various cloud services.

Previously:

Update (2022-06-16): Steve Troughton-Smith:

I don’t think Apple has figured out the nouns & verbs of the important elements of multi-window multitasking — what is an ‘app’, ‘window’, where does it live? Where does it go when I put it away? iPadOS is all just a soup of recent tasks that may be running, cached, or ghosts

Jack Wellborn:

The lack of names suggests to me that Stage Manager is not conceptually complete and incomplete concepts is how iPadOS multitasking got to where it is today. Here’s what I wrote about iPad multitasking back in January[…]

Update (2022-06-24): Steve Troughton-Smith:

As a developer trying to implement well-thought-out multiwindowing in my iPadOS apps, it’s super frustrating that Apple is letting window management balloon into a mess for users without giving developers the tools to manage windows and the UX properly at the other end

Simple one: I wanted to put the list of open windows in the app’s menu bar, like you might on macOS. Except iOS only allows menu bar items that map a key command to a selector — you can’t just have arbitrary menu items. And no two commands can have a blank shortcut

I looked into what Mail is doing to show the window list/shelf via the button in its toolbar, and it’s all private entitlements and SpringBoardServices SPI. Not fair 😜 Third party apps need the same kind of UX

Steve Troughton-Smith:

Honestly I feel iPad is still a good 2 or 3 OS releases away from getting the basics of windowing right, and I kinda don’t want to even try supporting it until they’ve figured it out. I think trying to compensate for this now, as a developer, is going to be a waste of a summer.

Guilherme Rambo:

Feels like in trying so hard to do something different than the traditional windowing model from computer GUIs, they somehow ended up with something that’s more complicated, for both people to use and for us to implement.

Parker Ortolani:

After more than a week of using stage manager on iPad, I’ve come to the conclusion that as great as it is to have for certain use cases (especially on monitors) legacy split view and slide over are still more seamless and intuitive.

Update (2022-06-30): Jack Wellborn:

The other and much more egregious problem is how the main components that make up Stage Manager simply don’t have names. This is nothing new to iPadOS.

[…]

Stage Manager introduces a hierarchy that I hope Apple leans into. Windows belong to sets and sets belong to stages. Given this hierarchy, I don’t think command+tab should switch between apps because, just like with existing multitasking, an app switcher can’t work when an app is divided across multiple stages. Instead, I think command+tab should switch between sets and command+` should switch between windows in the set that is currently on stage.

Update (2022-08-02): Steve Troughton-Smith:

I genuinely don’t think iPad Stage Manager is salvageable in its current form. It’s layered on ton of behaviors that interact in bizarre, inconsistent & unpredictable ways, hidden behind mystery gestures, unmarked tap targets, screen regions. Hidden destructive actions everywhere.

Steve Troughton-Smith:

When you think about it, it’s kinda hard to believe that Apple introduced Stage Manager windowing on iPad without giving developers a single new API to tailor their apps for it. It even actively ignores all the API that Apple built for Catalyst to allow for great windowing support.

Update (2022-08-05): Steve Troughton-Smith:

What Stage Manager does to apps that specifically flag themselves as needing fullscreen is bonkers. It forcibly windows them and scales them down

Federico Viticci:

Here’s one of the many Stage Manager for iPad issues that makes it really hard to work with windows right now:

I have a link in Trello and an active Safari window in the same workspace.

If I tap the link, you’d expect it to open in that Safari window in the same set, right?

Update (2022-09-26): Sami Fathi (via Francisco Tolmasky):

Federico Viticci, the founder and editor in chief of MacStories and a prominent member of the Apple community, outlined his frustration with Stage Manager in a Twitter thread earlier this week. Viticci says that design decisions built into Stage Manager are “fundamentally misguided,” arguing that the feature is unstable, hard to use, and has user interface glitches across the experience.

“If Stage Manager is the future of iPadOS for pro users, I hope Apple understands that it can’t be rushed. We waited years for this; might as well get it in Spring 2023,” Viticci says, suggesting Apple delay Stage Manager’s release entirely and rethink its approach.

Steve Troughton-Smith:

Two apps onscreen — you’d think the currently active one (check the three dots at the top) would be the one casting the shadow on the other? Nope! Shadow is cast by whichever you resized last, no idea why. The app you interact with could always be in shadow, like it or not

Steve Troughton-Smith:

I can’t use Stage Manager for five minutes without it falling apart in some new and novel way. At this point, I think it needs to taken out back and Old Yeller’d. Tear it all down and come back next year, without a marketing name, and without a device compatibility matrix

I am strongly in favor of iPad gaining some manner of windowing, and I don’t want it to be macOS on an iPad. But doing everything different, and worse, just because, is no way forward for the platform. Throwing new ideas at the wall and destroying the UX at our expense?

Stage Manager’s iPad Requirements

Matthew Panzarino (Reddit):

This approach to workspace management does appear to be very obviously iPad-centric. But Federighi says that two independent teams at Apple, one working from the iPad side and one working from the macOS side to try to make multiple workspaces more obvious and friendly, arrived at a similar concept and met in the middle. This means, he says, that both perspectives are represented in this approach.

[…]

Federighi says that the extremely high bar Apple has for interactive responsiveness was at the core of the issue. On iPad, he notes, there is this tremendously high bar for interactive responsiveness and the experience where every app you can touch needs to be able to respond essentially instantaneously. This meant that, historically, whatever apps were immediately accessible to the user needed to be entirely resident in RAM. Something that has not been true of apps on macOS, which made heavy use of virtual memory.

In order to reach that level of responsiveness, several factors needed to collide. First, a combination of a lot of RAM and “extremely fast IO virtual memory” were needed to host multiple apps in the active bucket.

As a result, Stage Manager requires an M1 iPad. I honestly don’t understand his argument. I don’t think it’s that pre-M1 iPads couldn’t support virtual memory, since even the A12Z in the DTK did. That processor also had great performance running more simultaneous apps than iPadOS supports. Stage Manager is also supported on older Macs with Intel processors—and older graphics—that are less capable than recent-but-not-M1 iPads.

Then he talks about needing fast flash storage for the virtual memory, which only the M1 iPads have, but PowerPC Macs were using spinning hard drives for virtual memory 20 years ago. Surely those were much slower.

He also says that Stage Manager is a “total experience that involves external display connectivity.” Why is an external display a requirement when most M1 iPad users don’t even use one?

Thomas Brand:

I understand the Stage Manager experience is all about simultaneously running up to 8 overlapping apps on a 6K external display, but at the very least Apple could throw three year old iPad Pro a bone with a minor software update. Bring basic full screen external 4K app support to the 2018 iPad Pro.

Matt Birchler:

Let’s say I open up a LumaFusion project that uses 3.5GB RAM. On an iPad with 4GB RAM, that’s basically everything, so when I move LumaFusion to the background and open Safari and Messages, LumaFusion is killed so that I have RAM available what what’s on screen now. That’s reasonable because the app was physically not on screen anymore, so the fact that process was killed doesn’t really impact my usage overall.

My iPad doesn’t support Stage Manager, so I can’t try it, but I don’t see how this would really be different than with regular iPad multitasking. External displays aside, you aren’t actually in more apps at the same time. Yes, you see images of their windows, but that’s also the case with the app switcher or with Exposé on the Mac. You don’t need the app’s full memory footprint to show what its window looks like.

Switching to an app that isn’t fully in RAM will be slower, sure, but that’s already the case with iPad multitasking today. Also, apps use different amounts of memory, so given how Stage Manager supports 8 apps, there are probably cases where it’s slower on an M1 than fewer/smaller apps would be on lesser hardware. So it’s not as though the M1 baseline guarantees a more responsive experience.

Joe Rossignol:

The latest interview was published by Forbes contributor David Phelan, who asked Federighi if Apple attempted to make Stage Manager work with iPad models without the M1 chip. In response, Federighi said Apple did some early testing of the feature on other iPads, but Apple was not satisfied with the experienced delivered on those devices.

“We began some of our prototyping involving those systems and it became apparent early on that we couldn’t deliver the experience that that we were designing toward with them,” he said. “Certainly, we would love to bring any new experience to every device we can, but we also don’t want to hold back the definition of a new experience and not create the best foundation for the future in that experience. And we really could only do that by building on the M1.”

Andrew Cunningham:

it’s not unreasonable to expect a 14-month old $1,000+ computer to support new OS features, and if Apple couldn’t do that, they should have designed the feature differently.

Damien Petrilli:

The question isn’t about why the windowing system requires M1 iPads hardware.

The real question is why Apple didn’t manage to ship a windowing system working on most iPads which are far more powerful than any intel-Macs, knowing macOS had a windowing system since the 80s.

Apple controls everything at every level. Yet with this luxury, they manage to support less hardware for shorter time than Microsoft which must supports everything from netbook to workstation.

Steve Streza:

Without the might of the M1 chip, this computer wouldn’t be able to perform the crushing task of running a window manager.

Filipe Espósito:

As noted by developer Steve Troughton-Smith on Twitter, the base model of the iPad Air 5 is not compatible with virtual memory swap. That’s probably because the 64GB of internal storage is not enough for memory swapping. As Apple quietly suggests on its website, memory swapping on the iPad requires at least 128GB of storage in addition to M1.

This is totally understandable, but then comes the question: Why does Apple keep saying that virtual memory swap is a requirement for Stage Manager when the 64GB iPad Air 5, which supports Stage Manager, clearly has no virtual memory swap?

paul:

If your window management software is so resource heavy that an iPad with an A12Z processor aka “faster than most windows laptops” cant run it, then maybe it’s time to reconsider your approach.

Dmitrii:

You either claim this, or you claim that you can’t show app previews side by side. You can’t do have both.

Meek Geek:

If after all this, Apple still won’t budge, then maybe it’s time for these myths to die?

  • Apple will give you feature x if the hardware allows for it
  • iOS is very efficient and needs way less RAM to run
  • Apple generously provides many years of updates with the latest features

Previously:

Update (2022-06-15): John Gruber (tweet):

Virtual memory on Macs back in the spinning hard drive era was ridiculously slow.

Yes, when there was a lot of paging to be done, but clicking from one app to another was still fast because it didn’t have to bring in all of the app’s memory at once.

I can see what Apple is thinking by drawing a hard line with M1 iPads: they want to deliver Stage Manager for iPad without a slew of asterisks regarding which aspects of it work on which devices. As it stands with developer beta 1, an iPad either supports all of Stage Manager (including support for driving up to 6K external displays, and up to 8 apps), or none of it.

It just makes no sense to me that the baseline is 8 simultaneous apps when many people would be happy with 2 or 3. And this “all of Stage Manager” thinking assumes that the 64 GB iPad Air that doesn’t have virtual memory supports the same Stage Manager experience as the higher end iPads. If Apple says it supports 8 apps, I assume it does, but some of them are going to get suspended or be severely memory constrained—which is just what would happen on a non-M1 iPad if that were supported. Of course, there are also A-series iPad Pros that have plenty of storage for virtual memory. Would paging in on those devices really be slower than resuming a suspended app on the M1 Air?

Filipe Espósito:

Here’s a quick thread with a few times when Apple came up with some pretty controversial and questionable limitations.

Plus, Ventura dropped support for Macs that were sold until July and December 2019.

Update (2022-06-16): Quinn Nelson:

Well, Apple said swap is required for SM and this proves it isn’t otherwise only the 256GB iPad Air would be getting SM.

Maybe it’s just that the A12Z can’t handle SM and requires the M1’s power. But if that’s true, why would Apple lie about swap?

After all, a slightly modified A12Z ran the entirety of macOS on the DTK. Are we to believe that the A12Z can’t run a simple window manager? And if it can’t, what does that say about Apple’s software optimization? I mean, the thing can run Unreal Engine but not a window manager?

Greg Pierce:

Stage Manager will definitely not keep your apps running on iPad. I’m sure it’s built on existing windowing support, which takes image snapshots of your app to display and will still happily kill the window/app.

Francisco Tolmasky:

The iPad already allows 2 apps open at once, just in an incredibly frustrating UI, which people more often than not bring up accidentally rather than on purpose.

[…]

Stage Manager and the M1 didn’t suddenly invent multi processing. The underpowered 12” MacBook had no such restrictions. People don’t want whiz-bang animations, they just want to reasonably interact with 2 windows the way they’ve been able to do on a Mac with megabytes of RAM.

[…]

And yeah, it’s hard to add windowing, that’s why they shouldn’t have waited 11 years to try. But either to create artificial market segmentation, or just being stubborn, they’re now just throwing this over-engineered thing at us and still limiting it.

Benjamin Mayo:

Detach from the phrase ‘Stage Manager’. What people want is to put a few apps in floating windows, and connect up to an external display and actually be able to use the app on the display. I think it’s pretty clear that iPads older than 1 year are powerful enough to do that.

This isn’t just about appeasing people with old iPads. Adding those kind of features to non-M1 iPads would be a huge boon to the newest on-sale-now $329 iPad and iPad mini.

It’s not even clear that M1 iPad owners want Stage Manager, with all its quirks. So if they could make a mode for moving an app to the external display in interactive mode without entering full-on Stage Manager, that would be even better for M1 users too!

Filipe Espósito:

What we have found is that, in fact, Apple has an internal mode to enable Stage Manager on older iPads.

The codes reference an internal setting that enables “Chamois” (the Stage Manager codename) for “Legacy Devices.” In other words, it makes the feature work with every other non-M1 iPad running iPadOS 16.

Josh Centers:

However, developers may resent the M1 requirement even more than users. Developer Steve Troughton-Smith points out that most developers do not own an M1 iPad and the iOS Simulator doesn’t officially support Stage Manager, which will make it hard to optimize apps for Stage Manager. M1 iPad owners may be disappointed to find that Stage Manager doesn’t immediately work as expected with their favorite third-party apps.

Troughton-Smith suggests that Apple should let beta testers enable Stage Manager on non-M1 iPads.

Tanner Bennett:

I’ve heard many stores from inside Apple where features were artificially limited to new devices, like AirDrop when it first came out.

Tanner Bennett:

Also FWIW everyone, there was a jailbreak tweak back on iOS 8 called “OS Experience” that allowed you to open as many apps as you want at the same time and use them all at once.

There were no noticeable performance issues, and apps didn’t just close out from under you

Update (2022-06-24): Matt Birchler:

The best I can come up with is that while the 64GB M1 iPad Air doesn’t do virtual memory swap, it does have the 2GB extra RAM, more CPU power, and more GPU power compared to the older devices, and those advantages are enough to make it doable.

[…]

First, fix the bugs and improve some of the weird usability parts of Stage Manager. This is table stakes for a beta, so I fully expect this to get done.

Then figure out a stripped down version of Stage Manager they can release for 2020 iPad Pros, and maybe even 2018 Pros as well.

Dr. Drang:

So watchOS 8 basically did to my Apple Watch what Federighi says Stage Manager will do to older iPads. I guess that means I’m defending Apple’s Stage Manager decision. But it also means that stuff about extremely high standards for responsiveness is bullshit.

Manton Reece:

I think the root issue is that when people choose a computer to buy, they don’t expect the operating system to change significantly for different computer models.

[…]

I can’t think of anything comparable to such a major feature as Stage Manager being limited by hardware across a current, latest-generation product line. Maybe the closest is when Portrait Mode was first available. Portrait Mode is nice to have, but it doesn’t fundamentally change how you interact with apps in the way that Stage Manager does.

[…]

Users on non-M1 hardware will understand if Stage Manager is slower or more limited — for example, no external display support or fewer windows open at once — and those limitations will naturally drive iPad upgrades. But it’s a unique and confusing precedent to have fundamental iPadOS features limited by hardware.

Nick Heer:

The restriction of Stage Manager and memory swapping in iPadOS 16 is the complete inverse. No matter which iPad model you have, you will see gorgeous graphics and use super fast flash memory — but you need a recent iPad Pro or Air model to more efficiently multitask. That is kind of weird. Buying a MacBook Pro does not unlock a better workflow model than what is available on a MacBook Air, but buying an iPad Pro means you get exclusive system capabilities.

Riccardo Mori:

See, I don’t even think Apple “didn’t want to degrade the overall experience to make that happen”. I think Apple didn’t want to waste resources to engineer a separate, optimised implementation of Stage Manager for non-M1 iPads — while being well-aware that most people don’t upgrade their iPads every 1–2 years.

[…]

When Dashboard was introduced in Mac OS X 10.4.3 in 2005, it featured certain effects and animations that not all Macs were able to perform. To enjoy the full experience, your Mac had to be equipped with a powerful-enough graphics card supporting CoreImage. Still, Dashboard was made available for all Macs, and those models with lesser graphics cards simply didn’t show those effects and animations. There was no true loss of functionality, just an absence of further eye candy.

Tuesday, June 14, 2022

ACM Makes Research Articles Freely Available

Association for Computing Machinery (not the other ACM, via Hacker News):

ACM has opened the articles published during the first 50 years of its publishing program. These articles, published between 1951 and the end of 2000, are now open and freely available to view and download via the ACM Digital Library.

ACM’s first 50 years backfile contains more than 117,500 articles on a wide range of computing topics. In addition to articles published between 1951 and 2000, ACM has also opened related and supplemental materials including data sets, software, slides, audio recordings, and videos.

Ernie Smith (via Hacker News):

Over that time, the educational and scientific group representing nearly 100,000 members across 190 countries has collected a number of published works within its archives, many of which discuss fundamental work within the world of computers—for example, the first mention of UNIX, a groundbreaking operating system that has deeply influenced modern computing, in 1973, or an in-depth interview with Steve Jobs from 1989.

Previously:

Clarus Is Back in Ventura

Shadowfacts (Hacker News):

Did you know that with macOS Ventura, Clarus the Dogcow has at long last returned home? Recently, while doing something else, I accidentally hit Cmd+Shift+P which opened the Page Setup dialog. I was greeted, surprisingly, with a new high-resolution version of the classic Clarus icon that I’d never seen before.

[…]

Using the system assetutil program, one can list all of the files in a compiled asset catalog. And sure enough, there she is[…]

[…]

Lastly, if you’re writing a Mac app and would like to hide Clarus somewhere, you can load the bundle yourself and then pull the image out like so[…]

[…]

It would be very cool to see Clarus return as an SF Symbol some day. If hundreds of icons for various Apple products can go in, so too can everyone’s favorite dogcow.

Jason Robinson:

In iOS 16, the 🐕 🐄 emoji suggestions now appear in the correct order when typing Clarus’ name.

Update (2022-06-16): Dr. Drang:

Nowadays, you can go years without using Page Setup. Many apps, including the editor I’m typing this in and the web browser behind it that has all my links open, don’t even include a Page Setup item in their File menu. As you can see, much of what it did has been rolled into Print.

And here’s the thing about Clarus and Page Setup: although Stephen’s history—and the screenshot above, which I nicked from him—puts her in the LaserWriter’s Page Setup, my memory is that she started in the ImageWriter’s Page Setup. And she did a lot more than just stand around inside a page-shaped box.

In addition to the rather dull options for portrait or landscape printing, the ImageWriter’s Page Setup gave you checkboxes for more exciting options. And Clarus would do tricks when you selected these other options.

Firefox Total Cookie Protection

Mozilla (Hacker News, MacRumors):

Starting today, Firefox is rolling out Total Cookie Protection by default to all Firefox users worldwide, making Firefox the most private and secure major browser available across Windows, Mac and Linux. Total Cookie Protection is Firefox’s strongest privacy protection to date, confining cookies to the site where they were created, thus preventing tracking companies from using these cookies to track your browsing from site to site.

[…]

Total Cookie Protection works by creating a separate “cookie jar” for each website you visit. Instead of allowing trackers to link up your behavior on multiple sites, they just get to see behavior on individual sites. Any time a website, or third-party content embedded in a website, deposits a cookie in your browser, that cookie is confined to the cookie jar assigned to only that website. No other websites can reach into the cookie jars that don’t belong to them and find out what the other websites’ cookies know about you — giving you freedom from invasive ads and reducing the amount of information companies gather about you.

John Wilander:

Firefox finally gets full third-party cookie partitioning. I don’t know why tech media got it wrong up until now, saying Firefox had strong cookie protections by default. But now they got it done! 🥳❤️

Brendan Eich:

Glad Mozilla is joining best-in-class @Brave by shipping Firefox storage partitioning by default. Brave has shipped these protections by default, on all platforms, for 6+ months. More browsers shipping more on-by-default privacy protections benefits everyone who uses the Web.

Previously:

[Private Click Measurement] is already available as part of iOS 15, but it needs websites to use its API in order to function.

[…]

As fine as that sounds, an in-depth report claims that the mechanisms used by PCM aren't sufficient to protect users in the ways Apple is trying to, while making it more difficult for advertisers and removing any incentive for web publishers to use it.

[…]

Mozilla goes so far as to say that if Firefox included support for PCM in lieu of its own Toral Cookie Protection, it would actually make it less private.

Swift Charts

Hello Swift Charts:

Say hello to Swift Charts — a flexible framework that helps you create charts entirely in SwiftUI that look and feel right at home on all Apple platforms. Discover how you can use compositional syntax to make informative, delightful, and accessible charts with less code. We’ll share the building blocks for making visualizations with Swift Charts, and explore how you can change your charts’ design with a simple modifier. We’ll also take you through the latest updates to Xcode Previews to help you chart a path toward an engaging experience.

Swift Charts: Raise the bar:

Dive deep into data visualizations: Learn how Swift Charts and SwiftUI can help your apps represent complex datasets through a wide variety of chart options. We’ll show you how to plot different kinds of data and compose marks to create more elaborate charts. We’ll also take you through Swift Charts’ extensive chart customization API to help you match the style of your charts to your app.

Matthaus Woolard:

From my quick look over the API, the framework can provide a lot more than the basic graphics generated by apps like Numbers etc. In this post I would like to share my initial experiments with the APIs.

[…]

You can find the code for this chart in our GitHub project, this includes the code to download and parse the CSV file.

Ron Avitzur:

I’ve worked on math & data visualization for 35 years, and the simplicity and power of the Swift Charts API is truly a thing of beauty, as are the visualizations it creates.

It does not include pie charts.

Update (2022-06-24): Matthaus Woolard:

To build a histogram, I need to group my data into bins and count how many samples are within each bin.

He also demonstrates a 2D density plot.

Monday, June 13, 2022

Remembering Apple’s Newton, 30 Years On

Jeremy Reimer (Hacker News):

Apple engineer Steve Sakoman was bored after launching the Macintosh II. He wanted to make a portable device like the pioneering PC laptop he had built for Hewlett-Packard. To stop him from leaving Apple, vice president Jean-Louis Gassee let him set up a “skunkworks” project to pursue his dream. But he didn’t want to just make a Macintosh laptop. He had a vision of a tablet-like device, the size of a folded A4 sheet of paper, that could read people’s handwriting.

[…]

At the same time, another “top secret” Apple division was also working on unique portable devices and software under the code name “Pocket Crystal.” Larry Tesler was asked to evaluate this team to see if it might be able to replace the Newton. Instead, he suggested spinning out Pocket Crystal into a separate company (which became General Magic) and refocusing the Newton project with new hardware and new leadership.

[…]

Apple found a small British computer company, Acorn, which had improbably created a new CPU design that offered decent speeds at impossibly low power requirements. Apple invested $3 million into the company and helped design a new revision of its chip, the Acorn RISC Machine.

[…]

Steve Capps described the development environment as being incredibly advanced. “The whole architecture that we cooked up had no difference between data in the ‘file system’ and in memory (and for Newton, in the ROM that held the code),” he said in an interview with Ars.

[…]

NewtonScript influenced the creation of JavaScript, with its prototype-based object model, dynamic variable typing, garbage-collected memory, and fast interpreted design.

This last part seems to be incorrect, but the article is worth reading.

Jack Wellborn:

PDAs never achieved ubiquity. Instead, they were a necessary stepping stone toward smartphones, which themselves weren’t ubiquitous until iPhone and Android. I think VR has a bright future, but I don’t see VR as it exists today being the thing that becomes the next smartphone. Rather, I see VR as another necessary and very exciting stepping stone toward something ubiquitous that is yet to come.

Friday, June 10, 2022

Sunsetting the Atom Text Editor

GitHub (Hacker News):

As new cloud-based tools have emerged and evolved over the years, Atom community involvement has declined significantly. As a result, we’ve decided to sunset Atom so we can focus on enhancing the developer experience in the cloud with GitHub Codespaces.

[…]

It’s worth reflecting that Atom has served as the foundation for the Electron framework, which paved the way for the creation of thousands of apps, including Microsoft Visual Studio Code, Slack, and our very own GitHub Desktop. However, reliability, security, and performance are core to GitHub, and in order to best serve the developer community, we are archiving Atom to prioritize technologies that enable the future of software development.

Nathan Sobo:

Founder of Atom here. We’re building the spiritual successor to Atom over at Zed.dev.

They call it a “a lightning-fast, collaborative code editor written in Rust.”

Previously:

FormatStyles in iOS 16 and macOS 13

Brett Ohland:

The yearly developer conference was firing on all cylinders this year, with some nice additions and one big fix on the FormatStyle front.

[…]

We now have an API for the byte count format style on top of the Measurement framework when using the UnitInformationStorage unit.

[…]

iOS 16 introduces the new Duration unit, which is purpose built to deal with very accurate time measurements. There’s two new styles to support it.

[…]

There’s a new, and surprisingly deep, format style for URLs[…]

[…]

There’s a couple of significant changes to the Verbatim style.

Previously:

Swift Regex

Meet Swift Regex:

Learn how you can process strings more effectively when you take advantage of Swift Regex. Come for concise literals but stay for Regex builders — a new, declarative approach to string processing. We’ll also explore the Unicode models in String and share how Swift Regex can make Unicode-correct processing easy.

I’m really excited about Swift Regex. It should be much more ergonomic than NSRegularExpression, which has always been awkward to use, and faster, too, since it can work directly in Swift’s native string encoding.

Also, in theory it should handle Unicode edge cases better. I’ve run into problems where NSRegularExpression returns capture ranges that are valid for NSString and String.UTF16View but which do not exactly map to valid indexes into the String itself.

I’d like to see Apple bring Swift Regex to Core Data, too. First, it would be nice to get consistent results (both matching and performance characteristics) by using the same engine throughout an app. Second, regex matching within SQLite queries is currently slow because it converts each database string from UTF-8 to UTF-16 before invoking ICU.

Swift Regex: Beyond the basics:

Go beyond the basics of string processing with Swift Regex. We’ll share an overview of Regex and how it works, explore Foundation’s rich data parsers and discover how to integrate your own, and delve into captures. We’ll also provide best practices for matching strings and wielding Regex-powered algorithms with ease.

Ron Avitzur:

Tis nifty watching Xcode refactor /(([0-9]*\.?[0-9]+)([eE][-+]?[0-9]+)?)|NaN/ to a Regex Builder, even if the compiler is unable to type-check this expression in reasonable time.

Steve Canon:

The converter that Xcode uses for regex -> builder is in the experimental-string-processing repo.

Previously:

Update (2022-06-16): Frank Illenberger:

I’m disappointed by the performance of the new Swift Regex. Take a look at these two versions of a CSS variable lookup. On my Intel iMac, the first one with NSRegularExpression takes 0.0002s to complete an enum over all matches on a 2000 line CSS file. The second one takes 0.25s.

Update (2022-10-11): Keith Harrison:

You can improve the type safety of captured values by adding a transform block to the capture. This allow you to transform the generic capture output to a known type. For example, to transform the captured digits to an (optional) integer[…]

And you can use TryCapture to make the regex backtrack if the Swift code returns nil.

You can use the Foundation date, number, currency and URL parses with regex builder.

Update (2022-12-02): Shane Crawford:

We’ll be digging into Regex Builder to discover its wide-reaching capabilities.

Sindre Sorhus:

The new regex stuff in Swift is truly amazing! The following would have been an unreadable mess in most other languages.

Safari 16 Announced

What’s new in Safari and WebKit (Hacker News):

Explore the latest features in Safari and WebKit and learn how you can make better and more powerful websites. We’ll take you on a tour through the latest updates to HTML, CSS enhancements, Web Inspector tooling, Web APIs, and more.

Jen Simmons (Hacker News):

Safari 16 brings support for Web Inspector Extensions, so you can enhance Safari’s built-in browser developer tools. This can be especially helpful when using powerful third-party frameworks and services — perhaps your team uses React, Angular, Vue, or Ember; or maybe a popular test suite or another developer service.

[…]

After years of collaboration by engineers working on various browsers to figure out whether or not they would even be possible, Container Queries are finally here. Similar to Media Queries, Container Queries allow you to adjust the layout or styling of a particular item on your web page based on the size of its container rather than the size of the viewport. They’ll be an invaluable tool for creating reusable components in a design system.

[…]

Web Push is coming to Safari 16 on macOS Ventura. This lets you remotely send notifications to users of your websites and web apps — and deliver those notifications even when Safari isn’t running.

[…]

Subgrid takes Grid to another level, providing an easy way to put grandchildren of a grid container on that grid. It makes it possible to line up items across complex layouts without being constrained by the HTML structure.

Previously:

Thursday, June 9, 2022

App Shortcuts

Matthew Cassinelli:

With the iOS 16 suite of updates coming later this fall, Siri will automatically gain new capabilities for each app that supports Shortcuts, generating a folder of shortcuts with trigger phrases for every bit of functionality provided to Shortcuts. These will be found in the Shortcuts app; users will have a new section below one’s folders called “App Shortcuts,” which includes categories for each supported app installed on your device.

Inside each category will be individual shortcuts for the actions provided by the app, set up for you in advance, so you don’t have to generate a new shortcut for each possible option manually. Each shortcut will be named with a trigger phrase pre-defined by the developer so that you can trigger the shortcut using Siri without any setup.

[…]

Apple seems to be rounding out the Siri side of Shortcuts while simultaneously addressing developers’ issues of getting users actually to take advantage of their Shortcuts support.

[…]

In many ways, it seems that Siri Shortcuts is Apple’s solution for their Siri problem, and App Shortcuts is an encouraging start.

Federico Viticci:

I was confused by iOS 16’s App Shortcuts at first, but I get it now, and I think it’s a genius move.

Biggest point of friction of Shortcuts for new users? The empty editor. They don’t know how to get started, and the action library can be scary for people new to Shortcuts.

[…]

iOS 16’s solution: apps can now bundle pre-defined App Shortcuts, created by developers, which are ready to use. No config or ‘Add to Siri’ necessary.

[…]

I hope this works out and I’d love to see many more people finally “get” Shortcuts without having to build anything in it.

Apple:

Learn how you can surface great features from your app directly in Siri, Spotlight, and the Shortcuts app. We’ll introduce you to App Shortcuts, provide best practices to help you evaluate features in your app that would work well as App Shortcuts, and take you through the process of creating one of your own. Learn how to create clear and memorable names, design custom visuals, collect required information, and create discoverable shortcuts.

Apple:

Discover how you can create Shortcuts in your app with zero user setup. We’ll show you how App Intents can help you present custom Shortcuts views, and explore how you can add support for parameterized phrases to allow people to quickly express their intent. We’ll also share how you can make your App Shortcuts discoverable with a Siri Tip, and Shortcuts links.

Apple:

Learn how you can make your app more discoverable and increase app engagement when you use the App Intents framework. We’ll take you through the powerful capabilities of this Swift framework, explore the differences between App Intents and SiriKit Intents, and show you how you can expose your app’s functionality to the system.

Previously:

Update (2022-06-10): John C. Welch:

I honestly think custom, complex, customer created workflows that aren’t created by devs for devs is going to be dead in the Apple world outside of companies like MS and Adobe that can just build that into their apps. Like in two years.

There is no way an indie dev can build that many shortcuts and still have time to like actually build applications.

[…]

Can you even get selected text on iOS? A quick attempt shows no. Pages has three actions that only operate on whole documents.

[…]

Shit, you can’t even do a MAIL MERGE kind of thing with shortcuts in iOS, which is automation basics, and you think you’re going to get anything actually complex?

There’s no error handling in Shortcuts, how TF will they handle incorrectly formatted input data?

Continuity Camera at WWDC 2022

Jason Snell:

People can complain that this is another example of Sherlocking, in which Apple takes a feature pioneered by outside developers and rolls it into the system. And, yes, it is that. Sherlocking has a couple of interesting aspects that aren’t as widely known, though: First, there’s usually room left behind after a “Sherlocking,” and there are several features in Camo that Apple isn’t bothering to replicate with Continuity Camera. Second, the platform owner has powers far beyond those of third-party app developers—and with Continuity Camera, it shows. There’s no app to launch, nothing to configure, no awkward attempt to mount a phone while not touching the wrong button or the wrong place on the screen. When you bring an iPhone (running iOS 16) close to a Mac (running macOS Ventura), the phone’s rear camera can be used as a video source by the Mac. That’s pretty great.

[…]

In essence, the iPhone is automatically detecting when it’s been mounted on or behind your screen and is now ready to be used as a webcam. That’s when the switch of the System Camera occurs. (Apps will need to be updated to recognize the System Camera state, but users should be able to switch between their preferred video sources, regardless.)

[…]

Desk View is an odd one. It’s actually an app called Desk View that displays that faux overhead view, calculated by rotating and de-skewing the output from the ultrawide camera.

Note that the Continuity Camera feature has been around since macOS 10.14. You can use it today in EagleFiler to take a photo, scan a document, or draw a sketch with your iPhone (or iPad) and have it automatically imported to your Mac. What’s new in Ventura and iOS 16 is that it also works for live video. That’s a great addition, and if you have an old iPhone handy you could even leave it permanently attached to your desktop Mac’s display.

Apple:

Discover how you can use iPhone as an external camera in any Mac app with Continuity Camera. Whether you’re building video conferencing software or an experience that makes creative use of cameras, we’ll show you how you can enhance your app with automatic camera switching. We’ll also explore how to recognize user-preferred and system-preferred cameras, take you through APIs for high-resolution and high-quality photo capture from iPhone’s video stream, and more.

Previously:

Update (2022-06-17): Juli Clover:

If you want to try Continuity Camera as it’s meant to be used and you have a 3D printer, Jonathan Wight has created some mount patterns for the MacBook Pro and the iMac Pro. You can print out one of the mounts and attach it to the Mac to hold the iPhone in place.

Update (2022-08-08): Julio Ojeda-Zapata:

The mounts are not yet available to the public, but some lucky tech writers have been sent pre-release versions. Apple chose not to favor me with early access, but I found something similar while rummaging through my tech gear: PopSocket’s PopGrip for MagSafe. It’s an oval slab that clamps magnetically to the back of an iPhone and incorporates that classic telescoping two-finger circular grip.

[…]

Here are image comparisons with the FaceTime HD cameras in the 2020 M1 MacBook Air, the recently released M2 MacBook Air, and the Studio Display, which was released earlier this year. Continuity Camera imagery is superior across the board. The M2 MacBook Air improves on the M1 MacBook Air, but not dramatically so. The Studio Display’s imagery is muddled and a bit dark.

[…]

Now it’s present in Continuity Camera as an option to toggle background blurriness on and off (iPhone 11 or later).

Mac App Notarization at WWDC 2022

Apple:

Notarization works in tandem with macOS to help people safely download software for their Mac outside of the App Store. Learn about the required transition from altool to notarytool and how the Xcode GUI can help you achieve better overall performance when notarizing your app. We’ll also share information about APIs for interacting with the Notary service from any internet-connected machine.

altool is going away in fall 2023.

Rosyna Keller:

The other huge change is the Apple notary service now has a public REST API. Now you can avoid notarytool and Xcode for notarization if that’s how you prefer to roll. Note that stapling isn’t part of this new API and still has to be done from a Mac.

[…]

You can pull notarytool and stapler from the Xcode command line tools and use them on Macs not running the latest Xcode builds.

[…]

[All] versions of notarytool support a --webhook <URL> on the submit command.

[…]

Because spctl tests the certificate chain against the current machine’s policies and your own dev certs are trusted, you may have to move the thing you’re testing to a VM or another Mac to see any errors a typical user would see when running your generally untrusted signature.

Previously:

Update (2023-04-21): TN3147:

Migrate your notarization workflows to notarytool from the deprecated altool.

Xcode 14 Announced

Apple:

Discover the latest productivity and performance advancements in Xcode 14. We’ll introduce you to the fully redesigned SwiftUI canvas experience, explore enhancements to code completion and navigation, and take you through performance improvements we’ve made throughout the entire development process. We’ll also show you how you can now read and respond to feedback on your TestFlight builds without ever leaving Xcode.

This looks promising, though unfortunately it’s the only version of Xcode that runs on Ventura. It was easier to get my code building than with previous updates, but there are a bunch of “Could not create compact unwind for […] register 19 saved somewhere other than in frame” compiler warnings that I don’t know what to do with.

Guilherme Rambo:

Xcode 14 beta is significantly smaller than Xcode 13

The watchOS and tvOS SDKs are no longer bundled.

Paul Haddad:

I guess they decided [Bitcode] was a bad idea. Sounded like it had a lot of promise.

I was wondering about that.

Nathan Lawrence:

A personal favorite:

Xcode now pins elements of your code structure to the top of the editor as you scroll through a document. To toggle this behavior, use “Show: Code structure while scrolling” in Xcode’s Text Editing preferences.

This is great.

Toomas Vahter:

Whoever has dealt with app icons are going to be happy to hear that in Xcode 14 we can just use a single image for the app icon.

[…]

There is a new build setting ENABLE_USER_SCRIPT_SANDBOXING for turning on sandboxing in shell script build phases.

[…]

The platforms State of the Union mentioned Swift and SwiftUI being the future of building apps. But on the other hand, there are multiple changes happening in Interface builder as well. More options and more supported views.

[…]

As Xcode Cloud is not any more in beta, Apple is removing Xcode Server from Xcode 14.

Sarun W.:

There are three new snippets to generate boilerplate for Codable.

Previously:

Update (2022-06-10): Philip Davis:

My 3 favorite Xcode features released at #WWDC22

Update (2022-07-01): See also: Hacker News.

asveikau:

There was another platform i will leave nameless. They performed additional “ahead of time” type optimization after a developer submitted a binary. That layer had bugs. I personally saw them surface. Since the AOT happened transparently on the platform vendor’s machine it was very hard for a developer to test, diagnose, confirm fixed, etc. The developer still got blamed for bugs hitting the end user. That layer one can also imagine could see changes on the platform vendor’s server so something could theoretically break later on and nobody would know until the bug reports came flooding to the developer.

Because it was a goofy idea. Sounds good superficially, but ill conceived at the design stage.

Moreover, that goofiness may also be why they don’t need it anymore. It wasn’t a solid idea to begin with, so your changing requirements wind up revealing that.

Update (2022-08-29): Apple (via Damien Petrilli):

The diagram view has been removed from the Core Data data model editor in Xcode 14.

Wednesday, June 8, 2022

Shareful 1.7

Matthew Bischoff:

If (like me) you’re enraged every year that you can’t copy a link out of the Developer app on macOS, even though you have Copy Link enabled in your Share Menu settings, I’ve got just the Feedback for you to dupe.

Sindre Sorhus (via Darren):

Shareful makes the system share menu even more useful by providing some commonly needed share services:

  • Copy — Copy the shared item to the clipboard and so you can quickly paste it into another app.
  • Save As — Choose a directory to save the shared item to.
  • Open In — Open the shared item in any app.

Previously:

WeatherKit

Apple:

WeatherKit offers valuable weather data for your apps and services to help people stay up to date on the latest conditions. Learn how to use Swift and REST APIs to access information about the current weather, 10-day hourly forecasts for temperature, expected precipitation, wind reports, the UV Index, and more. We’ll also share how WeatherKit can provide timely, hyperlocal weather information without compromising someone’s personal data or their privacy.

Dan Moren:

This is a big endeavor, but its existence shouldn’t come as a surprise—and not just because of the timeline for sunsetting the Dark Sky API. Apple loves having key technologies under its control and if you’ve scrolled down in the company’s Weather app pre-iOS 16 (or requested weather information via Siri), you’ve surely seen (or heard) that the weather data on Apple’s platform has historically been provided by The Weather Channel. It’s not hard to imagine that that reliance on a third party (much less have to display their logo in one of Apple’s prominent apps) for this critical data may have rankled the folks in Cupertino.

[…]

WeatherKit provides a ton of data, including minute forecasts (specifically for precipitation), hourly forecasts, daily forecasts (up to 10 days), weather alerts, and a veritable tsunami of historical weather data for those who want to crunch the information to extrapolate trends. That means a lot of opportunity for apps to use weather data without having to go to a third-party source, which generally charge not insubstantial fees for access to their APIs.

Steve Streza:

Interesting that Dark Sky is just an Apple-branded REST API now, didn’t expect that it would stick around for non-Apple platforms.

Ryan Jones:

WeatherKit is NOT completely free, but is super generous.

  1. Dark Sky gave 30k free/month. This is 500k free.
  2. Typical fee is $1 per 10k calls. This is $0.50 per 10k.

David Smith:

Looks to be roughly half of what the old Dark Sky API pricing was. ~20,000 requests/$1. Solid.

Steve Troughton-Smith:

WeatherKit is only provided as a Swift API, with no class prefixes (😖)

Previously:

Update (2022-07-05): See also: Hacker News.

System Settings

Joe Rossignol:

The new System Settings app looks more similar to the Settings app on the iPhone and iPad, with settings placed in a sidebar for easy access.

[…]

System Preferences had been the app’s name for over 20 years, but System Settings is the new name going forward.

I like having the list of panes in the sidebar. The search works better than before, and I like how the matches from lower in the hierarchy are displayed. The groupings could use some work—and maybe some titles—but they’re an improvement over what we had before. I like that the list in the sidebar remains visible when you’re viewing a settings pane. Unfortunately, sometimes the keyboard shortcut for searching doesn’t work.

I don’t really understand the renaming from Preferences to Settings except for consistency with iOS. And why did iOS call it Settings in the first place? It’s going to be annoying to support multiple app versions and to change the application menu item and the window title dynamically. Documentation and scripting dictionaries will need to be updated and bifurcated, too. Some of the panes have changed name, e.g. Security & Privacy is now Privacy & Security. More documentation and alerts to update. Does it really make sense for Software Update and Time Machine to be buried inside of General, or are they just that way because of iOS?

The main part of the new Settings window is really disappointing. It uses a multi-column interface that does not feel very Mac-like. You can only see one column at a time. macOS started out with such nice column views in Finder and iTunes; these days we get a little Back button and horizontal scrolling thumbnails within a column. Sometimes the Back button disappears even when a lower level pane is being displayed. The lists of sub-panes are not keyboard navigable. Selection is buggy. Within each pane, the controls are laid out in a very uniform way in scrolling lists that remind me of nothing so much as cross-platform apps like Chrome and Discord. Did Apple do this because the new design is superior in some way (that escapes me)? To make it more like iOS? Because this sort of generic layout is easier to do with SwiftUI?

The other thing I object to is the use of iOS-style switches instead of checkboxes. Apple has specifically said:

Use a switch to toggle significant preferences, or preferences that provide access to other controls. Avoid creating lists or tables of switches; instead, for general-purpose toggles, use an instance of NSButton to display a checkbox.

and:

Avoid using a switch to control a single detail or a minor setting. A switch has more visual weight than a checkbox, so it looks better when it controls more functionality than a checkbox typically does. For example, you might use a switch to let people turn on or off a group of settings.

In general, don’t replace a checkbox with a switch. If you’re already using a checkbox in your UI, it’s probably best to keep using it.

Riccardo Mori:

Before you could see all panels at a glance. Now — welcome to scrolling.

On my 16-inch MacBook Pro, with the Dock on the side, I can resize the window to be taller and barely see all the items in the sidebar. I still see this as an improvement over the icon grid, though, as I had so much trouble finding things there. Scrolling in the right pane is required even with the enlarged window, which is a shame.

Jeff Johnson (tweet, Hacker News):

Notice first that on Monterey, the keyboard focus starts in the Search field, whereas it doesn’t on Ventura. I’ll talk more about keyboard focus later, but also notice the bizarre popup buttons on Ventura. The button doesn’t even appear until you hover over it!

[…]

On Monterey, you could customize the preference panes, hiding the ones you don’t want to see.

[…]

On Ventura, this [Full Keyboard Access] setting is more difficult to find, because it’s buried behind another button.

[…]

I honestly don’t get the appeal of switches at all, not even on touch screens. The only "point" of switches appears to be pointless animation. But otherwise, simple click or touch checkboxes are easier and quicker to toggle.

For example, with checkboxes you can click anywhere on the text.

On Ventura, the list of [Notification] apps cannot be navigated by keyboard at all, and neither can the settings for each app.

[…]

System Settings window has a fixed width. This is unfortunate, because the settings are competing with the sidebar for that width (approximately the width of an iPad, you might say).

You can’t even make it wide enough so that the “Apple ID, iCloud, Media…” at the top isn’t truncated.

Steve Troughton-Smith:

The new System Settings app on macOS brings the performance, reliability, and Mac-optimization you’ve come to expect from SwiftUI to a core system app. It’s exactly as good as that sounds.

CM Harrington:

More lost sheep design.

John Siracusa:

I’m not feeling it, Ventura…

Dr. Drang:

I thought the thing people didn’t like about System Prefs was scanning through the grid of icons to get to the right panel. Not the layout of preferences within the panels.

Dan Masters:

Oh my god. macOS’ Trackpad preferences pane was one of the best examples human-centred design.

See also: Mario Guzman, Ryan Jones.

Previously:

Update (2022-06-09): Oskar Groth:

Apple is throwing their own HIG’s out the window here. Split views, panes, check boxes and modal panels are out. Instead we have a vertical UI with iOS-like grouping and tiny switches.

[…]

There has never been a NavigationController eqvivalent for macOS. We were literally told by Apple not to present UI this way. So it represents a pretty significant shift in macOS design philosophy.

Nick Heer:

I am not as much of a detractor of Apple’s current visual design themes as some, but I worry about stuff like this. They lack the visual clarity and integrity of great Mac software.

So begins another summer of filing dozens of bug reports with the words “insufficient contrast” in each of their titles.

John Siracusa:

This comparison (suggested by @gruber) is particularly harsh.

Jeff Johnson:

If the General items were included in the sidebar, it would be even more of a mess. As it is, the sidebar can only show 18 items on my screen at minimum window height, 27 at maximum window height (with bottom Dock). So the sidebar will never show all of the items, unlike in System Preferences. […] The Desktop & Dock section in System Settings is also absurdly long. It combines preferences from multiple panes on Monterey: Dock & Menu Bar, General (now named Appearance in System Settings), and Mission Control.

[…]

The Wi-Fi section in System Settings shows of full list of the available wi-fi networks. For me, this list contains more than 30 networks in my area. Even worse, you have to scroll down to the bottom of the section, below the network list to see a couple more preferences.

[…]

Spotlight Privacy has the opposite problem in System Settings. You have to click a “Spotlight Privacy…” button to show the list of folders excluded from Spotlight. In System Preferences, the list is in a tab in the Spotlight preference pane. Ventura System Settings seems to be allergic to tabs.

[…]

The “Enter password” field steals the focus when you arrow down to the Passwords section in the System Settings sidebar.

Thomas Clement:

The thing that kills me with the new System Settings design is that people like myself have spent years trying to tell people at big companies to not do iOS-like design like this for the macOS. Now they’ll just point to this, nothing more we can do.

John Gruber:

Anyway, Basic Apple Guy’s suggestion/prediction turned out to be spot-on. In MacOS 13 Ventura, System Preferences has been replaced by Settings, and it’s not merely a name change, it’s a complete redesign with an iOS-style layout. Joe Rossignol at MacRumors and William Gallagher at AppleInsider have good pieces illustrating the new design.

From what I’ve seen in Ventura developer beta 1, I wish I’d just written that short “sounds like a fine idea in theory but a bad idea in practice” post back in February. But, after bringing this up during The Talk Show Live From WWDC 2022 on Tuesday, hearing Craig Federighi’s take has me more open-minded.

Damien Petrilli:

“What’s new in SwiftUI” session shows the new macOS Settings App as an example of a great designed SwiftUI App 🙃

Mario Guzman:

OS X Mountain Lion was the last Mac OS with a good System Preferences. Multiple sections, labeled sections, consistent icons.

Christopher Grande:

Print dialogs got this treatment as well.

Some good changes, now resizable, printer/app features broken out into discreet sections instead of only being visible one at a time.

See also: MacRumors Forums.

Update (2022-06-10): Sami Fathi:

During the 90-minute conversation, Federighi addressed recent controversy that has arisen following macOS Ventura’s introduction of the redesigned System Preferences, now renamed System Settings. One aspect of the redesign that has gotten noted on Twitter is the removal of videos that demo macOS trackpad gestures. Federighi confirmed during the interview that those videos are coming back in a “new experience” in a future macOS Ventura beta.

Federighi said that despite what some may think, macOS Ventura’s redesign of System Setting was not largely inspired by iOS. Federighi instead said that team’s main goal was consistency for users, saying System Settings on macOS Ventura is a “great interface.”

Update (2022-06-16): Tony Arnold:

Check the overlapping layers of information/hierarchy below, then realise that the top layer scrolls. There are no affordances — you have to scrub for info — it’s mystery meat nav.

Mario Guzman:

Most of these Settings panes also have their Help button at the very bottom of the scroll. Oh, do you want to see what this Pane is all about? Maybe there’s a Help button with more info here somewhere but you gotta scroll to find out!

Update (2022-06-24): Paul Haddad:

Let’s assume that Sys Prefs has to be re-written in SwiftUI and needs an entire new look. Why the hell does it need to happen now? The current build feels like alpha level software, it’s not going to be ready by Fall. Just spend the year making it solid and release in 14.

If you want to use an app to prove that SwiftUI is the future (🙄) of Apple dev, go use Pages or Numbers or Keynote. Any of them would be a far more impressive feat, wouldn’t be tied to an OS release schedule and are easy to keep old versions around if it turns into a hot mess.

I’ve been running into more bugs with System Settings in Ventura Beta 2.

Update (2022-07-07): macOS 13.0 Developer Beta 3 introduces new animations in the Trackpad pane.

Update (2022-07-11): See also: Accidental Tech Podcast.

Update (2022-08-11): Niki Tonsky:

Ok thread of weird stuff found in redesigned macOS Ventura System Settings app.

Mario Guzmán:

We must remember a lot of these are bugs that may be fixed before the final release in the fall.

But the majority of these are straight up abominations because they’re trying to retrofit Desktop UX into mobile UX. This makes me sad because the Mac used to be the shining example.

Marco Arment:

It’s FAR worse than you think.

It looks and works like a quick-and-dirty prototype that should’ve been brought to a design meeting, considered, and ultimately abandoned.

And Apple’s going to ship it.

Previously:

Update (2022-08-12): Nick Heer:

This is, indeed, a thread full of a lot of really weird stuff. There are some new standard UI components in here, but there are definitely some custom elements and behaviours that, all told, make it look like a bad port of an application from a different platform.

[…]

The more concerning thing this time around, for me, is that it is part of a pattern of questionable choices introduced and never re-evaluated because the next version of MacOS will be shown off just ten months from now.

Update (2022-10-10): Daniel Jalkut:

macOS 13 Ventura Beta print panel to System Settings: “hold my beer.”

Arroz:

One of the foundational ideas of Mac interfaces is that content scrolls but UI doesn’t. This is being thrown out the window because for some reason someone wants wide screen 13 to 27 inch multiple display capable devices to behave like 4.7 inch portrait ones.

Guy English:

This whole scroll views to get at more stuff is so very web design centric. Tabs! They existed and were a great idea.

John Gruber:

Yes, MacOS 13 Ventura is still in beta. Yes, it’s probably not scheduled to ship until October or maybe even early November. But the basic fit and finish of Ventura’s new System Settings is just bad. It feels like there’s something deeply wrong with SwiftUI that, even while in-progress, so many little layout details are apparently hard to get right.

See also: MacRumors.

Collin Donnell:

I’ve been an iOS and Mac developer for 14 years. I was a senior engineer at Apple who helped shipped an app that’s in macOS dock and on the iOS home screen. You cannot tell me “SwiftUI is so young!” or “Ventura is in beta!” This is a real indictment of SwiftUI on macOS.

Yannik Bloscheck:

SwiftUI might make some stuff a bit more difficult, but it’s possible to create a great Settings app in SwiftUI.

It’s mostly Apple not caring enough about Settings. Just see Settings on iOS. That’s bad, too. The macOS Settings were good though. So we hold it to a higher standard.

Marco Arment:

It’s hard to tell whether Apple’s recent macOS designs are bad because of SwiftUI itself, or because they seem to have lost the ability, will, and care to design usable Mac interfaces.

Probably some of both.

Jeff Johnson:

The garbage software that Apple ships nowadays — using any and all programming API — is just the natural result of leadership not giving a damn.

John Gruber:

I have the sense that if some component of iOS were getting a complete rewrite like this, and it was still as far away from “pixel perfect” as Ventura’s System Settings remains, Apple would not have unveiled it yet. It just feels like Apple has a lower standard for MacOS fit and finish than for iOS.

Federico Viticci:

Let’s check in on how SwiftUI is going in one of Apple’s professional apps for iPhone and iPad: Shortcuts.

Surely it can’t be that bad after a full year of SwiftUI and in beta 6 by mid-August, right?

Joe Fabisevich:

To me this signals to me that the app is in a bad state due to factors that have little to do with the UI framework. I’ve built more complex interfaces that this in SwiftUI, and the fact that it doesn’t seem to have been touched much in the last year is the concerning part!

Craig Hockenberry:

Spend a couple of hours with SwiftUI on Ventura and you will totally understand why Settings is so damn bad.

At best, this is alpha quality software. Not even close to what you can achieve on iOS/iPadOS.

Steve Troughton-Smith:

Apple’s unforgiving schedules don’t have the capacity to pull off something like SwiftUI w/o dramatically lowering the quality & reliability of its apps. The tech is coming from the wrong place, and being pushed for all the wrong reasons. It is not product-first, and it shows.

Daniel Jalkut (tweet):

On second, third, and many blushes beyond, however, the design of System Settings appears to represent a major regression in overall usability and aesthetics.

[…]

With Apple Silicon, Apple was able pull the proverbial table cloth out from under the exquisite place settings of the Mac, comprising its beloved hardware and software features, while leaving everything standing exactly as it was. That’s quite an achievement.

I think that SwiftUI would be judged as a more successful transition if Apple had pulled off a similar stunt. What if they had approached the challenge by making sure, first and foremost, that every Mac and iOS UI component behaved exactly the same as before? Then, as with the Apple Silicon changes, they could leverage the advantages of the new technology to expand and improve upon the status quo, rather than attempting to replace it.

My guess is that with that strategy they wouldn’t be shipping it this year. If there are so many functionality problems—putting aside design and aesthetics for now—when following the SwiftUI happy path of a uniform, iOS-style interface, trying to duplicate a Mac-style interface would be even harder. But that would have been a good test, because SwiftUI absolutely should be capable of building such an interface.

See also: The Talk Show.

Marco Arment:

One reason (of many) Apple shouldn’t ship the Settings rewrite is that it gives SwiftUI a bad reputation that will last for years, and will scare more developers into writing it off and using other cross-platform frameworks instead.

It’s a long-term strategic mistake to ship it.

Steve Troughton-Smith:

There is a lot of pent-up angst in the community about the erosion of the Mac experience; a lot of it had been pointed at Catalyst, with the misguided assumption that SwiftUI was here to save the Mac. The reality is that SwiftUI is just another way to disinvest in the platform.

Apple let macOS coast on its momentum for a long time while it was distracted with iOS, and as a result we’ve seen a significant deterioration in up-to-date institutional knowledge, skills, core values in both Apple developer material and the wider dev base. Mac just not priority.

What the future of macOS looks like as Apple’s employee base ages out and that care & attention is lost forever? Fresh new hires, who’ve never known a reason to care about the Mac, trying to rewrite key portions of the OS with unforgiving yearly timelines and shaky foundations.

Paul Haddad:

Apple can’t revert to Sys Prefs because it would be an admission that this slide is wrong. So they’ll ship the abomination which will also show that the slide is wrong.

You can’t just defend SwiftUI by throwing the System Preferences 🤮 design under the bus. By all means please throw it under a bus, but the thread of weird UI issues is largely SwiftUI bugs. Native AppKit code doesn’t do those kind of things.

Francisco Tolmasky:

I’ve been saying this since Catalyst: Apple has succumbed to “webdev thinking”. It’s 100% the same logic as Electron: it’s too hard to target all these platforms, especially Mac’s low-market share. At least ReactNative/Electron/Catalyst/SwiftUI let us ship SOMETHING vs. nothing.

That doesn’t mean there aren’t good ideas in these frameworks. SwiftUI has very good ideas! So does React! Arguably very similar ideas… But that doesn’t change the fact that the goal of these frameworks is absolutely not to create a UI that feels crafted for the platform.

[…]

But these “in-house bridge” frameworks like Catalyst and SwiftUI often offer no such tangible benefits to users! Drag & drop sucks in Catalyst apps. Everything looks broken in SwiftUI. They’ve got the non-native feel of 3rd party frameworks… while only running on Apple devices!

Francisco Tolmasky:

Even developing SwiftUI as open source would be better that the current situation. Apple wants to trickle bug fixes with OS updates like it’s some mature product when it’s clearly far from done. Its development thus feels slower AND more haphazard to modern open source approaches.

[…]

And yes, there are downsides to open source, but it’s not like we’re currently getting the upsides of closed source development with SwiftUI! Things like a coherent vision, stability, responsive support, predictable improvement without regressions in random updates…

Francisco Tolmasky:

My fear is that SwiftUI, beyond having obvious problems today, is also unintentionally locking us into today’s UX fashion, since it’s barely capable of properly applying a tiny color to your app, let alone leaving the door open to a new wave of highly creative UX experiences.

BTW, this is coming from someone who thinks SwiftUI-style frameworks are the future. I just think that it’s not fully figured out yet. That’s why it’s the future & not the present. & I don’t just mean not finished or beta, but rather still an area of active research.

Ironically that’s why I think it’s troubling that Apple keeps trying these new frameworks on relatively simple apps like System Prefs. Beyond showing that it can't even do those yet, it also kind of limits the ceiling of what they're tested on before being considered ready.

Benjamin Mayo:

This one is really interesting because you'd have to go out of your way to choose a different chevron style. So I looked up the same screen in Monterey and huh! They mechanically copied across the same icon, even though the surrounding UI was reflowed.

Niki Tonsky:

The act of tabbing out (losing focus) changes suggestions. Web-like levels of polish.

Jonathan Deutsch (tweet):

Quality of work aside, this release represents the most drastic change System Preferences has seen since the Mac OS X Public Beta in 2000. Yet it appears to be mostly re-arrangement, converting meticulously-laid-out controls to long scrolling lists. I liken the visual refresh to an office cube farm – inexpensive for the developer and unmemorable, uncultured, and soul-crushing for the user.

Often when developers convert a bespoke UI to a grid-based UI, it is due to refactoring each item to a common paradigm. This reduces backend complexity and lets all items benefit from central improvements. Unfortunately, it does not look like this was a driving force behind Apple’s redesign. I see no evidence the System Preferences team has rethought OS-level settings primitives or tried reconsidered how users should be able to customize and control their OS. The new System Settings is instead focused on blindly matching the design of iOS, resulting in arguably inappropriate UI patterns for a desktop platform.

It got me thinking… what if System Preferences was reimagined? What could have been better for the last 22 years if it was well-structured under the hood? What might be easier with all settings sharing an underlying setting primitive data structure (even if it is displayed in a cubicle UI)?

Jason Snell:

In my Macworld column tomorrow I mention as an aside the idea of being able to bookmark/favorite settings. If you use startup disk a lot, wouldn't it be nice to get to it fast? But that requires an actual rethink of the entire app.

John Siracusa:

Remember the top bar in Mac OS X 10.0 through 10.3?

Jason Snell:

Mac screens are in widescreen aspect ratios. There’s no reason for the System Settings app to be almost exactly square. (You can actually stretch it taller! But not wider.) One of the biggest confusion points in the System Settings app is that it’s very hierarchical in spots, so it’s easy to get lost. One way to make that less confusing is to embrace the metaphor from Finder’s Column view (Steve Jobs’s favorite view!) and let the app get wider, displaying multiple levels of hierarchy.

Mario Guzman:

  1. Options that don’t apply to my MacBook Pro without Touch Bar appear in search results yet aren’t accessible nor do they appear in the main UI.
  2. Clicking on them does nothing.
  3. Sidebar isn’t resizable; so any text that is cut off is inaccessible.

Mark Munz:

What happened to Advanced options in Language & Region in macOS 13?

macOS 12 let you customize numbers, dates, times.

Riccardo Mori:

System Preferences in Mac OS X 10.6 Snow Leopard. It was much better when the sections had category names. The only thing I would have changed is that “Internet & Wireless” into “Internet & Networks” or “Internet & Connections”. There is nothing confusing or chaotic about this.

Norbert M. Doerner:

“unknown error”. Yeah. Sure.

And why this essential #Spotlight setting is hidden in the “Siri” section?

Howard Oakley:

Apps built using AppKit and Interface Builder in Xcode 14.1 adapt best of all. When run on Ventura, they default to using Settings, and on Monterey or earlier they use Preferences instead, which is really neat. That isn’t true, though, for similar apps built with Xcode 14.0, which stay with Preferences whether on Monterey or Ventura.

Jeff Johnson:

On the macOS 13 Ventura beta, the venerable “Preferences…” menu item has been replaced by the iOS-like “Settings…” menu item in Apple’s built-in apps. The menu item also gets automatically replaced in third-party apps if they’re compiled with the macOS 13 SDK in the Xcode 14 beta. Fortunately, I’ve discovered a way to undo this change and stop the creeping iOSification of the Mac.

Or, you can register the NSMenuShouldUpdateSettingsTitle default as true to opt in while still building from Xcode 14.

Update (2022-10-14): Jonathan Wight:

“Hey you know loss of data can be a major problem and reliable backups are one of the most important ways to prevent that?”

“Uh sure”

“Let’s bury the Time Machine settings 15 levels deep in the new Systems Settings where no one will find it!”

[…]

“Let’s also have it so that when a backup fails, it fails silently and only puts a little red icon in that settings screen we hid!”

Update (2022-11-01): Pedro José Pereira Vieito:

The App Store review team has rejected my app because of a bug… in the macOS Ventura System Settings app… 😅

Maurice Parker:

Now that I’ve actually used it, I appreciate the design decision that was made. I know a lot of people were critical, myself included, about basing the design of the System Settings on the iOS ones. But making it like the iOS ones reduces cognitive load when switching back and forth a lot more than I thought it would. I can find the setting that I want much easier now. […] Because so many more people own an iPhone than a Mac, making Macs easier for iPhone owners to use is a good strategy.

Recall that Federighi specificially said that they were not trying to make it more like iOS.

Update (2022-12-23): Jeff Johnson:

Unfortunately, Apple has continued and expanded its user hostility by completely removing NSMenuShouldUpdateSettingsTitle from Ventura. I’m not sure when this happened exactly, but it might have been in this week’s macOS 13.1 update.

[…]

It’s been brought to my attention by Randy Saldinger that macOS 13.1 no longer respects the SDK of the compiled app. Previously, the Preferences menu item was only changed to Settings if the app was compiled with the macOS 13 SDK. Now it happens to every app!

Update (2023-04-03): Mario Guzman:

“Settings” is so impersonal and computer-centric where as “Preferences” are user-centric; As in, these are my chosen preferences vs these are my Mac’s settings.

Steve Jobs literally had a keynote about software being user vs computer centric.

Update (2023-12-21): Jeff Johnson:

This is a terrible user interface, because it looks like a text field with a placeholder, but it’s not a placeholder. Only the right side is clickable, but there’s no visual indicator of that.

Why isn’t “Email or Phone Number” a label outside the field?!?!?!?

Update (2024-12-02): Mario Guzmán:

The cognitive overload I have to do to just read this novel simply to get to the setting I want… is insane!

This design is just awful. The previous System Preferences was better because this would probably be broken into tab views so you start with a segmented control and you’d click the section you want.

Now I have all this visual scanning to do.

I agree. The column design works OK with General because it has another level of sections inside. But Desktop & Dock and some of the others have too many settings in one flat list. Section headers aren’t enough.

Tuesday, June 7, 2022

WWDC 2022 Links

General:

What’s New:

Release Notes:

Key Sessions:

Live Blogs:

Podcasts:

Other:

This post will be updated as I find new links. If you see anything good that I missed, please tweet or e-mail me.

Previously:

Monday, June 6, 2022

iPadOS 16 Announced

Apple (feature list, MacRumors, Hacker News):

New features in Messages make it easy to start collaborating and manage shared content across Files, Keynote, Numbers, Pages, Notes, Reminders, and Safari, as well as third-party apps.

[…]

Users can now edit or recall recently sent messages, recover recently deleted messages, and mark conversations as unread so they can come back to them later.

[…]

Freeform, a powerful new collaboration app with a flexible canvas, gives users the ability to see, share, and collaborate all in one place without worrying about layouts and page sizes, and with full support for Apple Pencil.

[…]

Users are given a moment to cancel delivery of a [Mail] message before it reaches a recipient’s inbox, schedule emails to be sent at the perfect moment, and move sent emails to the top of their inbox to quickly send a follow-up. Messages can also be resurfaced at any date and time with Remind Later, and users can get notified if they forget to include an important part of the message, like an attachment or recipient.

[…]

Designed to take full advantage of the stunning display, Weather comes to iPad with beautiful animations.

[…]

Powered by the performance of the Apple-designed M1 chip, Display Zoom now allows users to increase the pixel density of the display so they can view more in their apps, which is especially useful when using Split View. With Virtual Memory Swap, iPad storage can be used to expand the available memory for all apps, and delivers up to 16 gigabytes of memory for the most demanding apps, helping to make multitasking absolutely seamless.

[…]

Stage Manager is an entirely new multitasking experience that automatically organizes apps and windows, making it quick and easy to switch between tasks. For the first time on iPad, users can create overlapping windows of different sizes in a single view, drag and drop windows from the side, or open apps from the Dock to create groups of apps for faster, more flexible multitasking.

Previously:

Update (2022-06-08): Steve Troughton-Smith:

So, Stage Manager on iPadOS 16. I’m coalescing my feelings about it, which so far are a net negative for b1, so bear with me.

Jack Wellborn:

Below is a rough collection of thoughts I’ve had on Apple’s new Stage Manager.

[…]

I am happy to see iPadOS get some form of windowing, but I would argue what iPadOS really needs is a holistic paradigm. It’s the first beta and I am sure there will be improvements, but at the moment Stage Manager seems like a concept more than anything else. I don’t see how this concept becomes the paradigm iPadOS needs, let alone coexist with the nearly 40-year-old desktop paradigm found in macOS.

Federico Viticci:

To activate Stage Manager, the iPad’s new multitasking mode, you can use a toggle in Control Center. Once Stage Manager is enabled, the toggle turns blue and you’ll be able to use multiple overlapping windows on your iPad Pro or iPad Air. What you should also know is that there’s a way to customize Stage Manager and the UI elements it displays by default: long-press the toggle in Control Center, and you’ll get a menu that allows you to hide the “stage” (the recent apps on the left) and the dock at the bottom.

If you disable both, you’ll end up with a fascinating UI mode where all you see on your iPad are app windows and the only app launcher is Spotlight.

Update (2022-06-09): Jonathan Deutsch:

If Steve Jobs were alive, Stage Manager would have been one of the thousand “No’s”.

<Scratches head, 22 year old memory surfaces> Oh wait…

When Steve Jobs was alive, Stage Manager was simplified and combined with the Dock.

Chris Hynes (archive):

While Apple was transitioning to Intel in 2006, I worked on a team that was toying with a feature code-named “shrinkydink” (sometimes referred to as “always-on exposé”). It was a radical new way to manage apps and windows and effectively made the existing Exposé irrelevant as well as the Dock as a way of managing running apps and windows.

[…]

At WWDC 2022, I was very excited to see Apple announce a new feature for macOS and iPad called Stage Manager. It’s a radical new way to manage windows and likely makes much of Exposé and the Dock functionality irrelevant. Sound familiar? Well, it turns out it looks familiar too!

Sami Fathi:

The Files app on iPadOS 16 is gaining some much-requested features from iPad users, including easier navigation buttons, easier access to common controls such as duplicate and rename, the ability to change file extensions, and more. The new changes are part of Apple’s efforts to make iPadOS apps more “desktop-class.”

Jason Snell:

The result should be nice improvements in stock Apple apps, including Calendar, Mail, Contacts, Safari, and Files. In particular, I noticed that Apple’s list of “desktop-class” features includes a bunch of printing-related features—unsurprising since printing has always been an afterthought on iOS.

[…]

But the big news here is that Apple is trying to get features out of the “more” button in the corner of the screen and display them front and center as toolbar icons. App developers can place a default set of toolbar icons, but—as has been on the Mac since the early days of OS X—they’re now editable, so users can customize their iPad app toolbars to make them fit the way they work.

[…]

In iPadOS 16, you can use a cursor to select items by dragging around them or by holding down Shift or Command and clicking as you would do on the Mac—all without entering that multiple-selection mode.

macOS 13.0 Ventura Announced

Apple (Slashdot):

Stage Manager automatically organizes open apps and windows so users can concentrate on their work and still see everything in a single glance. The current window users are working in is displayed prominently in the center, and other open windows appear on the left-hand side so they can quickly and easily switch between tasks. Users can also group windows together when working on specific tasks or projects that require different apps. Stage Manager works in concert with other macOS windowing tools — including Mission Control and Spaces — and users can now easily get to their desktop with a single click.

[…]

Continuity Camera now gives Mac customers the ability to use their iPhone as a webcam, and unlocks new capabilities that were never possible before on a webcam.

[…]

With shared Tab Groups, friends, family, and colleagues can share their favorite sites in Safari and see what tabs others are looking at live.

[…]

In the biggest overhaul to search in years, Mail now uses state-of-the-art techniques to deliver more relevant, accurate, and complete results. Users can quickly find what they are looking for as soon as they click into search, including recent emails, contacts, documents, photos, and more, all before they even start typing.

[…]

Browsing in Safari is even safer with passkeys, next-generation credentials that are more secure, easy to use, and designed to replace passwords. Passkeys are unique digital keys that stay on device and are never stored on a web server, so hackers can’t leak them or trick users into sharing them.

Mr. Macintosh:

Dropped Mac Hardware:

2015-2016 MacBook Pro
2015-2017 MacBook Air
2016 12" MacBook
2014 Mac mini
2013 Mac Pro
2015 iMac

This seems unnecessary and will make it harder to adopt SwiftUI.

Mr. Macintosh:

2013 Mac Pro was sold until Dec 2019
2017 MacBook Air was sold until July 2019
2014 Mac mini was sold until Oct 2018

Mr. Macintosh:

This database will contain download links for macOS 13 Ventura full Installer pkg files (InstallAssistant.pkg).

Steve Troughton-Smith:

Apple is still prominently displaying the new Home app under its Mac Catalyst developer site section, so I guess the complete redesign didn’t shift it all over to SwiftUI-native

Sam Fathi:

With macOS Ventura, Apple is bringing a native Weather app to the Mac, alongside a new Clock app that lets users set timers, see world clocks, set alarms, and more.

Previously:

Update (2022-06-08): Juli Clover:

USB-C and Thunderbolt accessories connected to the USB-C port on an Apple silicon Mac will require explicit user permission before the accessory can communicate with macOS.

Steve Troughton-Smith:

macOS 13 now automatically uses old-style ‘expanded’ alerts for situations when there’s too much text.

This is great. I still don’t understand why alerts have a different button style

Luming Yin:

The dyld_shared_cache is available at /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld.

Previously:

Update (2022-06-09): Quinn Nelson:

With macOS Ventura, there are now officially more versions of macOS named after places in California than there are versions named after big cats.

Previously:

13-inch MacBook Pro 2022

Apple:

With a faster 8-core CPU and 10-core GPU, working with RAW images in apps like Affinity Photo is nearly 40 percent faster than the previous generation, and up to 3.4x faster for users who are upgrading from a model without Apple silicon.

[…]

With an active cooling system, the 13-inch MacBook Pro is designed to sustain its pro performance.

[…]

Thanks to M2, the 13-inch MacBook Pro also supports up to 24GB of unified memory — along with 50 percent more memory bandwidth — making multitasking and working with large assets super fluid.

It still has 2 Thunderbolt ports and, oddly, still has a Touch Bar and no MagSafe. It also doesn’t get the new camera.

Previously:

Update (2022-06-09): Stephen Hackett:

I understand why the M1 MacBook Air is sticking around at $999. That’s a critical price point for Apple, but having the M2 Air and M2 Pro just $100 apart doesn’t make much sense to me, especially given that the Air is a better machine for the vast majority of people.

This graphic by MKBHD does a great job comparing the two M2 models, after speccing them both to cost the same $1,499.

Update (2022-06-16): Jason Snell:

So while the 13-inch M2 MacBook Pro is going to get attention because of the M2, it’s also worth asking the question that was on everyone’s lips last week after it was announced: Why does this computer exist at all?

Update (2022-06-24): See also: Jason Snell and Monica Chin.

Update (2022-06-27): Joe Rossignol:

YouTube channels such as Max Tech and Created Tech tested the 256GB model with Blackmagic’s Disk Speed Test app and found that the SSD’s read and write speeds are both around 1,450 MB/s, which is around 50% slower reading and around 30% slower writing compared to the 13-inch MacBook Pro with the M1 chip and 256GB of storage.

Update (2022-06-30): Steve Troughton-Smith:

I wish I knew what tangible benefit we were getting from Apple’s SSDs, because even the ‘fast’ ones are less than half the speed of what you can put in a several-year-old PC.

Daniel Rubino:

This drop in SSD performance is quite dramatic in the new 13-inch MacBook Pro.

PCIe4 SSDs in 2022 Windows laptops are on a different level. Even for PCIe3 MBP performance is on the low end as Laptop Go 2 is faster.

Previously:

Update (2022-07-05): Vadim Yuryev (video):

Apple REALLY messed up with the M2 MacBook Pro and in this thread, I am going to prove it.

[…]

With only 10 Chrome tabs open, the base M2 MBP exported a common 5min 4K HEVC clip SLOWER than the previous base M1 MBP.

[…]

The reason why the performance of the 256GB SSD model is lower: Slower SSD transfer speeds lead to slower virtual memory swap performance, which is vital for Apple Silicon Macs, especially 8GB RAM models which fill up the RAM quickly.

Update (2022-07-06): Meek Geek:

The SSD in the $600 64GB M1 iPad Air is faster than the $1300 256GB M2 MacBook Pro 13".

[…]

Good call out to the Stage Manager restriction too.

Previously:

Update (2022-07-12): Mark Ellis:

Max Tech has responded to the criticism that has been thrown their way by publishing another bunch of tests for the M2 MacBook Pro.

[…]

Max Tech once again pits the M1 MacBook Air against the M2 MacBook Pro. Both are base model machines with 256GB of storage and 8GB of unified memory. Rather than pelting both machines with colossal 8K workloads and relentless benchmarks, Max Tech instead demonstrates a bunch of very reasonable tasks. These ranged from Xcode programming, to light photo editing and exporting, multi-tasking, and some 4K video editing.

I’ll let their video do the talking, but the net result is that the 256GB version of the M2 MacBook Pro is only quicker than its predecessor if you’re running one app at a time. If you multitask, it performs much slower than the outgoing model.

Previously:

MacBook Air 2022

Apple (MacRumors, Hacker News, Slashdot):

Built from the ground up around M2, MacBook Air has an entirely new design that is remarkably thin from every angle. It measures just 11.3 mm thin and is only 2.7 pounds, and features a durable, all-aluminum unibody enclosure that feels incredibly solid and is built to last. This thin and light design integrates its components so efficiently that it results in an astonishing 20 percent reduction in volume. With the power efficiency of M2, all of the capabilities of MacBook Air are built into a silent, fanless design. In addition to silver and space gray, MacBook Air is now available in two new finishes — midnight and starlight.

MagSafe returns to MacBook Air, giving users a dedicated charging port that is easy to connect, while protecting MacBook Air when it is plugged in by quickly releasing if the charging cable is accidentally pulled. MacBook Air also features two Thunderbolt ports for connecting a variety of accessories, and a 3.5 mm audio jack with support for high-impedance headphones.

[…]

MacBook Air includes a new 1080p FaceTime HD camera with a larger image sensor and more efficient pixels that deliver twice the resolution and low-light performance of the previous generation.

It’s sad that the super-thin MacBook Air probably has a much better camera than the super-thick Studio Display.

The new MacBook Air sounds great, though. MagSafe is an addition, so you don’t lose a Thunderbolt port like with the MacBook Pro. The RAM ceiling is now 24 GB. The display is larger (but has a notch). Unfortunately, it looks like the trackpad is also larger.

Previously:

Update (2022-07-06): Apple (Hacker News):

Beginning Friday, July 8, at 5 a.m. PDT, the completely redesigned MacBook Air with M2 will be available to order, and will start arriving to customers worldwide on Friday, July 15.

Previously:

Update (2022-07-08): Marco Arment:

From what I saw during the first minute, only the base-model Air was actually available for July 15 delivery.

Any change beyond the two stock configs bumped it to at least July 20–26, and usually August 2–9.

Update (2022-07-14): Jason Snell:

So how is this a MacBook Air and not a MacBook Pro? There are some key differences. The screens on those laptops are much brighter and offer high refresh rates via ProMotion. They’ve got an additional Thunderbolt/USB 4 port, an HDMI port, and an SDXC slot. And most importantly, they’re powered by Apple’s higher-end M1 Pro/M1 Max chips, which are capable of performing heavy workloads.

[…]

However, there is one big difference between the M2 MacBook Air and the 13-inch M2 MacBook Pro, and it’s not the chip—it’s the cooling system. The MacBook Pro has a cooling fan, and the MacBook Air doesn’t. This means the MacBook Air always runs silently, which is nice, but it also means that it will get hotter—and when the M2 chip inside the MacBook Air gets too hot, it has to slow itself down in order to keep working.

To test the difference, I ran the Cinebench test suite on both M2 laptops. In a normal, single run of the test, the MacBook Air and MacBook Pro offered similar levels of performance. But when the test looped, running for more than 10 minutes, the two systems began to separate. The test kept the M2’s processor cores running, the chip heated up, and at some point in the process, the Air needed to slow things down in order to keep things (relatively) cool. (I’ll point out that, even throttled, the M2 Air scored higher than the M1 Air in the same 10-minute test.)

Dan Seifert:

This new [Midnight] color is gorgeous out of the box, with a deep blue-black finish that can change depending on the light. But as soon as you pick it up, it gets covered in greasy fingerprints that are a chore to clean off.

[…]

In testing, the 35W brick only charged the Air 25 percent in 30 minutes with the lid closed — half the speed of the 67W brick — and those speeds were further slowed down when I plugged my iPhone into the charger’s other port. I really wish Apple had just put two ports on the more powerful brick, though there are plenty of cheaper third-party options with more power and more ports than Apple’s options, and they work just fine with the Air’s MagSafe cable.

[…]

The lousy camera was the one thing that kept the M1 Air from getting a perfect score, so I’m very happy to see it has been addressed.

[…]

In my benchmark testing, the M2 Air outguns the M1 model in every test, though the differences aren’t especially stark. But the M2 Air is noticeably slower than the MacBook Pro M2, which has a thicker chassis and a fan to help keep the chip cool under long-running heavy workloads, like a 30-minute Cinebench 23 multi-core benchmark.

Joe Rossignol (Reddit):

One notable detail confirmed by The Verge is that the $1,199 base model equipped with 256GB of storage has a single NAND chip, which will lead to slower SSD speeds in benchmark testing[…] Apple said that while benchmarks of the new MacBook Air and 13-inch MacBook Pro with 256GB of storage “may show a difference” compared to previous-generation models, real-world performance is “even faster.”

See also: MacRumors, John Gruber.

Update (2022-07-19): John Gruber (tweet):

It’s a little bit weird when you use an app that has so many menus that one or more of them fall on the far side of the notch, but I don’t regularly use any apps with that many menus. I’ve got 26 apps running on this MacBook Air right now, and not one of them has too many menus to fit on the left of the notch.

[…]

The practical effect of this pixels-per-inch difference is that the default display resolution of the MacBook Pros is exactly 2×; on the Air, the default resolution uses scaling.

[…]

Switching to this new thinner fan-less MacBook Air from a thicker MacBook Pro that makes frequent, clearly audible, use of its fan sounds like a downgrade. But for the overwhelming majority of Intel-based MacBook Pro users, it’s not.

[…]

In my daily use, this $1,900 MacBook Air feels identical to my $4,700 MacBook Pro.

[…]

It’s best, in my opinion, to consider the $1,500 configuration as the default model (10 GPUs, full-speed SSD performance, and the new 35-watt charger), and to consider the $1,200 configuration something more like the “discount” configuration.

[…]

The biggest (and smallest) room for improvement with the new MacBook Air would be options for larger and smaller displays.

Kirk McElhearn:

The M2 MacBook Air has a full-size function key row; I found the mini-keys on the previous model annoying, and it’s good to have the larger keys, especially for the power button, which doubles as the Touch ID sensor.

[…]

Comparing my M1 MacBook Air with the new M2 model, the write speed of the latter is more than 20% slower (using BlackMagic Disk Speed Test’s 5 GB testing routine), and the read speed is nearly half as fast.

Mark Ellis:

So, the M2 MacBook Air is slower at exporting 4K footage than the M1 version when multitasking, by a not inconsiderable 29 seconds. Yet, with everything closed, they performed identically.

[…]

So, if you upgrade from the 256GB SSD to the 512GB SSD, you gain an extra 23 seconds during a 4K export when multitasking.

Update (2022-09-26): Michael Larabel (via Hacker News):

For ending out this week, here is a follow-up article looking more closely at the Apple M2 in the MacBook Air against the AMD Ryzen 7 PRO 6850U “Rembrandt” within the Lenovo ThinkPad X13 Gen3.

Update (2022-12-14): Mark Ellis:

The difference this time is that I actually put the M2 MacBook Air to proper work. Rather than running the aforementioned and entirely unscientific Final Cut Pro export ‘benchmark’, I attempted to undertake some proper 4K video editing.

That was the test I should have carried out originally because it revealed that the likes of Max Tech really did hit on something. Although, I should note at this juncture that I never disbelieved those guys – I just wasn’t particularly keen on the hyperbolic reporting.

Yet, they were right. This isn’t good enough.

Update (2023-03-03): Scott Anguish:

Switching between it and my work 16” M1 MacBook Pro the biggest thing I’m noticing, and not liking at all, is the screen. Not the size, but the quality. It just isn’t anywhere near as sharp looking.

Apple M2

Apple (MacRumors, Hacker News):

Built using second-generation 5-nanometer technology, M2 takes the industry-leading performance per watt of M1 even further with an 18 percent faster CPU, a 35 percent more powerful GPU, and a 40 percent faster Neural Engine. It also delivers 50 percent more memory bandwidth compared to M1, and up to 24GB of fast unified memory.

[…]

The media engine includes a higher-bandwidth video decoder, supporting 8K H.264 and HEVC video.

Apple’s powerful ProRes video engine enables playback of multiple streams of both 4K and 8K video.

Previously:

Update (2022-06-10): Dylan Patel:

M2, codenamed Staten, is generally based on the same IP blocks as A15, codenamed Ellis. The codenames being based on some of New York’s most well-known islands which should be a hint to how closely related these architectures are. A lot of the disappointment in performance uplift comes from weak gen-on-gen gains given the nearly 2 yearlong gap versus M1.

[…]

We discussed this in the past, but a lot of the slow down stems from Apple losing leagues of amazing engineers to firms such as Nuvia and Rivos.

[…]

The funkiness of Apple’s marketing image does mean there is an error window of about 3% after the die was scaled in size.

[…]

The [P] core itself is 21% larger than in M1, and 7% larger than A15. The big area of gen-on-gen growth is with the shared L2 cache which has gone from 12MB to 16MB compared to both M1 and A15.

[…]

One very interesting change is that the ROB appears smaller in the Avalanche core that is found in A15 and M2 versus the Firestorm core found in M1 and A14.

[…]

The E-Core was the main unit of change from a CPU perspective from the A14 to A15 and that holds true here.

[…]

The combo of minor wafer price increases, larger dies from 118.91mm2 to 155.25mm2, and more expensive memory hurts [costs] a lot.

Update (2022-06-16): See also: Hacker News.

Update (2024-05-03): See also: Howard Oakley (Hacker News).

watchOS 9 Announced

Apple:

The Workout app, one of the most popular apps on Apple Watch, has been updated to provide richer metrics for measuring performance, as well as new training experiences to help users reach fitness goals. The familiar in-session display now uses the Digital Crown to rotate between easy-to-read Workout Views, so users can see important metrics for different training styles. Heart Rate Zones, which can be manually created or automatically calculated using personalized Health data, can be used to monitor the intensity of a workout.

[…]

The Sleep experience on Apple Watch already empowers users to create Wind Down and Bedtime schedules, as well as track their sleep to help them meet their goals. Sleep tracking in watchOS 9 provides even more insights with the introduction of sleep stages.

[…]

The new Medications experience on Apple Watch and iPhone helps users manage and track their medications, vitamins, and supplements, allowing them to create a medications list, set up schedules and reminders, and view information on their medications in the Health app.

[…]

Staying informed in the moment is a powerful part of the Apple Watch experience, and in watchOS 9, notifications have been redesigned to be less interruptive while still being impactful, arriving with new slimline banners when Apple Watch is being actively used.

[…]

With new Quick Actions on Apple Watch, users can do even more with a double-pinch gesture, including answer or end a phone call, take a photo, play or pause media in the Now Playing app, and start, pause, or resume a workout.

Previously:

Update (2022-06-08): Stephen Hackett:

watchOS 9 is perhaps the most and least surprising, as it drops support for the Apple Watch Series 3. Which is still for sale, somehow.

Kuba Suder:

Oh wow, they actually did it… they’ve dropped support for a device that they’re literally still selling on their website at this moment… has this ever happened before?

Joe Rossignol:

watchOS 9 expands QuickType to the Apple Watch Series 7, providing users with suggested words above the keyboard as they type.

Alex Guyot:

As usual, health and fitness are the core areas of focus in the update, with the Workout app in particular getting packed with new features and metric views. The Sleep app will now track in-depth sleep stage data, and an all-new Medications app is making its debut as well. Throw in some minor quality-of-life system changes, a handful of new watch faces, and some nice accessibility improvements, and we’re looking at a fairly standard watchOS update this year.

iOS 16 Announced

Apple (feature list, MacRumors, Hacker News):

The Lock Screen gets more personal, beautiful, and helpful with iOS 16. With a new multilayered effect, the subjects of photos are artfully set in front of the time on the Lock Screen, creating a sense of depth. Users can also change the look of the date and time with expressive type styles and color choices.

[…]

Live Activities is a new feature that helps users stay on top of things that are happening in real time, such as a sports game, workout, ride-share, or food delivery order, right from the Lock Screen.

[…]

iCloud Shared Photo Library gives families a new way to share photos seamlessly with a separate iCloud library that up to six users can collaborate on, contribute to, and enjoy. Users can choose to share existing photos from their personal libraries, or share based on a start date or people in the photos. A user can also choose to send photos to the Shared Library automatically using a new toggle in the Camera app.

[…]

Users can pause a video on any frame and interact with text. Live Text also adds the ability for users to quickly convert currency, translate text, and more.

[…]

Apple Pay Later provides users in the US with a seamless and secure way to split the cost of an Apple Pay purchase into four equal payments spread over six weeks, with zero interest and no fees of any kind.

[…]

Apple Maps is introducing multistop routing, so users can plan up to 15 stops in advance and automatically sync routes from Mac to iPhone when they’re ready to go.

[…]

Dictation offers a new on-device experience that allows users to fluidly move between voice and touch. Users can type with the keyboard, tap in the text field, move the cursor, and insert QuickType suggestions, all without needing to stop Dictation. In addition, Dictation features automatic punctuation and emoji dictation.

[…]

Siri adds the ability to run shortcuts as soon as an app is downloaded without requiring upfront setup.

There were also major CarPlay announcements, but cars using them will not ship until late next year. Missing from the list of manufacturers: Tesla and Toyota [Update (2022-06-06): and also BMW, Hyundai, and Kia].

Previously:

Update (2022-06-08): Juli Clover:

When you open up the WiFi section of the Settings app and then tap on the network you are connected to, there’s a new “Password” option. Tapping it shows you the password of that WiFi network, following authentication with Face ID, Touch ID, or a passcode.

Sami Fathi:

iOS 16 includes a revamped Dictation system that features a cleaner interface that makes it easier to switch between voice and typing, as well as automatic punctuation and support for emoji insertion.

Juli Clover:

iOS 16 is designed to make it simpler to manage your connected AirPods and Beats headphones by adding a new section to the Settings app when the accessories are connected.

Juli Clover:

Security updates will be able to be automatically applied between standard software updates, so implementing security fixes will not require a full new version of iOS.

Sami Fathi:

Apple is expanding its privacy features with iOS 16 and iPadOS 16 by now requiring apps to ask users for their permission before accessing their clipboard.

Sami Fathi:

Like Android, Apple will let users enable vibrations on the native stock iOS keyboard for each tap, providing a physical confirmation for users as they type.

Juli Clover:

I can’t get over how well this iOS 16 feature for cutting out subjects from photos works.

Juli Clover:

The Fitness app on the iPhone has long been available as an activity tracking tool for those who own an Apple Watch, but in iOS 16, Apple wants to make the app an activity tracking option useful even for those who don’t own an Apple Watch.

Juli Clover:

Apple in iOS 16 and iPadOS 16 has overhauled the design of the Books app, simplifying the interface and adding some new customization tools.

[…]

Apple has also changed the way that pages turn.

Update (2022-06-09): Tim Hardwick:

Apple says the feature relies on advanced machine learning, and in our time experimenting with it in iOS 16, its ability to recognize subjects in photos is pretty impressive.

Indeed, its ease of use is likely to make performing painstaking subject isolation actions in image editing apps a thing of the past. Here’s how it works.

Update (2022-06-16): Matthew Cassinelli:

In the first seed of the iOS 16 developer beta, the Shortcuts app has received 51 new actions that support interacting with Apple’s first-party apps and help take advantage of system features.

Ryan Jones:

iOS 16 Weather app now has hourly graphs for basically everything.

Exceptionally well done UX – very clean, progressive disclosure, and natural flow.

Friday, June 3, 2022

WWDC 2022 Wish Lists

Mainly, I want bug fixes and fewer regressions. Some iOS specifics that I’ve discussed before:

macOS:

watchOS:

Sarah Reichelt:

I wish Apple would supply an iMac monitor using the exact same design, but without the computer.

[…]

CloudKit has always looked like a great solution for use in apps. It allows public and private data, it syncs between devices, and it doesn’t have the potential for unexpected and huge data fees like some other options. But like many developers, I’ve tried and failed to get it to work reliably. It appears that the simpler mechanisms work well, but not the more complex options.

[…]

I would love to see Apple open up the extension ecosystem again. For web development, I use Microsoft’s Visual Studio Code. Even though this is a cross-platform Electron-based web app, it is a great tool. It doesn’t look like a native Mac app but it performs well. But it’s major advantage is the huge number and variety of extensions so you can make VSC look and work the way you want. Apple has deliberately closed Xcode off from this sort of community involvement which is great shame.

[…]

I would love it if the App Stores lived up to Apple’s claim as being the safe place to buy apps, but in reality, app buyers are being fooled by purchased reviews, tricked into in-app purchases, and cannot assume that the rules designed to keep them safe have been applied to all apps.

Ralf Ebert:

  • Code completion always working
  • Debugger working without long delays
  • No more “compiler is unable to type-check this expression in reasonable time”
  • No more “Making Apple Watch ready”
  • No new features that could break any of those.

Ana Simion:

I’d like to see Apple increase the base amount of iCloud storage: 5GB is paltry.

Chris Hannah:

Some form of universal messaging support. Whether it is iMessage for Android (which I think is unlikely), or the adoption of RCS as a fallback instead of SMS. It’s clear that communication between iOS and Android devices shouldn’t be via SMS.

[…]

Multiple audio channels. This isn’t something that I’m desperate for, but it’s certainly irritating for me when you go to a website and a video/ad starts playing automatically and your song stops. Imagine going to a website on your Mac and an autoplaying video, stopping the song you’re listening to. Also, you should be able to alter the volume of specific apps/channels.

Adam Engst:

We’d like to see Apple revisit the Time Machine interface and make it so that it’s easier to navigate, shows dated versions of available files at a glance, and clarifies to the extent possible the differences between the current and older versions.

[…]

We’d love to see site-specific browsing capability come to Safari on the Mac. Although there are a variety of site-specific browsers available, they all have various issues[…]

[…]

Preview has no file format of its own, but with relatively little effort, Apple could at least leverage macOS’s longstanding versioning system to provide an easier way to undo changes.

[…]

We’d like to see Apple build a log of “important” changes into its operating systems, with an API for apps to log their own changes. Whenever the user took an action that met the criteria for “important”—turning on File Sharing, giving an app Full Disk Access, configuring Focus, adjusting system-wide text display, restarting the device—that action would be logged.

Nick Heer:

Every year for the past few, my main hope for WWDC is a renewed emphasis on stability and higher standards.

Joe Fabisevich:

Preface: SwiftUI is amazing and I love it. All I want for WWDC are functional List and NavigationView constructs. They’re both so easy to drop in and use but pretty quickly there’ll be some compromise you have to make, often choosing to abandon them outright instead.

Nicolas Magand:

I would like also to see Reading List as a standalone app, maybe an app including a tab showing the newsletters in your inbox, and why not subscribing to RSS feeds inside this app, in a separate tab? Basically the Podcast app, but for web pages.

[…]

Better collaborative features and 3rd-party access to Drive would be a good start for iCloud in June 2022.

Juli Clover:

Control Center API for third-party apps

[…]

Universal notifications - notifications clear from all devices when read on one

[…]

Support for multiple [iPad] users

Ryan Jones:

iMessage fix groups with green bubbles

[…]

Choose default Maps app

[…]

Clipboard history

AppStories:

This week, Federico and John conclude their annual OS wishes series with a look at what they want to see in macOS this year at WWDC.

Joe Fabisevich:

Two iMessage features I hope WWDC brings.

1. Status messages so people can know that I’m not available and why. Bonus: Calendar/focus modes integration.

2. The ability to set a chat to not badge Messages. You can mute alerts but it still bumps the badge count and drives me mad.

Jim Dalrymple:

I only want to see one thing from WWDC. Fix Siri. Take a “Snow Leopard” break from everything else and please fix Siri.

Daniel Steinberg:

For SwiftUI, I would like to see best practices for navigation and architecture. We’ve clearly made great strides in the past few years with the disappearance of the Info.plist and the App Delegate - what are the best ways to structure an app.

[…]

Every session that shows code on the screen should provide us with the code sample it came from and that code should be available on the day that the video is posted. There have been sessions where they showed us code that depended on code they didn’t show us and never showed us so we couldn’t recreate how something was done.

See also: Joe Cieplinski.

Previously:

Update (2022-06-06): Becky Hansmeyer:

I still don’t regret the decision to write YarnBuddy entirely in SwiftUI; however, it would be nice to be able to start phasing out some of the weird hacks and workarounds I’ve had to come up with to make the app look and work the way it does. For example, there’s still no true collection view equivalent. Navigation could use a re-think, or at the very least, some official guidance. Core Data integration is okay-ish, but it’s needlessly difficult to make it possible for users to sort and filter a fetch request. Any and all improvements are welcome, so I’m excited to see what the team has been working on this year (though I, like others, think SwiftUI needs to be decoupled from the annual OS upgrade cycle).

[…]

Flat design is just…well, over. It’s been on the way out for awhile, but it’s time for us to save the good bits and jettison the rest of it straight into the sun. In other words: here’s hoping Apple puts the final nail in the coffin on that weird chapter of mobile app design. I just want my apps to have personality again, you know? Not in a garish way, but a beautiful, fun way.

Dave B:

This WWDC is particularly close to my heart, because I’ve been on a bit of crusade for years, trying to get Apple to improve the sub-par Apple Music app. The last time the app got a major update was six years ago with iOS 10, and even from the moment of release, that update was never great. Since then, it has shown its age more and more, with all sorts of problems - big and small - in everything ranging from the UI design to the poor performance the frequent bugs and of course, to the lack of all sorts of key features that we’ve all wanted for years.

Timothy Perfitt:

Things we all agree would be good but very slim chance at WWDC:

  1. Native Smart Card readers support for iOS.
  2. Log into your Mac with 3rd party cloud password without weird iCloud/AppleID tie in
  3. 3rd party CTK drivers for M1 Macs for file vault unlock on start up
  4. Netboot.

Basic Apple Guy:

Presenting my WWDC22 Bingo Board, a list of some of my predictions and hopes I wish to see manifest at this year's Worldwide Developers Conference.

David Kopec:

My wish for today.

Jeff Johnson:

Separate SDK and Xcode downloads

See also: Matthew Bischoff.

WWDC 2022 Preview

Juli Clover:

Apple is continuing to prepare for the Worldwide Developers Conference that is set to begin on Monday, and the company today launched its YouTube live stream where viewers can sign up to get a reminder when the event begins. The keynote event is set to take place on Monday, June 6 at 10:00 a.m. Pacific Time.

Apple:

You can now register for Digital Lounges to automatically gain access to activities you’re interested in attending — choose from topics like Design, SwiftUI, Developer Tools, Machine Learning, and more. To provide the best experience for everyone, space is limited for each topic, and registering early is the best way to guarantee access to your preferred topics and activities.

Tom Harrington:

It’s just over a month to WWDC and the unofficial WWDC Slack is back for another year!

John Gruber:

The Talk Show Live during WWDC 2022 is happening. It’s going to be good — I think! — and I’m going to put it on YouTube. So no one is going to miss it. We are going to record it inside the Apple Developer Center on Tuesday, June 7. Seating will be, to say the least, limited.

Donny Wals (tweet):

I figured I’d put together a little guide to making the most out of WWDC without being completely overwhelmed and intimidated by the sheer volume of content that Apple is about to unleash on us all.

Jordan Morgan:

Here’s how I consume W.W.D.C. to come out with a clear mind and a focused direction.

Curtis Herbert:

CONATH:

Types of WWDC Announcement

Ryan Jones:

🎲 It’s WWDC Bingo!

Jordan Morgan:

Dub dub beckons, which means that the eighth annual edition of the Swiftjective-C WWDC Pregame Quiz is here!

Previously:

PimEyes

Kashmir Hill:

For $29.99 a month, a website called PimEyes offers a potentially dangerous superpower from the world of science fiction: the ability to search for a face, finding obscure photos that would otherwise have been as safe as the proverbial needle in the vast digital haystack of the internet.

A search takes mere seconds. You upload a photo of a face, check a box agreeing to the terms of service and then get a grid of photos of faces deemed similar, with links to where they appear on the internet.

[…]

PimEyes found photos of every person, some that the journalists had never seen before, even when they were wearing sunglasses or a mask, or their face was turned away from the camera, in the image used to conduct the search.

[…]

PimEyes has tens of thousands of subscribers, Mr. Gobronidze said, with most visitors to the site coming from the United States and Europe. It makes the bulk of its money from subscribers to its PROtect service, which includes help from PimEyes support staff in getting photos taken down from external sites.

PimEyes has a free “opt-out” as well, for people to have data about themselves removed from the site, including the search images of their faces.

Nick Heer:

You do not even need to pay the $30 per month fee. You can test PimEyes’ abilities for free.

[…]

PimEyes shares the problem found with any of these people finding tools, no matter their source material: they do not seem dangerous in isolation, but it is their ability to coalesce and correlate different data points to create a complete profile. Take a picture of anyone, then dump it into PimEyes to find their name and, perhaps, a username or email address correlated with the image. Use a different people-based search engine to find profiles across the web that share the same online handle, or accounts registered with that email address. Each of those searches will undoubtedly lead to greater pools of information, and all of this is perfectly legal. The only way to avoid being a subject is to submit an opt-out request to services that offer it.

[…]

Gobronidze has to know that not everybody using its service is searching for pictures of themselves or those who have consented.

Previously:

Removing Personally Identifiable Info From Google Searches

Brian Krebs (Hacker News):

Google said this week it is expanding the types of data people can ask to have removed from search results, to include personal contact information like your phone number, email address or physical address. The move comes just months after Google rolled out a new policy enabling people under the age of 18 (or a parent/guardian) to request removal of their images from Google search results.

[…]

While Google’s removal of a search result from its index will do nothing to remove the offending content from the site that is hosting it, getting a link decoupled from Google search results is going to make the content at that link far less visible. According to recent estimates, Google enjoys somewhere near 90 percent market share in search engine usage.

WaitWaitWha:

It took me about 10 minutes to figure out that the link provided from the Google article really just leads to a workflow where i have to answer just the right questions to get to the actual form. And, then go through a second workflow, which puts you to... the first workflow.

I have yet to reach a page where I can submit the URLs to be removed. I consider myself a neophyte technologist, since I just started a few decades ago with punch cards. I doubt most of the general public will figure out how to perform this process.

Danny Sullivan:

This is the page that explains in more detail and where people should begin the removal process.

The removal process will lead you to a troubleshooter. That’s designed to help people more quickly get things resolved. For example, if a web page no longer exists on the web, or the site owner removed info, there are faster options you can use rather than going down the formal removal request option.

But let’s say you want something removed that has PII from a page that’s live on the web and where you for whatever reason don’t want to contact the site owner. The troubleshooter from that page I mentioned will lead you here.

Say No to contacting the site owner, select Personal Info from the next option, pick the type of info and you’ll get to the form (such as here if it involves contact info).

Previously:

Apple Silicon “Augury” DMP Vulnerability

Francisco Pires:

A team of researchers with the University of Illinois Urbana-Champaign, Tel Aviv University, and the University of Washington have demonstrated a world-first Data Memory-Dependent Prefetcher (DMP) vulnerability, dubbed “Augury,” that’s exclusive to Apple Silicon. If exploited, the vulnerability could allow attackers to siphon off “at rest” data, meaning the data doesn’t even need to be accessed by the processing cores to be exposed.

Augury takes advantage of Apple Silicon’s DMP feature. This prefetcher aims to improve system performance by being aware of the entire memory content, which allows it to improve system performance by pre-fetching data before it’s needed. Usually, memory access is limited and compartmentalized in order to increase system security, but Apple’s DMP prefetch can overshoot the set of memory pointers, allowing it to access and attempt a prefetch of unrelated memory addresses up to its prefetch depth.

See also:

Previously:

Thursday, June 2, 2022

Twitter Shutting Down TweetDeck for Mac

Joe Rossignol:

Twitter today announced that it will be shutting down TweetDeck for Mac next month to focus on the web-based version of TweetDeck.

This is pretty much what they said a few years ago when discontinuing the Mac version of the regular Twitter client. It then came back as a Catalyst app. That likely won’t happen this time since there’s no longer an iOS version of TweetDeck:

TweetDeck was acquired in 2011 for $40 million by the social media giant. The company launched its HTML5 apps shortly after, available for the browser, Windows and Mac. It was also once available for iOS, Android and Windows. Unfortunately, the iOS and Android versions went offline in 2013, and then three years later, the Windows version went away as well.

Previously:

Avoiding Swift’s enumerated()

Natalia Panferova (tweet):

The integer value we get with enumerated() shouldn’t be used as index into the collection unless the collection is zero-based and integer-indexed. It’s a counter that always starts from zero.

Ben Cohen:

zip is better in every way… even when you just want numbers

zip(0…, ingredients) is clearer which way around the pair is

zip(1…, ingredients) if you don’t want to keep doing +1 on a zero base

Nick Lockwood:

Another subtlety is:

collection.reversed().enumerated()

vs

collection.enumerated().reversed()

Thomas Grapperon:

If you’re using swift-algorithms, you can also use .indexed() for a slightly better interface than zip.

Previously:

Apple Maps in 2022

xkcd (via John Gruber):

Apple Maps is kind of good now

Nick Heer:

To give credit where credit is due, the directions provided by Apple Maps were generally very good. It still tells me to make a u-turn when it is legally prohibited, but I vastly prefer the format and timing of its spoken directions to Google’s.

But — holy crap — do its place listings remain poor. Many of the restaurants, bars, and attractions I searched were listed with incorrect hours, or had other details that were clearly wrong.

[…]

However, I use Apple Maps often enough that I want it to be better, so I reported these problems to Apple. Over the past few days, I have received notifications indicating these places have been updated. But when I check, my fixes are not in place and the details I reported are still wrong.

It’s been a while since I used Apple Maps. Maybe it’s time to try it again. I normally have great results with Google Maps, but I recently did some driving in Boston—near Google’s Cambridge offices—and while the maps themselves seemed accurate the suggested routes were absurd. I’ve seen similar problems around Portland, ME. I’m not sure what’s up.

TomTom (via Hacker News):

“Higher levels of automation and the integration of a variety of digital sources will result in fresher and richer maps, with wider coverage,” said Harold Goddijn, CEO of TomTom. “These better maps will improve our product offerings and allow us to address a broader market, both in the Automotive and Enterprise businesses”.

The improvement in our mapmaking technology will lead to material efficiency gains. Combined with a better map, this will strengthen our competitive position. Regrettably, this will have an intended impact on approximately 500 employees in our Maps unit, equivalent to around 10% of our total global headcount.

Previously:

LinkBuds, LinkBuds S, and Pixel Buds Pro

Dan Barbera:

Sony in February introduced the LinkBuds, a curious set of earphones that have an open design that’s not quite like any other in-ear headphone product on the market. We picked up a set of Sony’s strange LinkBuds to see how they measure up to Apple's third-generation AirPods.

Juli Clover:

Sony earlier this week came out with the WH-1000XM5 headphones, which we already checked out, and the LinkBuds S, a set of noise canceling earbuds that are similar to the AirPods Pro. In our latest YouTube video, we pit the AirPods Pro against the LinkBuds S to see how Sony’s new earbuds offering measures up.

Joe Rossignol:

Pixel Buds Pro are Google’s new premium wireless earbuds with similar features as AirPods Pro, including active noise cancellation, a Transparency mode that lets ambient noise in, hands-free “Hey Google” voice control, automatic switching between previously paired Bluetooth devices, integration with Google’s Find My Device app for tracking their location when misplaced, and spatial audio support starting later this year.

Of course, the best way to connect them to your Mac is with ToothFairy.

Previously:

Wednesday, June 1, 2022

Safer SwiftUI View Modifiers

Marco Eidinger:

Despite the missing qualifier, the code compiles because padding() gets treated as self.padding(). During runtime, that leads to an infinitely recursive View => stack overflow 💥

I did not find a technique to detect the mistake of a missing dot when using standard SwiftUI view modifiers[…]

But for custom view modifiers there is a simple way. We can use the Swift attribute @warn_unqualified_access to warn us in Xcode :)

Update (2022-06-02): See also: Helge Heß.

External SSD Boot Speed

Howard Oakley:

Although increasing the transfer speed from the SATA SSD at up to 400 MB/s to more than 1 GB/s halved the time taken to boot, there’s no consistent improvement beyond that. This suggests that time to boot an M1 Mac from an external SSD is around 5 seconds longer than from the internal SSD, and independent of SSD performance above 1.5 GB/s. This most probably reflects the lengthier process, in which early boot takes place from the internal SSD anyway, then transfers to the external SSD only after its LocalPolicy has been checked and applied.

Previously:

StarTech Thunderbolt 4 Dock

Howard Oakley:

Until relatively recently, one limitation with Thunderbolt was the absence of hubs which allowed the connection of multiple Thunderbolt devices to a single port on the Mac. Several models are now available, although they’re considerably more expensive than USB hubs. Inevitably, these are constrained by the bandwidth available in the single Thunderbolt connection made to the Mac. Connect a couple of external displays and those will limit the performance of SSDs connected to the same hub.

Wesley Hilliard:

This dock does come at a high price, and other products in the price range offer more port variety. However, we’d argue that reliability is included in the high markup, and the StarTech Thunderbolt 4 Dock has proven to be reliable.

$439.99 for 4 Thunderbolt ports, 3 USB-A 3.2 Gen 2, 1 USB-A 2, Ethernet, SD card, and audio.

Previously:

AirDrop Contacts Privacy Flaw

Sami Fathi:

Researchers at TU Darmstadt have discovered that the process which AirDrop uses to find and verify someone is a contact on a receiver’s phone can expose private information.

[…]

As an attacker, it is possible to learn the phone numbers and email addresses of AirDrop users – even as a complete stranger. All they require is a Wi-Fi-capable device and physical proximity to a target that initiates the discovery process by opening the sharing pane on an iOS or macOS device.

The discovered problems are rooted in Apple’s use of hash functions for “obfuscating” the exchanged phone numbers and email addresses during the discovery process. However, researchers from TU Darmstadt already showed that hashing fails to provide privacy-preserving contact discovery as so-called hash values can be quickly reversed using simple techniques such as brute-force attacks.

I’m not sure of the status of this issue. The flaw was reported to Apple in 2019, and Fathi’s article is from 2021, but I’ve not heard more about it since.

ikramerica:

[Does] this mean turning on “everyone” is more secure as no matching is attempted?