Archive for March 2023

Friday, March 31, 2023

HomePod Late Adopter

We’ve been using an Amazon Echo Dot in our kitchen for several years, principally for timers and answering basic questions. Lately, it has not been responding as reliably. Also, it never worked well as a Bluetooth speaker for my iPhone because the phone would always reconnect to the Echo, even when I was in a different room trying to use my AirPods or just the built-in speaker. I decided to finally give HomePod a try and ordered a HomePod mini about a month ago. This is my experience as someone who has read about HomePod and since the beginning but never actually used them until now.

Setup and

The power cable is USB-C, non-detachable, and too short for where I wanted to put the HomePod on a dining room shelf. I had a variety of power extension cables already, but I didn’t really want the power brick to be hanging in the air. I provisionally chose a different location. A better solution would be to get a USB-C extension cable.

Setting up the software was really easy, though for some reason the Home app wouldn’t display my name properly. I was instead shown as “AT&T Voicemail,” which I guess came from an old contact I had created for calling my own phone number. When I deleted that contact it showed my proper name.

The Home app is disappointing, both in the available features and in the iOS-style interface of the Mac version. Confusingly, some of the features are available from Control Center, but if I start there there’s no button to get into the full settings; I have to start over by going through the Home app.

At one point, Apple support asked for my serial number, and turns out that this is visible but not copyable in the Mac version. (Apple support chat transcripts also aren’t copyable, except after screenshotting and using Live Text.)

The command to Restart HomePod doesn’t seem to work from either iOS or macOS. It doesn’t report an error, but it doesn’t do anything, either. Apple support said I should instead unplug the HomePod mini to restart it—shades of the Studio Display—but that’s easier said than done with the non-detachable power cable.


Siri is really slow, so even though it supports multiple timers I still prefer to use Alexa for that. Also, there’s no way to customize the sounds for timers or alarms. It seems worse at understanding weather questions than Alexa. General questions often tell me to open my iPhone to see the information, rather than speaking it to me.

Siri does have some advantages, though. It’s handy to be able to use Find My to ask where family members are. It can also check my calendar and make reminders that get imported into OmniFocus. I thought it would be great for adding reminders, hands-free. My phone doesn’t respond to Siri from my pocket, and Siri on my watch doesn’t work when I’m doing the dishes. Making reminders with HomePod works but is annoying because it repeats the entire text back to me. There’s a setting in iOS called Siri ‣ Accessibility ‣ Spoken Responses ‣ Prefer Silent Responses, but this only seems to affect my phone, not HomePod. This is also annoying when requesting music; it speaks the whole title and artist before playing the song. These can be especially long and uninteresting for classical pieces.

Multiple devices are a problem because Siri doesn’t always know which one I’m talking to. There doesn’t seem to be a way to say “Hey, HomePod” to disambiguate. It’s supposed to be automatic but often chooses incorrectly. It seems like the only thing you can do to be sure HomePod will respond is to turn off “Hey, Siri” on certain devices, but I don’t want to do that.

In summary, we still use the Echo for everything we were doing with it before, but now we use HomePod and Siri for music and for tasks that Alexa can’t handle or where we want a second opinion.

Playing Music

The sound quality from the HomePod mini is better than with the Echo, but I have higher expectations because I’m usually using it for playing music rather than talking with a voice assistant. The biggest problem is that there’s very little bass. There does not seem to be a way to adjust that on the HomePod itself. When AirPlaying, it seems to respect the EQ preset on my iPhone, but the effect was slight and I don’t want to change that setting because it also affects my AirPods. Overall, I would say that the sound quality is reasonable considering the size of the device, but I did not enjoy it.

I’ve heard lots of complaints about AirPlaying music, but it’s worked well for me. It certainly seems more reliable than Bluetooth.

But my goal is to avoid AirPlay where possible and have the HomePod play most music directly. I’d long had a mental block about HomePod because it doesn’t support Home Sharing (to play music from my Mac’s library) and I didn’t want to pay for iTunes Match or risk it messing up my library. Still, we’ve purchased a lot of music from the iTunes Store, and HomePod has access to that.

Forced Apple Music

The initial experience of playing music directly from HomePod was confusing. I would ask for a random album from a certain artist, and it would play an album that I was sure I had ripped from CD—and so it shouldn’t have access to. It would also play random songs that I had not purchased or even heard of. It seemed like this must have been coming from Apple Music, but I had disabled that in the Home app.

Eventually I figured out from the Subscriptions screen on my iPhone that, despite declining the free Apple Music trial, I had been enrolled in a free 7-day preview for Apple Music Voice. Apple’s support couldn’t explain why this had happened or why Apple Music was being used when I had turned off Apple Music as a music source. They also told me that there was no way for me to remove the subscription; I had to wait for the trial to end.

So there are really three issues here: being opted into a preview that I didn’t want, the switch to disable Apple Music not working, and not being able to remove the subscription until after it expired. I said that I wanted to remove it right away so that I could see, during the return period, how well HomePod worked without Apple Music. Eventually, a senior advisor was able to directly remove the preview subscription from my account.

Music and Siri

Requesting music with Siri is barely adequate, except for classical music where it’s almost useless. I can request songs and albums by name, and sometimes it works but sometimes it just says, “Sorry, there was a problem with Apple Music”—even though I’m using the iTunes Store, not Apple Music. With my iPhone, I can ask Siri for a random song or album by a certain artist, but this never works with HomePod. It just reports that it couldn’t find anything (again, “in Apple Music”).

I wish I could ask Siri which albums or artists are available, but that doesn’t seem to be possible. Nor does it support my playlists, even the ones that consist only of songs that I purchased from Apple. The Siri documentation is sparse and geared towards Apple Music, so it’s not even clear which commands are intended to work. I ended up creating a smart playlist that shows my purchased music. HomePod is kind of like the streaming video experience, where you have to know the source of the content in order to initiate playback in the right way, even though the sound is ultimately coming out of the same device. Of course, there’s no support for third-party podcast apps, so I can’t use Overcast via Siri and have to initiate it via AirPlay.

Missing Purchased Music

With a playlist of my purchased music, I thought I would eventually learn which albums I could request from Siri and which I’d have to initiate via AirPlay. Instead, I got more and more frustrated as Siri sometimes worked and sometimes failed, no matter how many times I made simple, specific requests. I eventually found that the problem wasn’t my inconsistent speech or phrasing but that certain purchased albums (and their individual songs) were not accessible on HomePod via Siri at all. I hadn’t considered this as a possibility because these same albums work via Siri on my iPhone and show up in the list of Purchased Music on all my devices. Oddly, the albums do not show up as purchased if I search for them in the iTunes Store. It shows the button with the price as if I had never bought them. I went through my purchase history and found more than 25 albums that are in this inconsistent half-purchased state. These are exactly the ones that don’t work on HomePod.

I chatted with Apple support and was told that there was a simple fix where the albums in question could be pushed back into my account, but that only a phone support agent could do this. Multiple phone support people said there was no such thing and wanted to treat this as a HomePod-specific problem. I eventually made it up to a senior advisor, with whom I spent several hours, over the course of a week, installing configuration profiles, trying different things, and gathering logs. We ran into multiple problems with enabling logging and submitting the logs, and some tests had to be redone because the expected information didn’t get saved to the log. Engineering then examined the logs and asked for more. Eventually, their conclusion was that the problem of inaccessible albums is a known issue and that there is no fix yet.

Apple also confirmed that I should be able to request music by artist. This works on my iPhone but never on HomePod, even for albums that are otherwise accessible there. I chose not to dig into that issue further. Now, I initiate nearly all playback from my iPhone, as that is consistent and reliable, though once music is playing I do find Siri useful for controlling it. My wife’s music is almost all from the iTunes Store. She uses Siri to play music directly on the HomePod and so far hasn’t encountered any inaccessible songs. She likes to request individual songs, so the artist limitation isn’t a problem.

Sensors and Automation

I was excited to use HomePod as a temperature monitor, so I can make sure our heat is working when we’re out of town. The temperature sensor consistently showed about 2°F warmer than it should, but that’s close enough. The humidity sensor seems to be off by a lot (showing 48% instead of 38%). The automation leaves a lot to be desired.

What I want is for HomePod to send me a notification or text message any time the temperature gets below a set level, but that does not seem to be possible. The Home app supports events triggered by a sensor, but these can only trigger actions for other HomeKit devices, e.g. playing or pausing the music. The best I could do was to create a shortcut that shows a notification if the temperature is low. Then I can use a Personal Automation in the Shortcuts app—not available for Mac—to run this shortcut at a certain time of day. If I want it to check the temperature every hour, I have to create 24 separate automations.

I set the notification to tell me the Current Temperature (using the magic variable), but it always shows the temperature in °C even though the HomePod is set to display using °F and the If statement in the shortcut also uses °F. The answer seems to be that I need to use the Convert Measurement action and then display the Converted Measurement variable.

What happens if the HomePod’s power or Internet is not working? Apple doesn’t make this super clear, but it seems like, even if the HomePod is set as a hub, personal automations are triggered by the phone rather than the HomePod or cloud. So, in the event of a problem, I should be able to get an error report on my phone. I created a condition in the shortcut for if the Current Temperature has no value, then unplugged the HomePod to test it, but this code was never reached. Instead, the shortcut reported a generic “Read/Write operation failed” error. At least I got an error, though. It turns out that handling the no value condition is still a good idea because that’s what will happen after resetting HomePod, if the “new” HomePod hasn’t been reselected in the shortcut.

Ghost in the Pod

We had a scary incident where, late at night, the HomePod mini spontaneously started playing a random song (Crofters: The Musical) that was not in my library and which I had never searched for. At the time, I had not yet figured out that I was in an Apple Music preview, so it was extra confusing not knowing where the song came from. In theory, no one else should be able to control our HomePod because it’s set to the strictest setting of only allowing people who are part of the home. I’ve read that sometimes the button is triggered by ghost taps and have now set the Touch Accommodations to hopefully make that less likely, though I’m not convinced that’s what happened. Wouldn’t a ghost tap, e.g. from one of the ladybugs we’ve seen recently, just resume the last song played?

Returning HomePod mini

I decided to return the HomePod mini, both because of the sound quality and because there was a chance of Siri working better on a HomePod 2. Apple was happy to facilitate this, even though the return period had ended during the time I was troubleshooting with them.

However, the return ended up not being straightforward because I couldn’t print the shipping label. Apple e-mails a link to their Web site, where you click a button and it’s supposed to open a print window for the label. However, the recently redesigned navigation bar at breaks this. When browsing directly, the navigation bar pops down on hover. When printing, a garbled version of the navigation bar is drawn on top of the shipping label. This happened with multiple browsers. I started a chat with Apple, and they offered to e-mail me a PDF of the label but said that this would take up to 24 hours. In the interim, I recalled that StopTheMadness has a workaround called Protect mouse movement for the hover menus. Unfortunately, it does not fix the printing problem (where there is no mouse movement), but the developer traced the problem to a bug in Apple’s CSS, which I was able to override by telling StopTheMadness to add the CSS:

@media only print {
    #globalnav { visibility: hidden }

for This hides the navigation bar when printing.

HomePod 2

The big HomePod also has a short power cable, but it’s removable, not USB-C, and has no brick. Unlike what others have reported, I found the temperature and humidity sensors to be identical to HomePod mini, i.e. not very accurate but good enough for my purposes.

The sound quality is much better than HomePod mini, particularly in the bass. It fills the room better, and I can hear it over the kitchen range fan without going near the maximum volume. Overall, it just sounds very clear. Still, I would say that the bass is a bit lacking, and while the sound is impressive for the size, HomePod is not magic. I did not find it to be notable compared with larger, older, cheaper, lower-tech speakers I’ve used. It’s good for my purposes, but now I understand why people buy HomePods in pairs. I would be interested to see a HomePod Max product that doesn’t prioritize size so much, or a HomePod nano that’s just a bridge, like the AirPort Express, to a standalone speaker.

Siri on HomePod 2 is faster than with HomePod mini but still seems slow compared with Alexa. It is still not able to access all of my purchased music, nor query it by artist.


My overall impression is that HomePod is OK but not great. As a late adopter of Apple Watch, I was pleasantly surprised that most aspects of that product seemed better and more thoughtfully designed than I had expected. I kept running into little details that impressed me. With HomePod and the Home app, it was the opposite. Never have I contacted Apple’s support more times about a single product, and with less success. For a product that’s more than five years old, it seems unrefined, and the features are curiously limited.

The listening history could have been a great feature, with integration across multiple Apple devices, but in reality it seems to be missing a lot of functionality and/or is inconsistent, to the point where I don’t even understand how it’s intended to work.

I’ve purchased a lot of music from Apple over the last 20 years, but Apple has done the bare minimum to honor those purchases and the library that I’ve organized over the years. Instead, I get an experience that’s seemingly deliberately bad to encourage me to subscribe to Apple Music.

In the end, I feel happy but defeated. Happy because the overall concept of the product is a good fit for my life right now. I’m happy with the sound quality from HomePod 2. I’m listening to more music lately and often enjoying it with my family rather than just my AirPods. When the content is purchased from Apple, and when Siri works, it’s glorious. As a fallback, my entire music library fits on my phone, and being able to play it via AirPlay—and pause and adjust the volume via Siri—is also pretty great. But I also feel defeated because I paid Apple a lot of money despite them doing a bad job in many respects. I have all Apple devices, everything at the latest version, and lots of Apple content. Apple is supposed to be at its best in this sort of situation, but HomePod just does not live up to its potential. Yet there’s no alternative that would clearly be better, so here I am.

Part of my negativity is that I have no expectation that Apple will ever improve the experience with purchased or ripped/downloaded music. It’s all about getting you to subscribe to Apple Music now. And I’m a bit worried that, as happened with the first-generation HomePod, this one may get slower and less reliable over time. The speakers themselves should last forever, but the software won’t. My first thought was that if only there were a line-in the hardware could outlast the software. But, though a line-in might be useful for other reasons, it wouldn’t really matter. Siri and AirPlay are the reasons to purchase a HomePod, and I would have no use for it without them. The ecosystem and the product are increasingly inseparable.


Update (2023-04-22): Rodney Haydon:

I am renting a car, and use Apple CarPlay to listen to my downloaded music on my iPhone. When I asked Siri to play one of the albums, it incorrectly chose a song I don’t have and automatically subscribed me to Apple Music 7-day preview. I was never asked if I wanted to join, and the only email I got said “Your Apple Music Voice Plan is now live. With your 7-day preview, you can play any song in the catalog with Siri.”

No way to unsubscribe, either. I’ve never had it where I was automatically subscribed to something I didn’t explicitly request. This is so wrong.

Andrew Abernathy:

I am not a fan of auto-expanding menus on web sites. If I overshoot when targeting something under the menu, suddenly a big part of the window is covered and I have to move the mouse way away to get the menu to hide again. (And then I have to be very careful as I target my destination again, lest the whole thing happen all over.) Plus in my experience (like just now), sometimes they get stuck and don’t disappear, so I have to do a bunch of waving around to trigger them to get out of my way.

Nena Farrell and Brent Butterworth:

No smart speaker we’ve heard sounds as good as a decent pair of bookshelf speakers, but the new HomePod performs well sonically—although not really better than its top competitors in the smart-speaker category.

Marco Arment:

At breakfast, Tiff said “play, volume 1”. Siri played an album entitled “Volume One” by an artist we’ve never heard of.

At lunch, I said “play music”, so it played random songs from only the same three early-2000s-rock artists it always thinks I like.

I then said, “Play new rock music”, it said it was playing the “top 25 new rock hits”, and it played:

  • Fleetwood Mac from 1977
  • Santana from 2007
  • A random 2021 country song
  • Don’t Stop Believin’

I stopped believin’.

Oh, I forgot to mention that every third or fourth song just ends abruptly and advances to the next — sometimes after only a second or two of playing, sometimes in the middle of the song.

Thursday, March 30, 2023

Apple’s Big Gamble: the 6th Birthday of APFS

Howard Oakley (Hacker News):

The downside to this increased complexity is that free space is dynamic and much of it can be temporary and conditional. Apple still has a way to go before users can have confidence in any of the estimates of free space currently available in macOS. This is worst when it’s most critical, such as when trying to update macOS.

What I’ve never seen quantified is the incidence of minor file system errors, and their impact on long-term disk health. As with many other users of HFS+, I was used to running First Aid in Disk Utility and third-party repair tools to fix minor errors, even after the introduction of journalling. Since migrating to APFS, errors have been exceptional, and I have stopped routine maintenance. That isn’t to say that APFS never fails, but the cases that I hear of are extremely rare and unrecoverable.

From its first announcement, APFS has been criticised for its lack of integrity checks on data storage, and lack of redundancy. While file system metadata in APFS do use checksums, there’s no option to protect data using them, nor does APFS provide any scope for a third-party to add integrity checks or redundancy as an extension.


But by far the biggest limitation to APFS is its proprietary secrecy. Although some of its basics have been reversed for third-party products, much remains closely guarded by Apple. This continues to prevent the development of third-party repair and recovery utilities.

I see APFS as a mixed bag:


Update (2023-09-14): Christian Tietze:

Ah yes, the casual macOS morning hang where everything beachballs and no input is accepted anymore for 5 minutes.

David Bureš:

I still have this problem. Turns out it’s related to an external HDD that has beef with the system, because the system just refuses to connect it for 10 minutes. I don’t know why drives specifically are so messed up in macOS.

Wednesday, March 29, 2023

Apple Music Classical

Apple (Hacker News, MacRumors):

Apple today launched Apple Music Classical, a brand-new standalone music streaming app designed to deliver the listening experience classical music lovers deserve. With Apple Music Classical, Apple Music subscribers can easily find any recording in the world’s largest classical music catalog with fully optimized search; enjoy the highest audio quality available and experience many classical favorites in a whole new way with immersive Spatial Audio; browse expertly curated playlists, insightful composer biographies, and descriptions of thousands of works; and so much more.

Does this do anything to fix Siri for classical music? Currently, it’s almost unusable because the titles of the albums and tracks don’t really match the names that a human would think of. And those are not always the right granularity: even if I manage to request a symphony and it plays the first movement, it doesn’t know which of the subsequent tracks on that album are part of the same piece.

Joe Rossignol:

Apple today published a support document explaining why it decided to release a standalone Apple Music Classical app for classical music.

M.G. Siegler:

But it’s also odd in that it’s not like they stripped all of this music out of the main Apple Music app — as far as I can tell, it’s all still available there. So it’s not about de-cluttering that app. It’s more about letting classical music lovers dive deeper and find easier the music that they love. Fair enough, I guess. But I suspect the real reason Apple is doing this is simply because they acquired a beloved classical music service, Primephonic, a couple years ago. It was a way to help differentiate Apple Music versus Spotify. But they undoubtedly also knew that it would piss off users of that service if they killed off that standalone app. So here we are, two apps, one price.


It’s fine. It looks nice, as you might expect. But it’s also very similar to Apple Music.


Here’s something else that’s odd. After again, a year and a half of work, Apple Music Classical is iPhone-only. Every app developer knows that Apple likes to nudge, subtlely or overtly, cross-Apple-platform support for apps. “That’s a nice iPhone app. Would look great as an iPad app as well.” That kind of thing. How can Apple realisticly give such guidance if they themselves don’t have that ready to roll on day one of their services!?


My above stated routine actually doesn’t have me using an iPhone to listen to music. I’m using either my iPad or Mac. And yet I can’t use Apple Music Classical on either of those. […] And wait, it sounds like it may never come to the iPad or Mac! “Built exclusively for mobile”?! What on Earth?

Dan Moren:

Apple Classical is a bit of a strange beast.


I particularly appreciate the refinement Apple has done to the Library section. While it’s shared with Apple Music (you’ll see albums already in your Apple Music library that are also available in Apple Classical), there are also new sections for Recordings and Works, and refined sections for Artists and Composers. In all of those cases, Apple has implemented a Favorites system, where you can choose to save specific items, rather than simply providing an exhaustive catalogue of every single artist or recording you have in your collection.


There’s a lot of curation happening in Apple Classical, too. For example, searching for a specific piece will generally pop up a ton of recordings, but the app will identify an Editor’s Choice version as well as Popular Recordings to help separate the wheat from the chaff.


And lo and behold, Apple Classical includes soundtracks in its catalog, along with scores for Broadway musicals and operas.

Which is certainly cool, but the implementation as it stands right now is a little wonky.

Dave B.:

Something I immediately noticed is the new filter icon, with ‘Filter By’ functionality.

This is a good sign because it means there’s a solid chance we’ll get it in the main Apple Music app.

I’ve been asking for this for years!

Benjamin Mayo:

One odd UI nitpick with Classical I immediately noticed is if the table view is currently scrolling, the edge swipe back feature doesn’t work. This and a few other things gives me the sense the underlying codebase is more different to Apple Music than it first appears.

Now Playing UI report: more like Apple Music than Podcasts is but it’s still different. It has the iOS 16 Music swipey sliders but doesn’t have the same animations on the buttons and the album art transitions differently too. No long-press context menus anywhere.


Update (2023-03-30): Kirk McElhearn (Mastodon):

To this day, there is no standard database of recordings that can be used to ensure metadata integrity.

I tell this story because it shows how difficult it is to set up a service enabling users to catalog and search for classical music. But without such a catalog, classical music fans have been forced to put square metadata into CD-shaped holes, starting with the earliest days of iTunes.


When Apple added the Work and Movement tags to iTunes 12.5 back in 2016, the company showed the first signs that it might finally be interested in classical music. Those tags enable you to manage multi-movement works, tagging them together, and they are useful for search.

Apple’s biggest task in preparing for the release of the Apple Music Classical app was to update the tags on potentially millions of tracks.


Nor can you download music to listen offline, though when you add albums to your library, they also get added to your Apple Music library, so you can download them in the Apple Music app and listen to them there.


Here are two screenshots: on the left is the Apple Music app, in which you can see that there’s no way to discern the name of each track; on the right is the Apple Music Classical app, which displays the work name on the top, in bold, and the movement names below, all visible.

He found some problems with search and metadata, but they’re much improved.

Chad Ossman:

I know this is going to sound hyperbolic, but as a lover of music in general, and a very amateur musician, I find the concept of separate apps for various genres almost offensive.


An important point she makes right away is that even if complex tracks are tagged with the correct metadata, the typical mobile interface doesn’t even have the physical screen real estate to display long text fields. But again, I contend that this is a solvable design deficiency, not cause for creating a walled garden, solely to accommodate one genre of music that typically has longer names than most others.


So, given all of these factors, and after going to all those lengths, why did Apple opt to create an entirely separate app to showcase its revised music catalogue and curated classical selection, as opposed to correcting the deficiencies of their existing product? I fail to understand what is unique about the broad category of classical music that would require an entirely different app/service than all the existing ones for, you know, music.


If Apple were to improve metadata support for the existing Apple Music streaming service, the benefits would extend well beyond classical music. For example, Beatles obsessives would surely appreciate quick access to the 2009 remaster of the 1970 mix of “Get Back” from Let it Be, not to be confused with the 2021 Giles Martin remix, the 1969 rooftop performance from Anthology 3 (released in 1996), the 2003 Naked version, or the 2009 remaster of the 1969 Single Version from Past Masters (released in 1988).

Update (2023-03-31): Benedict Evans:

Apple Music Classical is just totally unusable. Very disappointing. I can’t browse a library by composer or by piece, and that’s designed behaviour. 🤦🏻‍♂️


It gets better. The search function does not search your library. This really was not ready to ship. 🤦🏻‍♂️🤦🏻‍♂️


I have hundreds of albums, and my composer screen is blank. You cannot browse your library by any field have the other than the date you added it to the library

Dave B.:

Why are all these sections in the @AppleClassical app’s Library shown as blank?

I have tons of classical music in my library. But if it’s not auto-populating these sections, that kind of defeats the whole purpose.

Bug or bad UI?

Each of those is described as “Add Your Favorite”, but they are not designated as favorites sections. These are the views within the Library tab.

Update (2023-04-05): Nick Heer:

It seems Apple Music Classical is merely a version of the Primephonic app Apple acquired, skinned to resemble the standard Music app. After a week, I find this similar-but-different quality creates a muddled experience as a user. The Classical app does not support context menus, transitions between some screens see the title animate from one direction while the rest of the screen animates from the other, and the Now Playing view does not respond to dragging up or down as it does in Music. The Library view is uniquely confusing and buggy. It feels more like a third-party app in the style of something Apple could make more than it does than Apple’s own app.


By the way, the more I think about this app, the more I came to realize Apple’s interpretation of ID3 audio metadata is limited — and not just for classical music. The most recent spec was published in 2000, and contains fields for entries like remix artists, source medium, and live recordings, by way of descriptive text, but Music does not support any of these fields. It never has, even when it was called “iTunes”. Instead of using this comprehensive structure, songs in a local music library, in the iTunes Store, and in Apple Music resort to a series of parentheses for featured artists, live recording venues, and the album version or master — “How the West Was Won (Live) [Remastered]”, for example, or “Momma Sed (Alive at Club Nokia) [Live]”. There may be good reasons for these limitations. But it would be better if all the songs and albums in Apple’s catalogue contained more fulsome and better-structured metadata. The spec is already there and it needs mass adoption.

Update (2023-05-30): Hartley Charlton:

Much like Apple Music for Android, the Apple Music Classical app for Android largely mirrors the design of its iOS counterpart. Notably, the Apple Music Classical app for Android comes before Apple has made the app available for the iPad or Mac.

Update (2023-06-30): Benedict Evans:

I am still really disappointed that Apple put all that time and effort into building a classical music app, correctly identified all the reasons why it needs to be a standalone app, and then delivered something that is absolutely and completely unusable. It’s the new Apple Maps.


[There] is no way to build or browse a library. I have over 1000 albums saved and this is the screen[…]


There is literally no way you can browse your library except by the date you added the album. Things in your library don’t even show up in search.

Apple Pay Later

Apple (Hacker News):

Apple Pay Later allows users to split purchases into four payments, spread over six weeks with no interest and no fees. Users can easily track, manage, and repay their Apple Pay Later loans in one convenient location in Apple Wallet. Users can apply for Apple Pay Later loans of $50 to $1,000, which can be used for online and in-app purchases made on iPhone and iPad with merchants that accept Apple Pay. Starting today, Apple will begin inviting select users to access a prerelease version of Apple Pay Later, with plans to offer it to all eligible users in the coming months.

John Gruber:

Apple Pay Later is only available for online purchases — either on the web or in iOS apps. I guess that makes sense — competing services like Affirm, Klarma, and Afterpay are only available for e-commerce transactions too (I think?). I just never before thought of online Apple Pay being different from brick-and-mortar retail Apple Pay.


Hachette v. Internet Archive

Jay Peters and Sean Hollister:

A federal judge has ruled against the Internet Archive in Hachette v. Internet Archive, a lawsuit brought against it by four book publishers, deciding that the website does not have the right to scan books and lend them out like a library.

Judge John G. Koeltl decided that the Internet Archive had done nothing more than create “derivative works,” and so would have needed authorization from the books’ copyright holders — the publishers — before lending them out through its National Emergency Library program.


He notes that the Google Books use was found “transformative” because it created a searchable database instead of simply publishing copies of books on the internet.

Mike Glyer (via Hacker News):

A copy of the decision can be downloaded from CourtListener.


John G. Koeltl, District Judge of the U.S. Southern District of New York, granted summary judgment based on the record, as was requested by both sides. His analysis of the case is illustrated in the following quotes from the decision.


I have good feelings for the Internet Archive, but in this case it’s about a handful of books that are being copied and distributed a mere 5 years after initial publication, which I think a lot of people who want copyright shortened would still agree is quite a bit too short.


Keep in mind that this isn’t about the Internet Archive specifically. If the court ruled it’s okay for them to copy and rent books, then anyone can copy and rent books, it undermines the entire market for books (and also web sites and images and other media, because this is the Internet Archive).


Update (2023-04-03): Chris Freeland:

For those asking how you can support the Internet Archive, there will be a rally on the steps of the Internet Archive on Saturday, April 8 @ 11am PT.


The nonprofit Internet Archive is appealing a judgment that threatens the future of all libraries.

Chris Freeland:

This decision impacts libraries across the US who rely on controlled digital lending to connect their patrons with books online.


But it’s not over—we will keep fighting for the traditional right of libraries to own, lend, and preserve books. We will be appealing the judgment and encourage everyone to come together as a community to support libraries against this attack by corporate publishers.

There are no details about what exactly they are appealing, so perhaps I’m missing something here, but this seems like an incredibly dishonest framing. I thought the whole point of the case is that Internet Archive was not doing what libraries have traditionally done. Their “library” was more like the book equivalent of Napster. And I don’t see how the ruling would affect “all libraries” or even those that “rely on controlled digital lending.”

Update (2023-04-04): The lawsuit happened as a result of the National Emergency Library and its unlimited “lending,” but it also covered the Internet Archive’s Controlled Digital Lending (CDL) program. So the part I wrote about CDL above is wrong. I had thought that this included services like OverDrive, but it has a more specific meaning. I think I was right about the other part:

Adi Robertson:

The Open Library is built around a concept called controlled digital lending, or CDL: a system where libraries digitize copies of books in their collections and then offer access to them as ebooks on a one-to-one basis (i.e., if a library has a single copy of the book, it can keep the book in storage and let one person at a time access the ebook, something known as the “own-to-loan ratio.”) CDL is different from services like OverDrive or Amazon’s Kindle library program, which offer ebooks that are officially licensed out by publishers. It’s a comparatively non-standard practice despite implementation in places like the Boston Public Library, partially because it’s based on an interpretation of US copyright doctrine that hasn’t been strictly tested in court — but this is about to change.


Publishers took aim not just at the National Emergency Library, however, but also at the Open Library and the theory of CDL in general. The service constitutes “willful digital piracy on an industrial scale,” the complaint alleged. “Without any license or any payment to authors or publishers, IA scans print books, uploads these illegally scanned books to its servers, and distributes verbatim digital copies of the books in whole via public-facing websites. With just a few clicks, any Internet-connected user can download complete digital copies of in-copyright books.” More generally, “CDL is an invented paradigm that is well outside copyright law ... based on the false premise that a print book and a digital book share the same qualities.”

Update (2023-04-06): marwis:

Amazing how reckless IA is with their library program while at the same time being extremely cautions with Wayback Archive to the point of retroactively applying robots.txt and removing website archives because “they can’t afford even the smallest risk of being sued”.


We all screamed “Hey, you idiots are going to ruin everything if you act like the pandemic has magically nullified the concept of copyright” and they fucking did it anyway, and now exactly what we said would happen is happening. […] Controlled digital lending had a chance of getting off the ground. The IA’s Emergency Library’s unlimited digital lending burned it to the ground and stomped on the ashes.


However, as a long-time, regular, sustaining financial benefactor of IA, I was annoyed that they strayed into this set of activities in the first place and then dismayed when they pushed the envelope on it during C19 quarantines.

I, and others, predicted this trouble and even if there is not direct causation why do they have to tickle this dragon in the first place


The “emergency library” was a gift on a silver platter for the publishers. It was a reckless and stupid action that made the worst case scenario that the publishers wouldn’t have been taken seriously about a reality. Obviously the 1-1 lending was an issue to the publishers, but higher risk from a litigation perspective.


And it is strictly speaking not a thing that IA should be doing in the first place. They should have set up a completely different legal entity for this and kept them visibly separated on all fronts, especially online.

Their core service is too important to put at risk testing copyright law.

Tuesday, March 28, 2023

Safari 16.4


This release is packed with 135 new web features and over 280 polish updates.


Deeply integrated with iOS and iPadOS, Web Push notifications from web apps work exactly like notifications from other apps.


WebKit on iOS and iPadOS 16.4 adds support for the Badging API. It allows web app developers to display an app badge count just like any other app on iOS or iPadOS.


Safari 16.4 adds support Declarative Shadow DOM, allowing developers to define shadow DOM without the use of JavaScript. And it adds support for ElementInternals, providing the basis for improved accessibility for web components, while enabling custom elements to participate in forms alongside built-in form elements.


Safari 16.4 adds support for quite a few new CSS properties, values, pseudo-classes and syntaxes.


Safari 16.4 now supports lazy loading iframes with loading="lazy".

Jen Simmons:

It’s hard to express just how massive a release Safari 16.4 is for web developers.

Last night, I was reading replies web developers posted on Twitter back in 2021, when I asked what developers need most from WebKit — and the vast majority of things you asked for have now shipped.

Now how about fixing the history and printing?

Federico Viticci (Mastodon):

I was able to test notifications for web apps added to the Home Screen using, a web service I recently discovered whose sole purpose is to let users program their own notifications to deliver via an API to all their devices. Alerty is similar to Pushcut and Pushover, but instead of requiring a native app to be installed on the user’s device, it can just deliver real-time push notifications via a web browser (on desktop) or a web app on the Home Screen in iOS and iPadOS 16.4. This was a perfect opportunity to sign up for the service and try it out with some of my shortcuts.


Update (2023-03-29): See also: Hacker News.

Matt Sephton:

Safari 16.4 has some breaking changes (fixes?) to CSS, which means the Polyglot Safari Extension by @uechz that I use every day no longer displays its popup.

But I created a quick-fix workaround with a User Stylesheets!

Update (2023-04-03): Ashley (via Hacker News):

Safari 16.4 rolled out last week, and for us it's been a nightmare. We make the browser-based game creation app Construct. Early versions of Safari 16.4 broke opening projects, previewing projects, and all existing content published with Construct, all in different ways. I wanted to share our experience so customers, developers, regulators, and Apple themselves can see what we go through with what is supposed to be a routine Safari release.


We encountered a relatively major regression during the iOS 16.4 beta which unfortunately went live with the release version of 16.4. Requesting an ‘environment-facing’ camera using getUserMedia now provides the ultra-wide camera (rather than the usual standard angle lens).

Studio Display Firmware 16.4

Juli Clover (release notes):

According to Apple’s release notes, the Studio Display Firmware Update 16.4 adds support for in-field recalibration of the display using the Pro Display Calibrator. It allows for specific color workflows that may require custom calibration by an in-house spectroradiometer. The update also includes minor stability improvements.

With such a vague description after so many beta releases, I’m going to wait a while to update to make sure they got it right.


Update (2023-03-28): Jonathan Wight:

This Apple Studio Display software update is pretty gnarly.

Lots of long black screens where you’re hoping it comes back to life…

Not the greatest of Apple hardware update experiences….

Update (2023-03-30): Howard Oakley:

If something goes wrong, all you can do is wait for another 15 minutes, with your Studio Display connected to your Mac, and your Mac connected to the internet. Whatever you do, don’t disconnect them, or restart your Mac.

There are two warning signs: a symbol showing a small padlock on a display icon, or the display showing black for over 15 minutes. Apple’s advice then is to unplug the Thunderbolt cable from the display and your Mac, then plug the cable back in again.

If that doesn’t enable the update to complete, the best way out is using a Mac with another display.

The RIAA v. Steve Jobs

Paul Kafasis (Hacker News):

Though the precedent of time shifting existed for television, space shifting was still an emerging idea. The acronym for the Recording Industry Association of America, RIAA, was something of a new four-letter word due to their hostility toward new ideas. […] This had an impact on our marketing for the first version of Audio Hijack. Rather than focusing on the app’s recording functionality, we highlighted use cases like adding an equalizer to movies. We knew recording was useful, but the app’s ability to apply audio effects anywhere on the Mac carried much less legal peril.


We never heard a word from the RIAA, nor their lawyers. As time passed without any trouble, we eventually came to assume that they recognized our tool’s many legitimate fair uses. We continued development of Audio Hijack, leaning in to its audio recording abilities. That focus led to it being a premier solution for podcasters, both then and now.

Earlier this month, however, we heard a chilling story. It comes from the Podfather himself, Adam Curry, who was instrumental in helping podcasts take off in the mid-2000s.

Adam Curry:

And in that very meeting, Steve asked: “How do you do your recording?”. We didn’t really have any tools to record, there was not much going on at the time. But the Mac had an application called Audio Hijack Pro, and it was great because we could create audio chains with compressors, and replicate a bit of studio work. Eddie Cue said: “The RIAA wants us to disable Audio Hijack Pro, because with it you could record any sound off of your Mac, any song, anything.” Steve then turned to me and said: “Do you need this to create these podcasts?”. I said: “Currently, yes!”. So Steve Jobs told them to get lost, and I thought: “Hey man, thanks, Steve’s on my side. That’s cool.”

Adam Curry:

His actual words were “fuck them”

I mean, this is great, but as Kafasis says it’s terrifying that it could have gone differently were it not for the whims of one man. And Jobs’ decision was pragmatic, not principled. Apple under his watch later developed the iPhone and the Mac App Store, neither of which allowed software like this. It then made such utilities much harder to install with the M1 Macs. We’re celebrating a small victory, but the larger story is one of a loss.


Monday, March 27, 2023

Gordon Moore, RIP

Gordon and Betty Moore Foundation (Hacker News, MacRumors):

By 1950, after transferring to the University of California at Berkeley from San Jose State University, Gordon had earned his bachelor’s degree in chemistry. He and Betty were married that same year at a small church in Santa Clara, and set out together for Pasadena, where he was awarded his Ph.D. in chemistry from the California Institute of Technology in 1954.

After graduating from Caltech, Gordon moved east for a job in research with the Applied Physics Laboratory at Johns Hopkins University. In early 1956, he was recruited west again by William Shockley, the soon-to-be Nobel Laureate who had, with his team at Bell Labs, invented the transistor. By 1957, Shockley’s abrasive management approach and fluid direction for Shockley Semiconductor prompted Gordon and seven of his colleagues to exit the company and form Fairchild Semiconductor.


Eleven years later, Moore and Noyce co-founded Intel.

Holcomb B. Noble and Katie Hafner:

Mr. Moore had wanted to be a teacher but could not get a job in education. He later called himself an “accidental entrepreneur” because he became a billionaire as a result of an initial $500 investment in the fledgling microchip business, which turned electronics into one of the world’s largest industries.

And it was he, his colleagues said, who saw the future. In 1965, in what became known as Moore’s Law, he predicted that the number of transistors that could be placed on a silicon chip would double at regular intervals for the foreseeable future, thus increasing the data-processing power of computers exponentially.

Walden Kirsch:

By all accounts, Moore was neither brash nor in-your-face like Grove. Nor was he charismatic and high-energy like Noyce. The “law” that bears his name was not self-proclaimed, but popularized by a Cal Tech professor in the mid-1970s. As one measure of his modesty, Moore once confessed to biographer Leslie Berlin that he was “embarrassed to have it called Moore’s Law for a long time.”

Update (2023-04-04): EE Times (via Om Malik):

In tribute to his visionary mind and work, we are reviving below an interview he gave EE Times after receiving the EE Times Annual Creativity in Electronics (ACE) Award for his lifetime achievement at a ceremony in San Francisco on March 9, 2005. Moore sat down with EE Times editors to discuss the industry’s past, present and future.

Thank you, Gordon Moore, for inspiring generations of engineers and paving the way for the future of the semiconductor industry.

macOS 13.3

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

macOS Ventura 13.3 adds new emoji characters that include pea pod, ginger, pink heart, blue heart, gray heart, donkey, moose, black bird, goose, wing, and jellyfish, among others.

There are bug fixes to fix an issue that could cause Trackpad gestures to stop working, along with a number of other small features and tweaks.

And Mail plug-ins need to be updated, hence SpamSieve 2.9.52. The first Ventura updates had not required this, unlike with Monterey.


Update (2023-03-29): Howard Oakley:

Significant version changes seen among bundled apps include[…]


Update (2023-03-31): Howard Oakley:

This week’s updates to macOS 13.3, 12.6.4 and 11.7.5 should have updated the firmware of every supported Mac.

Jack Wellborn:

Universal Control wasn’t working for me since upgrading to macOS 13.3 earlier this week. It’s such a fundamental part of how I work that macOS felt totally broken without it. Hat tip to TheTipsyRooster on Reddit for finding a solution.

John Siracusa:

Ever since I updated to macOS 13.3, window dragging sometimes looks like this.

Jack Wellborn:

I just today noticed that, starting with Ventura 13.3, using the built-in “look up” feature turns the highlighted text sideways in MarsEdit. I reported the behavior to @danielpunkass, who was able to reproduce (including that it started with 13.3) and will file a bug with Apple.

Update (2023-04-03): The update went smoothly for me, except that I again needed to use the softwareupdate tool in Terminal since it was never offered to me in System Settings.

Rich Trouton:

macOS Ventura 13.3 alters expected behavior for Finder’s Open With functionality for macOS installer packages


Normally I would have suspected a bug in macOS 13.3, but according to Randy Saldinger of Mothers Ruin Software, this appears to be an undocumented change by Apple in macOS 13.3.

Jeff Johnson:

This sucks. Apple is breaking and locking down the contextual menu.

Update (2023-04-05): Tim Hardwick:

Some Mac and iPad users who updated their devices to Apple’s latest software updates are reporting problems with Continuity features like Universal Control and Handoff.

Since last week’s release of macOS 13.3 and iPadOS 16.4, many users have taken to the MacRumors Forums, Reddit, Twitter, and Apple’s Support Communities to voice their frustration at the lack of functionality after updating.

Update (2023-04-22): Nathan Manceaux-Panot:

I think this toggle is new in 13.3?

You used to need to right click → Show List every time, to get the full list of resolutions. Now there’s this toggle in Advanced, that doesn’t reset when the app quits. Neat!

Update (2023-04-26): John Siracusa:

I’ve been tracking this one down for a few days. Ever since I updated to macOS 13.3, window dragging sometimes looks like this.

I haven’t seen that, but I’ve seen various issues on macOS 13.3 where dragging a window onto another display moves it behind other windows, and where some windows disappear when switching displays.

Update (2023-05-23): Paul McGrane:

As I was reading more about Ventura updates, this struck me. Dim flashing lights in media.[…]

Does that mean the OS is monitoring video playback‽ And the answer is yes!

Update (2023-06-01): Shawn Platkus:

Starting in macOS 13.3, opening a mail message in no longer preserves the window position. I use Mail such that you double click a message to open it in its own window. Until 13.3 this would open the window where it was last. Now the message window opens a few pixel to the right each time until it wraps around and opens on the left and starts the journey all over again.

I’m seeing this on macOS 13.4, too.

macOS 12.6.4 and macOS 11.7.5

Apple (full installer):

This document describes the security content of macOS Monterey 12.6.4.

Apple (full installer):

This document describes the security content of macOS Big Sur 11.7.5.


iOS 16.4 and iPadOS 16.4

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

iOS 16.4 adds 21 total new emoji characters including shaking head, pink heart, blue heart, gray heart, donkey, moose, black bird, goose, wing, jellyfish, hyacinth, and more.

It also includes Safari web notifications for websites added to the Home Screen, Voice Isolation for clearer cellular phone calls, the return of the Apple Books page turning animation, updates to Podcasts, new HomeKit architecture, and a number of other small changes and tweaks.

Federico Viticci:

Continuing the trend from last year, there are some new actions in Shortcuts for iOS and iPadOS 16.4. Unfortunately, rather than moving the app forward in meaningful ways for power users, these actions mostly revolve around exposing app settings and various toggles to Shortcuts.


Like I said, I’m a bit disappointed that the new actions added to Shortcuts in the past year mostly involve the ability to control on/off settings with no deeper controls.


There are Mastodon link previews in Messages, Mail, and Notes.

Juli Clover:

Voice Isolation has been available for VoIP calls that use FaceTime, WhatsApp, and other apps on devices running iOS 15 or macOS Monterey or later, and it is designed to significantly improve microphone quality when on calls by cutting down on background noise. Until now, it was not available for cellular conversations, with Apple offering no way to improve call quality.

On a FaceTime call, Voice Isolation can be enabled by activating control center, tapping on the Mic Mode option, and choosing the Voice Isolation option, so the feature may be able to be activated in a similar way for voice calls.

Juli Clover:

The iOS 16.4 update that was released today fleshes out the built-in order tracking function that’s available in the Wallet app for purchases made using Apple Pay.

Chance Miller (via Eric Schwarz):

In iOS 16.4, Apple has added underlying support for health departments to end their support of the Exposure Notifications API. When a health authority decides to end support for the feature, users will see a message on their iPhone informing them of that decision.


Update (2023-03-28): Rui Carmo:

I found a stupid bug already: Starting an app from the dock in iPadOS on landscape orientation renders a badly distorted icon in the middle of the zooming window as it launches.

Update (2023-03-29): Juli Clover:

In this guide, we’ve highlighted all of the changes introduced in iOS 16.4 and iPadOS 16.4.


Learn about the new features in Shortcuts for iOS, iPadOS, macOS, and watchOS.

Ricky Mondello:

iOS 16.4 and macOS 13.3 include some nice tweaks to Apple’s password manager. (This isn’t breaking news; it’s in the software.)

(1) You can “Copy Strong Password” on a strong password suggestion in Safari. See the “Other Options” menu. On Mac, you can also right-click on the field!

(2) On iOS, adding a new password in “Passwords” will prefill a new strong password.

(3) Siri now understands “+” in “What’s my Disney+ password?” and “What’s my Paramount+ password?” (Requires auth; safe; try it!)

Joe Rossignol:

First, a new Channels menu in the Podcasts app provides a list of podcast channels all in one place on the iPhone, iPad, and Mac. A channel allows a creator or brand to list all of their podcasts in one place for listeners to easily discover.

Second, the Up Next queue now includes episodes listeners have saved to their Library and episodes that they play from shows they do not follow[…]

Tim Hardwick:

After updating Apple devices to the latest software, users can once again opt to upgrade any homes set up in the Home app to the new Home architecture, which Apple says brings faster, more reliable performance, especially for smart homes with a lot of smart accessories installed.

John Gruber:

Seems to me [voice isolation] ought to be in the interface for the call itself in the Phone app, like the controls for switching the audio output.

Steve Canon:

Two big low-level improvements in the macOS 13.3, iOS 16.4, etc releases that I am very happy about:

  • much, much faster strto[f,d,ld]
  • Accelerate has an updated LAPACK (opt in via -DACCELERATE_NEW_LAPACK) with a bunch of new API, bug fixes, and ILP64 bindings (-DACCELERATE_LAPACK_ILP64).

David Smith:

This turns out to be surprisingly important for e.g. JSON parsing performance

Meek Geek:

Apple added a screen in the iOS 16.4 update to explicitly opt users back into automatic OS updates. Expecting some to be surprised by this flipped switch when their devices auto update in future.

Pierre Igot:

No matter how many times I tell #iOS to not use cellular data for its updates, it insists on asking me whether I want to authorize it to use cellular data to download the latest iOS updates, even though the phone is right here in my office, in an environment where there is a strong wifi signal and absolutely no need to use cellular data for ANYTHING.

Where is my “Don’t EVER Use Cellular Data For This” button, Apple?

This happens for me, too.

Greg Pierce:

iOS 16.4 seems to have really hosed the display of SiriUITipView in shipping apps. You might want to review if you have any in your apps.

Update (2023-04-04): Clarko:

iOS 16.4 and friends include 32 changes to systemImage / SF Symbols

Tim Hardwick:

Apple is currently trying to resolve an issue with its Weather service according to its System Status webpage, although the issue summary only lists next-hour precipitation as unavailable for Alaska “due to a data provider outage,” when in fact numerous regions and forecast types are down.

Apple says the issue affecting “some users” began around five hours ago as of writing and is “ongoing,” although some iPhone users are reporting that they have had intermittent issues with Weather data since the iOS 16.4 update was released a week ago.

Joe Rossignol:

Apple is preparing to release iOS 16.4.1 for the iPhone, according to a source with a proven track record for upcoming software updates.

Update (2023-04-05): Jamie Cuevas:

All iPhone and iPad users should be aware that installing the iOS 16.4 update for iPhone or iPadOS 16.4 update for iPad will enable the system settings for automatically installing and downloading future iOS/iPadOS software updates to that device.


Furthermore, the splash screen on iPhone and iPad gives only two choices; the default is “Continue” which sets the device to both download and install future software updates automatically, or the secondary option to ‘Only Download Automatically’. This is a false choice (and arguably a UX dark pattern), because despite not being listed on this particular setup screen, users can actually choose to manually enable or disable either or both the automatic downloads and installations of future software updates for iOS and iPadOS.

Update (2023-04-21): Ricky Mondello:

iOS 16.4 fixes a longstanding bug in the Settings app where opening a deep link when a search was active wouldn’t properly open what the link pointed to. This fix is particularly helpful if you’re using my Passwords shortcut on your Home Screen.

George Cox:

Was complaining about not being able to force a popover to display as a popover in compact size classes, then noticed iOS 16.4 adds this #SwiftUI modifier: .presentationCompactAdaptation(.none). It was added with several other helpful sheet related modifiers.

Kyle Hughes:

The .task() modifier in SwiftUI hasn’t worked on List rows well / at all until iOS 16.4 and now it is perfect.

Mario Guzman:

iOS 16.4.x changed again how NavigationSplitViews in #SwiftUI apparently work on iPad. I’m not using it any differently than their sample project but now whenever I go back into my app, any selected item in my sidebar is deselected upon re-entry. This was after upgrading to Xcode 14.3 and running on iPadOS 16.4.x with no code changes.

Friday, March 24, 2023

Swift Proposal: Value and Type Parameter Packs


Many modern Swift libraries include ad-hoc variadic APIs with an arbitrary upper bound, typically achieved with overloads that each have a different fixed number of type parameters and corresponding arguments. Without variadic generic programming support in the language, these ad-hoc variadic APIs have a significant cost on library maintenance and the developer experience of using these APIs.

This proposal adds type parameter packs and value parameter packs to enable abstracting over the number of types and values with distinct type. This is the first step toward variadic generics in Swift.


A parameter pack itself is not a first-class value or type, but the elements of a parameter pack can be used anywhere that naturally accepts a comma-separated list of values or types using pack expansions. A pack expansion unpacks the elements of a pack into a comma-separated list, and elements can be appended to either side of a pack expansion by writing more values in the comma-separated list.

A pack expansion consists of the repeat keyword followed by a type or an expression. The type or expression that repeat is applied to is called the repetition pattern. The repetition pattern must contain pack references.


Mark Surman (Hacker News):

We’re only three months into 2023, and it’s already clear what one of the biggest stories of the year is: AI. AI has seized the public’s attention like Netscape did in 1994, and the iPhone did in 2007.


We’ve learned that this coming wave of AI (and also the last one) has tremendous potential to enrich people’s lives. But it will only do so if we design the technology very differently — if we put human agency and the interests of users at the core, and if we prioritize transparency and accountability. The AI inflection point that we’re in right now offers a real opportunity to build technology with different values, new incentives and a better ownership model.


So, today we are announcing A startup — and a community — that will build a trustworthy and independent open-source AI ecosystem. Mozilla will make an initial $30M investment in the company.

I’m not saying that someone shouldn’t do this, but it’s not clear to me why Mozilla should be the ones. Shouldn’t their top priority be Firefox, an important product/engine where they uniquely can make a difference? They laid off most of the Servo team, citing financial difficulties, yet they have tons of money for this.


Update (2023-05-18): Mozilla:

Today, Mozilla Ventures is announcing a new investment and its first in the United Kingdom: Rodeo, an app that makes the gig work ecosystem more transparent for gig workers.

Google Accused of Violating Retention Obligations

Florian Mueller:

The key allegation is that “Google permanently deletes Google Chats every 24 hours—and did so even after this litigation commenced, after Plaintiffs repeatedly inquired about why those chats were missing from Google’s productions, and after Plaintiffs submitted a proffer on this exact issue at the Court’s direction.” While Google apparently just blames this on an enterprise-wide default setting--“history off”--the governmental and private plaintiffs dismiss that excuse, arguing that “[a]ny administrator of Google Chats—an application developed by Google—could have changed this default setting at any point for all custodians.” The emphasis on “by Google” is in the document itself. While it’s a good thing when tech companies eat their own dog food […], they can’t easily hide behind default settings and other properties of the services they create, control, and could change anytime.

Florian Mueller (Hacker News):

Since the “Google Chats” discovery dispute started with a motion by dozens of state AGs, Epic Games, Match Group, and other plaintiffs in October 2022, it has made Google’s behavior look worse as more information came to the light of day. The issue has also widened because the DOJ and the same state AGs as in the litigation that was originally started by Epic brought a motion for sanctions in the United States et al. v. Google antitrust litigation in the District of Columbia. Both cases are scheduled to go to trial later this year, and the plaintiffs are seeking trial-related sanctions as opposed to a slap on the wrist.

The latest filing by the plaintiffs in the Northern District of California takes the topic to a new level: Google CEO Sundar Pichai himself is being accused of playing a key role in this.


The first redaction likely means that he realized that the topic should not be discussed with history on, and what he did “nine seconds later” will either have been that he turned history off or that he opened a new chat with history off from the beginning.

It sounds as though any text chat is being treated as a record that must be retained. Whereas, I guess for historical reasons, phone calls are treated differently. A Zoom conversation with auto-captioning enabled would also create a written record that would then need to be preserved.


Update (2023-03-30): Florian Mueller:

Yesterday, Judge James Donato of the United States District Court for the Northern District of California, who is presiding over multiple consolidated Google Play Store antitrust cases (brought by Epic Games, three dozen state AGs, Match Group, and class-action plaintiffs), entered his findings of fact and conclusions of law, ordering monetary sanctions first (recovery of attorneys’ fees) and announcing that non-monetary sanctions will be determined a little later[…]

Update (2023-03-31): Sarah Perez (via Tim Sweeney, Hacker News):

Google employees were found to be asking others to switch off chat history when discussing more potentially relevant matters, like Revenue Share Agreement (RSA) contracts, Mobile App Distribution Agreements and a topic called “Project Runway,” which was the internal codename for a project that involved changing the Google Play commission rate in response to developer complaints and the threat of regulation.

In another example, Google’s Head of Platforms & Ecosystems Strategy for Android, Margaret Lam, remarks “I talk about RSA related things all day and I don’t have have history on for all my chats :),” after another employee had informed her that any conversation about RSA needed to have chat history turned on “per policy.”

Update (2023-04-03): See also: Florian Mueller.

Update (2023-04-22): See also: Hacker News.

Update (2023-10-24): Alex Pasternack:

But somewhere on Google’s vast landscape of servers, the auto-deletion continued. “Off the record” chat meetings like Pinchai’s were erased every 24 hours, up until February 8, 2023, shortly before the DOJ filed a motion for sanctions. This was despite the fact, as DOJ attorneys wrote in their motion, “at every turn, Google reaffirmed that it was preserving and searching all potentially relevant written communications.”


But for many Google employees, the “legal hold” reminders conflicted with a corporate custom and a default setting: Many employees keep their Google Chat history switched to “off.” The company’s “Communicate with Care” policy, disclosed in legal filings, trains employees “to have sensitive conversations over chat with history off.”


Google, argues the DOJ, knows the power of defaults to influence user choice, and was able to maintain its monopoly partly because it weaponized that power, for instance by paying Apple billions a year to make Google the default search on Safari on iPhones. The placement was apparently crucial for Google, which the DOJ estimates controls 89% of the U.S. search market. At trial, it emerged that Apple once tried to divert a fraction of search data to its own search engine, in a possible prelude to competition; Google quickly nixed that.

Via Nick Heer:

None of the players in the Google antitrust case want any of this stuff public. They are all — including Apple and Samsung — taking extraordinary measures to avoid scrutiny by observers and the press. It appears many of these same businesses have learned from that time executives like Steve Jobs and Eric Schmidt conspired to minimize cross-company poaching, proved in part by emails like those from Schmidt which read “I don’t want to create a paper trail over which we can be sued later”.


Update (2023-12-11): Sean Hollister:

On Friday, Judge Donato vowed to investigate Google for intentionally and systematically suppressing evidence, calling the company’s conduct “a frontal assault on the fair administration of justice.”

Thursday, March 23, 2023

Other People’s Playlists in Your Apple Music

Tim Hardwick:

Apple Music appears to be sparking serious privacy concerns for some users, with multiple complaints on Reddit about other people’s playlists randomly appearing in their music libraries in the Music app.

Redditor adh1003, who contacted MacRumors about the issue, has compiled several reports from users complaining about the appearance of strange playlists in the app that they do not recognize. MacRumors has since found other posts on Reddit from users reporting the same behavior.

In some cases, unknown playlists have been merged with users’ existing playlists. In other cases, users’ playlists have gone missing or been replaced by unrecognized ones.

Bruce Schneier:

OpenAI has disabled ChatGPT’s privacy history, almost certainly because they had a security flaw where users were seeing each others’ histories.


GitHub Copilot X

Thomas Dohmke (via Hacker News):

GitHub Copilot started a new age of software development as an AI pair programmer that keeps developers in the flow by auto-completing comments and code. And less than two years since its launch, GitHub Copilot is already writing 46% of code and helps developers code up to 55% faster.

But AI-powered auto-completion is just the starting point. Our R&D team at GitHub Next has been working to move past the editor and evolve GitHub Copilot into a readily accessible AI assistant throughout the entire development lifecycle. This is GitHub Copilot X—our vision for the future of AI-powered software development. We are not only adopting OpenAI’s new GPT-4 model, but are introducing chat and voice for Copilot, and bringing Copilot to pull requests, the command line, and docs to answer questions on your projects.


We are bringing a chat interface to the editor that’s focused on developer scenarios and natively integrates with VS Code and Visual Studio. This does far more than suggest code. GitHub Copilot Chat is not just a chat window. It recognizes what code a developer has typed, what error messages are shown, and it’s deeply embedded into the IDE. A developer can get in-depth analysis and explanations of what code blocks are intended to do, generate unit tests, and even get proposed fixes to bugs.


DALL-E in Bing and Edge

Yusuf Mehdi (via MacRumors, Hacker News):

We’re excited to announce we are bringing Bing Image Creator, new AI-powered visual Stories and updated Knowledge Cards to the new Bing and Edge preview. Powered by an advanced version of the DALL∙E model from our partners at OpenAI, Bing Image Creator allows you to create an image simply by using your own words to describe the picture you want to see. Now you can generate both written and visual content in one place, from within chat.


Historically, search was limited to images that already existed on the web. Now, there are almost no limits to what you can search for and create.


Wednesday, March 22, 2023

Little Snitch Mini 1.0

Objective Development:

It shows you each and every Internet connection of all apps on your Mac. And if you don’t like what you see, you simply push the Stop-Button.


Choose from a curated collection of blocklists covering thousands of ad servers, tracking servers and much more. They are kept up-to-date automatically, for optimal protection of your privacy.


The network monitoring functionality, including the real-time connection list, traffic diagrams and the animated map view can be used for free!

The full feature set, including connection blocking, extended traffic history time ranges, advanced display and filtering options and more is available as an in-app purchase.

Great idea to make a simplified version of Little Snitch. It’s $13.49/year vs. $69.


Update (2023-03-23): See also: Hacker News.

Nate Silva:

The new @littlesnitch Mini blocks and reports in the same way that the original Little Snitch did, but it does this by using blocklists. Like an ad blocker, but for the whole system. I guess that makes it like a proxy, but easier to set up and manage. So far, it’s great.

Would like to hear about the blocklists that people use. I think apps could use a blocklist that isn’t as focused on web browser privacy.

Swift Atomics 1.1

Karoy Lorentey (Mastodon):

This change will finally enable widespread use of atomic strong references in Swift code.


ManagedAtomic will finally become conditionally Sendable when its Value is Sendable. This has proved to be a constant pain point for users, especially when first trying out the package, or in the simplest production use cases.


Non-copiable types are quickly approaching, and they are an important step towards modeling synchronization primitives such as atomics as Swift native constructs.


I expect Swift Atomics 1.2 will introduce Atomic<Value> soon after the language matures enough to support it, if and when that happens. (I also expect the Standard Library to start providing the same or (similar) construct at that point, eventually replacing the need for this package altogether.)


Swift Proposal: Noncopyable Structs and Enums


All currently existing types in Swift are copyable, meaning it is possible to create multiple identical, interchangeable representations of any value of the type. However, copyable structs and enums are not a great model for unique resources. Classes by contrast can represent a unique resource, since an object has a unique identity once initialized, and only references to that unique object get copied. However, because the references to the object are still copyable, classes always demand shared ownership of the resource. This imposes overhead in the form of heap allocation (since the overall lifetime of the object is indefinite) and reference counting (to keep track of the number of co-owners currently accessing the object), and shared access often complicates or introduces unsafety or additional overhead into an object’s APIs. Swift does not yet have a mechanism for defining types that represent unique resources with unique ownership.


We propose to allow for struct and enum types to declare themselves as noncopyable, using a new syntax for suppressing implied generic constraints, ~Copyable. Values of noncopyable type always have unique ownership, and can never be copied (at least, not using Swift’s implicit copy mechanism). Since values of noncopyable structs and enums have unique identities, they can also have deinit declarations, like classes, which run automatically at the end of the unique instance’s lifetime.


Tuesday, March 21, 2023 to Close

Scott Everett (via Hacker News, Reddit):

After nearly 25 years of operation, DPReview will be closing in the near future. This difficult decision is part of the annual operating plan review that our parent company shared earlier this year.


Thank you for your support over the years, and we hope you’ll join us in the coming weeks as we celebrate this journey.


The site will be locked, with no further updates made after April 10th 2023. The site will be available in read-only mode for a limited period afterwards.

This is so sad.


The forums on this site needs to be archived ASAP. Theres so much information living within those forums that it would be a major blow if it all just disappeared, especially as a film photographer, where finding a lot of my niche information pops up on these forums.


Update (2023-03-22): ReclusiveEagle (via Hacker News):

PSA DPReview is being archived by the Archive team. Currently they are working to scrape over 4 million articles and posts within the next 3 weeks. [1] — see April 10 2023

Once archived, the entire site will be made available for anyone to browse on the internet archive. The entire .WARC will also be made available for anyone to download and view locally with a .WARC viewer such as Web Replay — this allows you to download the site and view it locally forever. You will be able to download the .WARC file from here once complete.

Jaron Schneider:

Chris Niccolls and Jordan Drake are joining PetaPixel and will lead its new YouTube Channel. The two have been a mainstay in the photography industry for more than a decade as hosts for first The Camera Store and then DPReview.

See also: Adam Chandler, Rui Carmo, Nick Heer, Om Malik, Jeff Carlson, John Gruber, TidBITS.

Update (2023-03-24): Glenn Fleishman:

Contrast Amazon’s integration of DPReview since 2007 (not at all) with the New York Times’s of Wirecutter—no offense to Wirecutter, but the NYT treats it poorly within the NYT family/framework however good the work is. IMDB is a better example for Amazon: they bought it in 1998 and it remains fairly independent in appearance, yet well integrated with Amazon’s product and video offerings.

See also: Devin Coldewey (via John Gruber) and Arun Venkatesan.

Update (2023-04-03): Kirk McElhearn:

We had an entirely different topic planned for this episode and then learned just before recording that the website DPReview is being shut down after 25 years of covering digital photography and being the best resource for camera reviews.

Update (2023-04-06): Ernie Smith:

In the roughly two weeks since Amazon announced it was shuttering the site, the community of digital photography fans that made up the DPReview website and forums haven’t focused on the what-ifs. Instead, they’ve gotten straight to action. Case in point is the creation of Digicam Finder, an archive of photography information generated by the community. The site first emerged online in a basic form that includes more than 2,500 cameras in a fully searchable database, with specific information on technical features such as weight, sensor size, optical zoom, shutter speed, and USB capabilities.


While representing a new community resource, Digicam Finder is starting with a masterful scrape job of DPReview’s archive, utilizing work conducted by the Archive Team and others to put the website onto the Internet Archive. The site actually links to the Wayback Machine versions of many vintage DPReview articles, particularly reviews of featured cameras, making it possible to access both the open-source camera information and the still-copyrighted source material. But in the long term, Green says that the goal is to take this information and improve both its resourcing and presentation—and the OPD project is already seeing support from hundreds of fans and even outside data-collection efforts.


But even in that context, the DPReview shuttering stands out because of its nature as both a data-rich resource and a publicly facing community of members, and the fact that the closure was seemingly out of left field. And that means there’s a community willing to fight to keep its spirit alive, both in the form of data and successor forums like DPRevived, which has taken in more than 2,000 DPReview forum members since last month’s announcement.

Update (2023-04-22): Scott Everett:

We’ve received a lot of questions about what's next for the site. We hear your concerns about losing the content that has been carefully curated over the years, and want to assure you that the content will remain available as an archive.

We’ve also heard that you need more time to access the site, so we’re going to keep publishing some more stories while we work on archiving.

John Gruber:

I don’t understand either of these paragraphs. I mean, I’m glad they’re still publishing new content, but I don’t understand what publishing new stories has to do with giving readers more time to access the site. And it’s completely unclear what sort of “archive” is going to be available after it closes.


Update (2023-06-23): Scott Everett (via John Gruber):

We’re thrilled to share the news that Gear Patrol has acquired DPReview.


I want to reassure you that we remain firmly committed to what makes DPReview great: the best camera reviews in the business, industry-leading photography news and features, and one of the most active photography communities anywhere on the internet.

The Growth of Mastodon


Looks like users of are starting to register for Mastodon accounts.

Welcome to all new users of Mastodon.

Registered users of Mastodon might reach 10million users tomorrow.

And, indeed, that happened (via Hacker News). Some of the accounts are surely defunct, though that’s also the case with numbers from other social networks.

Mike Masnick:

Anyway, again, no idea how accurate any of these numbers are, but potentially more interesting is’s stats suggesting that the fediverse is closing in rapidly on an average of a billion posts per month!


Recovering Cropped Parts of Google Pixel Screenshots

Simon Aarons (via Hacker News):

Introducing acropalypse: a serious privacy vulnerability in the Google Pixel’s inbuilt screenshot editing tool, Markup, enabling partial recovery of the original, unedited image data of a cropped and/or redacted screenshot.

David Buchanan (via Hacker News):

Google was passing "w" to a call to parseMode(), when they should've been passing "wt" (the t stands for truncation). This is an easy mistake, since similar APIs (like POSIX fopen) will truncate by default when you simply pass "w". Not only that, but previous Android releases had parseMode("w") truncate by default too! This change wasn't even documented until some time after the aforementioned bug report was made.

The end result is that the image file is opened without the O_TRUNC flag, so that when the cropped image is written, the original image is not truncated. If the new image file is smaller, the end of the original is left behind.

This reminds me of the old Microsoft Word issue where if you had it set to “fast save” it would leave deleted text in the file. Sometimes there even seemed to be chunks of unzeroed content from other apps’ deleted files.

I found that the data was indeed compressed using dynamic Huffman coding, but that the Huffman tree was re-specified every ~16KB or so. This was excellent news because it meant I didn’t have to solve the “Huffman coding cryptanalysis” problem, and could instead solve the much simpler-in-practice problem of “find the start of a dynamic-Huffman-coded zlib block”.


Although I’m currently an iPhone user, I used to use a Pixel 3XL. I’m also a heavy Discord user, and in the past I’d shared plenty of cropped screenshots through the Discord app.

I wrote a script to scrape my own message history to look for vulnerable images. There were lots of them, although most didn’t leak any particularly private information.


Very simple script to check which PNG files have trailing data.

I hope that people who host forums, image boards, chat applications, etc., will delete or fix potentially vulnerable images before anyone uses them maliciously.

One way to repair a vulnerable image is to use optipng -fix.


These types of issues are exactly why whenever it’s sensitive, I screenshot, crop/edit, then screenshot the crop’d/edited screenshot. There’s other possible issues than this bug (like iOS’s non-destructive edits by default), so it’s better to be safe than sorry.

Nick Heer:

There are some people in the replies to Aarons’ tweet claiming the same is true for cropped iPhone screenshots. In my testing, that is not exactly right: if you crop an iPhone screenshot and then share it with default sharing options, it does not transmit edit history or removed image data, as best as I can tell. When I AirDropped a cropped screenshot to myself, it sent a re-encoded JPG image instead of the HEIF original. In the iOS Share sheet, there is an “Options” button; if you want, you can toggle the switch to “include all photos data” which includes “edit history and metadata”, including image data removed via cropping. This option is off by default.


Monday, March 20, 2023

Microsoft 365 Copilot

Jared Spataro:

Today, we are bringing the power of next-generation AI to work. Introducing Microsoft 365 Copilot — your copilot for work. It combines the power of large language models (LLMs) with your data in the Microsoft Graph and the Microsoft 365 apps to turn your words into the most powerful productivity tool on the planet.


Copilot is integrated into Microsoft 365 in two ways. It works alongside you, embedded in the Microsoft 365 apps you use every day — Word, Excel, PowerPoint, Outlook, Teams and more — to unleash creativity, unlock productivity and uplevel skills. Today we’re also announcing an entirely new experience: Business Chat. Business Chat works across the LLM, the Microsoft 365 apps, and your data — your calendar, emails, chats, documents, meetings and contacts — to do things you’ve never been able to do before. You can give it natural language prompts like “Tell my team how we updated the product strategy,” and it will generate a status update based on the morning’s meetings, emails and chat threads.


With Copilot in Word, you can jump-start the creative process so you never start with a blank slate again. Copilot gives you a first draft to edit and iterate on — saving hours in writing, sourcing, and editing time. Sometimes Copilot will be right, other times usefully wrong — but it will always put you further ahead.

Via John Gruber:

Hard to predict how these AI-powered features are going to play out, but it feels like they’re soon going to be table stakes.

Lukas Mathis:

It has always been a truism that what we have gained in ease of use by switching from the command line to the graphical user interface, we have lost in efficiency. I've long been interested in exploring how text-based interfaces could be integrated into GUIs, but it was just never quite possible to find the balance between accessibility and power. Make a text-based user interface too powerful, and it becomes impossible to use for the majority of people. Make it easier to use, and now it's just no longer powerful enough to warrant its own existence.

Until now.


Photos Data Loss With macOS 13.3 Beta

Josh Hill (via Marquelle D. McKean):

During a Europe trip in May 2022, I uploaded over 6,000 photos and hundreds of videos to the cloud. Upon editing and deleting some of the photos, I encountered an issue with, which ultimately led to the complete wiping out of my entire cloud library. Despite my efforts to recover the lost data using tools such as Disk Drill and contacting Apple support, no useful recoverable files could be found. Unfortunately, Apple support refused to escalate the issue to the engineering team due to the use of a beta version of macOS Ventura.

The loss of my lifetime memories and tens of thousands of dollars’ worth of intellectual property is one of the most devastating experiences of my life. I believe it is crucial to highlight the importance of backing up all data, including cloud content, to prevent such a catastrophic loss.

As a result of this incident, Koingo Software is investing 100% of our resources into finding a solution; all standard business operations have been halted for the time being.

Cloud syncing is not a backup. Apple doesn’t provide a way to directly download a backup of your photos, so you need to have Photos set to Download Originals to this Mac, which for most people means that they need to fit on your internal SSD. Then you can back them up yourself with Time Machine or to another cloud provider.

The other issue here is using your real data with a beta OS version. It’s easy to say that one shouldn’t do that, and I try not to. But I can’t really blame a developer for doing so because we want to identify bugs before they hit our customers, and many bugs don’t show up when using a clean test system. There’s no way to, say, use different Apple IDs for calendars and photos. And it’s not as though release versions are free of data loss bugs, either. So I think the main problem was not realizing that his local backup needed to include the photo library.

Marquelle D. McKean:

By all reasonable standards, this is a person we would expect to have understanding of how these things work. You don’t become the CEO of a small software company that’s been in business for nearly 30 years by being ignorant about computers. (Okay, maybe some people do, but they generally don’t stay in business for long after that.)

If someone like Josh can get something so straightforward and fundamental so very wrong, is it any wonder “ordinary” users make the same mistake, over and over again?


Update (2023-03-21): Brian Stucki:

The greatest digital fear. I “Optimize for Storage” on MacBook and iPhone but I have a Mac mini in the data center set to “Download Originals to this Mac” and copy to an external hard drive. It does the same for full copies of iCloud Desktops and Documents. Automatic everything.

Nick Heer:

I expect big cloud providers have more redundancies than most of us do, which makes it all the more disappointing that none of this stuff comes with a guarantee. That is, even if Hill were only running production operating systems, Apple — like every major provider of consumer cloud services — does not obligate itself to perform data restoration. iCloud Photo Library may only officially be a syncing service, but it is easy to think of it as something more robust, especially when it is described as “safe”, where your photos are “always available”, “without worrying about space on your devices”. Not sure about you, but after reading Hill’s experience, I am less concerned about disk space and more concerned about whether those photos are actually as safe as they ought to be.

I still think that a backup that’s not in your direct control is not really a backup. But Apple could certainly do more here. Calendars and contacts are synced, but multiple versions are stored in the cloud, and you can roll them back. This should be extended to other types of data.

Juli Clover:

Apple today seeded the release candidate version of macOS Ventura 13.3 to developers for testing purposes, with the new software update coming a week after the release of the fourth macOS 13.3 beta.

I hope the bug is fixed, but I’ve seen no reason to believe that it is.


Update (2023-03-23): Ezekiel Elin:

I’ve never seen any issues but 22E252 does run a Photos library upgrade

Damien Petrilli:

The Apple world is now used to beta being alpha quality without any questioning.

No Beta should incur data loss, they are almost production ready. And if data loss happens, it should be escalated quickly because of the oversight of a critical bug.

Update (2023-03-28): Josh Hill:

Regular every day phone-in support basically said there was nothing they could do — especially because we had used a beta. They wouldn’t even submit a ticket to the engineering team and told me to submit a comment using the Feedback tool instead (which often feels like the lowest priority format simply for remitting bugs).


I wrote in to upper management and explained the situation, and made a desperate plea to anyone in the tech community who could help provide suggestions.


After a few days, Apple’s backend engineers were finally able to recover what now seems to be all of the lost data, despite what the phone-in agent stated.


As it turns out, the “feature” is unlikely related to the beta at all after talking with Apple. The support agent I spoke with even told me he had the same problem.

The problem was triggered by creating a new local library and setting it as the system photo library.


If you designate a new library as the System Photo Library and then turn on iCloud Photos, the photos and videos in the new library will merge with those already in your iCloud Photos. Additionally, all photos and videos from iCloud will redownload to the device.

However, instead it deleted all the photos from all devices, bypassing “Recently Deleted.” It sounds like this is not fixed in macOS 13.3.


Update (2023-04-03): Nick Heer:

I also do not love that Hill removed the original article and excluded it from the Wayback Machine because I think these things are important to document, even if they are later corrected[…]

Spelunking Apple’s Open Source

Daniel Jalkut (Masotdon):

There’s no need to worry: the whole list, indexed by the pertinent platform and OS release to which they belong, is still available on a separate Releases page. Even better, each of these releases now has a corresponding GitHub repository, hosted in a dedicated organization reserved exclusively for open source distributions.


If you want to find the source code to an arcane tool like “banner”, just type it into a GitHub search of the organization. If there are too many false hits, as is the case for a common word like banner, try searching on something unique like a term from the command’s man page. The banner tool is credited as being authored by Mark Horton, and a search for “org:apple-oss-distributions Mark Horton” brings up more hits than I would have guessed (he also contributed to vim and vi, coincidentally), but a reference to the banner man page is the second search result.


Camo Studio 2

Jason Snell:

I’ve been using Camo Studio 2 for a few weeks and I’ve been relieved, frankly, to finally have proper control over my Continuity Camera and Studio Display cameras. The lighting in my office is weird, so I often need to adjust the color balance, and I’m never happy with the default zoom and options that Apple offers. With Camo Studio, I can drop an iPhone into a MagSafe mount and use it immediately without attaching a cable or launching an app on the iPhone.

Camo Studio has also picked up a bunch of new tricks. In addition to its classic zoom and image-adjustment settings, it’s got its own versions of Center Stage, Portrait Mode, and Studio Light. Reincubate claims its features are better and less processor intensive than Apple’s versions. (I did notice a few cases where Camo’s software seemed to better detect the difference between me and my background.) There’s also a really nice auto-pan mode that’s similar to Center Stage, but allows you to lock the zoom.


Update (2023-03-28): Duncan Babbage:

Camo Studio 2.0 from Reincubate makes the Apple Studio Display’s webcam look great.

You can set a fixed zoom position, SO much better than Centre Stage, and sharpen the image. It shows how ridiculous it is Apple doesn’t offer a pick-the-section-to-crop-and-display option for the Studio Display webcam.

No longer do I have to experience bouncing up and down in my chair slightly and having Centre Stage put my eyes in the centre of the frame, when it should be framing me head-and-shoulders.

Friday, March 17, 2023

Amazon Shuts Down Newspaper and Magazine Subscriptions

Laura Hazard Owen (via Hacker News):

It doesn’t matter whether they’re for your Kindle or in print — starting this week, Amazon is no longer selling newspaper and magazine subscriptions.


Instead, Amazon wants publishers to add their content to its $9.99/month digital subscription program, Kindle Unlimited, which includes a bunch of magazines and access to one newspaper that I saw — USA TODAY.


Anyway, while this all feels very 2011, news publishers in particular should check out some of the comments on last week’s Reddit thread, where customers talk about why they liked reading newspapers on Kindle, and why they’re sorry to lose the subscriptions — and it still has to do with the “satisfying reading experience” Sulzberger talked about more than a decade ago.


Who Can Access Private Home Security Footage

Alfred Ng (via Hacker News):

The police said they were conducting a drug-related investigation on a neighbor, and they wanted videos of “suspicious activity” between 5 and 7 p.m. one night in October. Larkin cooperated, and sent clips of a car that drove by his Ring camera more than 12 times in that time frame.

He thought that was all the police would need. Instead, it was just the beginning.

They asked for more footage, now from the entire day’s worth of records. And a week later, Larkin received a notice from Ring itself: The company had received a warrant, signed by a local judge. The notice informed him it was obligated to send footage from more than 20 cameras — whether or not Larkin was willing to share it himself.


The Magic Highlighter 0.6

Caleb Hailey:

If you’re like us, you might have developed a habit of smashing the ⌘-F keyboard shortcut and repeating some or all of the exact same search terms you already submitted to the search engine (e.g. Google, DuckDuckGo, or Bing).


The Magic Highlighter is a brand new Safari Extension that automatically highlights your,, and search terms and phrases on search result web pages — saving you time, and helping you find what you’ve been searching for.

This is referring to the actual found pages, not the lists of search results. It’s a $1.99 universal purchase.

Equality in Swift: NSObject, Subclasses, and Existentials

Mark Newton:

Conformance to the Equatable protocol seems pretty straightforward. You simply override the == function.


This works great for objects like structs, or classes with no superclass. However, we can run into problems with the == function if we’re dealing with NSObject subclasses.

Jayesh Kawli (via Marcin Krzyzanowski):

And now if you try to do following comparison, they will either won’t work, will be buggy or fail to compile

Noah Gilmore:

Swift can be tricky sometimes. For example, what does the following print?

class A: NSObject {
  let x: Int

  init(x: Int) {
    self.x = x

func ==(left: A, right: A) -> Bool {
  return left.x == right.x

print(A(x: 1) == A(x: 1))
print([A(x: 1)] == [A(x: 1)])


The best way to make an NSObject subclass use custom equality inside an array is to override isEqual:[…]

His reasoning for why the custom == didn’t work as expected is wrong, but the solution is correct. Similarly, you should override hashValue (not hash(into:)) if you need to change how it is Hashable.

For non-NSObject classes, a similar issue applies. If you have something like:

class Base: Equatable {
    static func == (lhs: Base, rhs: Base) -> Bool {
        return lhs === rhs

class A: Base {
    let x: Int

    init(x: Int) {
      self.x = x

func ==(left: A, right: A) -> Bool {
    return left.x == right.x

The results may not be what you expect:

A(x: 1) == A(x: 1) // true
[A(x: 1)] == [A(x: 1)] // false

Array uses the == from where its elements conformed to Equatable.

Natalia Panferova (tweet):

In Swift 5.7 that comes with Xcode 14 we can more easily check if two values of type Any are equal, because we can cast values to any Equatable and also use any Equatable as a parameter type thanks to Unlock existentials for all protocols change.


Inside isEqual() method we have access to Self, so we can try to cast the other value to the same type as the concrete type of the value this method is called on. If the cast fails, the two values cannot be equal, so we return false. If it succeeds, then we can check the two values for equality, using == function on values of the same concrete type.

There are some edge cases to be aware of, however, so it is preferred to use AnyHashable.

Ben Cohen:

You can define something similar for Comparable[…]


Update (2023-08-09): See also: Helge Heß.

Thursday, March 16, 2023

Petey 1.1.2


We are excited to introduce Petey your AI assistant app for the Apple Watch! With this app, you can now interact with the famous GPT model right from your wrist.


With Petey on your wrist, you can easily access a vast source of knowledge and communicate with an intelligent computer in real-time. It’s like having a personal assistant on your wrist!

Via John Gruber:

I’ve been using it for a week or so and it’s occasionally been genuinely handy, especially if you keep it on an easily-accessed watch face complication. With other devices, you can just search the web for answers to questions. Oftentimes, when you ask a question to Siri, you get redirected to a web search. But if all you have handy at the moment is your watch, a web search is useless. Petey gives good answers to a lot of questions.

Note that this is a watch-only app. It doesn’t even show an icon on iOS.

Ken Case:

It’s great that the developers […] don’t collect any data from their app. But is that App Store privacy label misleading, when ChatGPT itself collects everything you ever enter into it?


Apple’s guidance is pretty clear in stating that the app privacy label should identify “all of the data you or your third-party partners collect” (emphasis added).

So any app using ChatGPT really ought to be declaring ChatGPT’s data collection in that privacy label (unless the app meets all of Apple’s “optional disclosure” criteria, including being “not part of your app’s primary functionality”).


Ventura Adds

Howard Oakley (Hacker News):

What happens in macOS Ventura is essentially the same until the moment that quarantine is cleared, when macOS now attaches a new extended attribute (xattr) of type to the file. This contains an 11-byte binary reference unique to that quarantine event, and may be protected by SIP to make it persist and prevent it from being stripped.


Defeating any SIP protection is simple for the user: when an app with a protected xattr is copied to another volume, the SIP protection breaks, and the xattr can be deleted in the normal way. However, code that tries to remove that xattr while it’s still protected may fail, and that has resulted in problems reported in Ventura by some users.


Randy has also identified the binary content of this new xattr as containing an 8-byte integer that is that app’s primary key in the provenance_tracking table in /var/db/SystemPolicyConfiguration/ExecPolicy. This would enable macOS to check the previous cdhash and other information about the app, perhaps to determine whether fuller checks are required by Gatekeeper, when the app is launched on subsequent occasions. That would make it a key part of Ventura’s new extended Gatekeeper checks.

Ethan Schoonover:

A small macOS improvement idea:

When I hit command-i on a macOS app, it would be nice if the app would include the website for the developer/application in the info or comments field.

I’ve forgotten about some apps that I’ve installed (i.e. i have no idea what they are even for) and would like to easily pop open the site for them without launching and hoping the URL is in help or about (or just manually searching online).

Howard Oakley:

While it’s clear that macOS Ventura is now tracking the provenance of apps that have completed their first run with the quarantine flag set, this provenance tracking doesn’t (yet) appear to be used to tailor or modify the checks run by Gatekeeper. It’s possible that provenance tracking isn’t yet mature enough to be used for that purpose, or that it’s intended for something else. Perhaps Ventura 13.3 will reveal more.


Update (2023-05-11): Howard Oakley:

When the app is moved to a different enclosing folder, such as Applications, and is launched for the first time using the Finder, its xattrs change: the quarantine flag is cleared but left in place, a xattr that’s protected by SIP is attached, and an unprotected xattr is also attached.

If the app is first launched from the same folder that it arrived in, that works differently, and no provenance xattr will be attached. Neither are provenance xattrs attached to documents.


On subsequent runs of that app, syspolicyd locates the previously stored provenance data, and updates it[…]

Peakto 1.5


CYME adds annotation features to Peakto, the AI-powered photo meta-cataloger for macOS. Thanks to its wide compatibility–Lightroom, Luminar AI/Neo, Capture One and Apple Photos–Peakto allows photographers to annotate from the same interface thousands of images belonging to different photo editing software and different folders. This borderless annotation, which can be applied to hundreds of photo catalogs, complements Peakto’s automatic AI annotation that effortlessly assigns keywords and categories to images.


Peakto also recovers the annotations present in the original catalog and allows users to add new ones such as title, caption, author’s name, rights of use and legal mentions. Because Peakto is an AI-enhanced photo organizer, it offers photographers two options to find a specific shot or make image selections: (1) keywords describing the image content automatically assigned by the AI, and (2) the photographer’s personal notes. Peakto simplifies the sharing of the best images from a shoot, the creation of a thematic album or the selection of visuals for a book or portfolio.

I like the concept of an app that pulls together photos from different apps and provides an interface tuned for browsing, searching, and annotating. My main photo app is Lightroom Classic, but it doesn’t have AI searching and can’t show the map in the grid view. Peakto can give me these and other features without my having to give up Lightroom, which is great in many other respects.

This new version offers annotation roundtripping. Metadata that I add in Lightroom shows up in Peakto, and changes made in Peakto can be written to XMP sidecars (or HEIC/JPEG files) and then brought back into Lightroom. This is great but doesn’t seem quite ready for my purposes yet. Lightroom doesn’t automatically bring in the changes; you have to tell it to sync. And syncing only works with folders Peakto is set to watch, not with whole linked catalogs, and it’s not recommended for folders with Lightroom masters. CYME has plans to expand syncing with Lightroom and with other apps, and I will be following their progress with interest.


Passing Types to Swift Functions

Paul Samuels:

This post uses a toy helper function that fetches remote JSON to show how we can design its api so that explicitly providing the type isn’t required when the compiler can infer types from context.


We can look at how JSONDecode.decode is defined to see how its api is designed. Clicking through the header we see

open func decode<T>(_ type: T.Type, from data: Data) throws -> T where T : Decodable

This is nothing new, but I wanted to document it here because I did not find this pattern obvious when I first learned it. My instinct from Objective-C was to pass in an AnyClass or perhaps an Any.Type, but that doesn’t work because there’s no way to convince the compiler that the return value will match the type received at runtime.

So you have to use generics. You could omit the type parameter and have the compiler infer T based on how the call site uses the return value, but that feels kind of backwards. Instead, using T.Type lets you go the other way and have T inferred from the parameter. This makes more sense, though it’s still a bit weird because you are passing in type but don’t really need it at runtime since you already have T.self.

With the latest change we have more flexibility but if feels like we’ve lost some brevity in cases where the compiler can infer things. To bring this type inference back we can use a default argument[…]

Wednesday, March 15, 2023


OpenAI (Hacker News):

GPT-4 is a large multimodal model (accepting image and text inputs, emitting text outputs) that, while less capable than humans in many real-world scenarios, exhibits human-level performance on various professional and academic benchmarks. For example, it passes a simulated bar exam with a score around the top 10% of test takers; in contrast, GPT-3.5’s score was around the bottom 10%.


We are releasing GPT-4’s text input capability via ChatGPT and the API (with a waitlist). To prepare the image input capability for wider availability, we’re collaborating closely with a single partner to start. We’re also open-sourcing OpenAI Evals, our framework for automated evaluation of AI model performance, to allow anyone to report shortcomings in our models to help guide further improvements.

Hartley Charlton:

Apple is testing generative AI concepts that could one day be destined for Siri, despite fundamental issues with the way the virtual assistant is built, the New York Times reports.

Employees were apparently briefed on Apple’s large language model and other AI tools at the company’s annual AI summit last month. Apple engineers, including members of the Siri team, have reportedly been testing language-generation concepts “every week” in response to the rise of chatbots like ChatGPT.


Update (2023-03-20): Gary Marcus (via Hacker News):

Chomsky co-wrote a New York Times op-ed the other day, and everyone is out there once again to prove they are smarter than he is, in the smuggest possible language they can muster.

Update (2023-03-22): Bill Gates:

In my lifetime, I’ve seen two demonstrations of technology that struck me as revolutionary.


I thought the challenge would keep them busy for two or three years. They finished it in just a few months.

In September, when I met with them again, I watched in awe as they asked GPT, their AI model, 60 multiple-choice questions from the AP Bio exam—and it got 59 of them right. Then it wrote outstanding answers to six open-ended questions from the exam.

Update (2023-03-24): DV (via Hacker News):

You might know that MSFT has released a 154-page paper on #OpenAI #GPT4, but do you know they also commented out many parts from the original version?

A thread of hidden information from their latex source code.

Aiko 1.0.3

Sindre Sorhus:

High-quality on-device transcription. Easily convert speech to text from meetings, lectures, and more.

The transcription is powered by OpenAI’s Whisper model running locally on your device.

It’s free. There’s even an option to translate to English.


Printing Lazy Web Images

Adam Engst:

Mail generates an offscreen web view, waits for the “load” part of the document to arrive, and then “prints.” But loading="lazy" causes images to load only when scrolled into view, which never happens with printing.


I did testing and found that if I changed the scaling percentage to 99%, some images would load—but they’d be fuzzy—and others would remain blank. However, if I changed the scaling percentage more seriously, such as to 87%, and then scrolled through the entire document preview, all images would appear crisply in the resulting PDF, even if I later returned the scaling to 100%. Presumably, asking the Print dialog to scale the output forced WebKit to load all the images, allowing them to appear.

This is a longstanding problem that also affects pages saved as PDFs from Safari and third-party apps. WebKit should just handle loading the whole page automatically.

Why a Separate App for Classical Music

Jessie Char (via Nick Heer):

Now here’s The Nutcracker. The composer is in the album title, the performer and conductor are listed as the artists, each track has a byline for the conductor, and while all 17 tracks are unique you can’t see the bit that sets them apart. And the play preview displays even less.

In fact when you tap to full screen the song it still doesn’t display the full title, you have to wait a few seconds for it to start scrolling.

And it doesn’t show it at all in CarPlay. Will that get Apple Music Classical, too?

The year refers to the year this particular version was was recorded, not the year the piece was composed. Year of composition AND year of recording are both important.

The “artist” tag is also really tricky, and often this’ll be tagged with composer, ensemble, soloist (if relevant), and conductor. It’s a lot of names, and these often get clipped or some just don’t get added to the mix.


Take Apple News vs iBooks- they’re both reading apps, so why is it necessary to have two separate apps? Because they’re extremely different reading and writing experiences and it doesn’t make sense to lump them into a one-size-fits-all approach.


Tuesday, March 14, 2023

Update on Cloud File Provider Extensions

Adam Engst (Mastodon):

My understanding is that Box, Google, and Microsoft have migrated their Mac users to the File Provider approach, whereas Dropbox—probably the most popular among everyday Mac users—has only recently started to encourage those outside its beta program to switch (while others are still being asked to join the beta). It can be hard to tell since cloud storage providers often roll out changes over time or to subsets of customers to test user response, identify concerns, and reduce support loads. Some Dropbox users even report one Mac being upgraded to the new File Provider approach, while others continue to use the kernel extension.

I’ve switched most of my formerly Dropbox files to Git and am now using iCloud Drive for everything else. Unfortunately, iCloud Drive sometimes takes a day or more to sync new files from my iPhone to my Mac.

Some users, including us, have experienced situations where the local folder doesn’t move but becomes disconnected from the service.


However, there are no guarantees that references to files will all resolve to the new locations, and in the case of apps that use cloud storage for syncing settings, you may not even notice immediately.


The most significant limitation of the new File Provider approach is that ~/Library/CloudStorage is located on your internal drive. For those with terabytes of files in a cloud storage service, that’s a huge problem.

Another case where it seems like Apple has forgotten those with external storage needs.

Therefore, assuming you have sufficient disk space, I recommend downloading your entire cloud storage data store, at least temporarily. Bring everything down and let Time Machine and your other backup systems make a copy.

Or, if you don’t have the space, ChronoSync can download the files in stages, back them up, and then evict them while keeping peak storage needs low.


Update (2023-05-30): John Gordon:

Microsoft has decided it will not fix Mojave and has retroactively dropped Mojave support [for OneDrive].

Update (2023-06-13): Dropbox:

The following charts outline the changes you can expect when using Dropbox for macOS leveraging the File Provider API.


Dropbox Transfer doesn’t support new macOS packages.

Actions involving a large number of files can take longer than usual to complete.

Certain types of files may not sync on macOS 12.

LAN Sync is currently not supported.

Certain files or folders with very long names or that are located in deeply-nested folder structures won’t be synced.


Safari can’t open .html or .css files without Full Disk Access permission.

Update (2023-07-11): Jeff Carlson:

The latest version of my book Take Control of Your Digital Storage, 2nd Edition is now available, updating the content for macOS 13 Ventura and the upcoming macOS 14 Sonoma. In addition to sprucing up the whole 160-page book, this version 2.3 adds a few new important things[…]

Update (2024-04-08): Cabel Sasser:

Dropbox has been working on a new client using Apple’s “File Provider” system for literal YEARS — and we’ve never been given it. Today I learned it won’t roll out if your Dropbox has over 300,000 files. Extremely curious to know what bug they’re waiting on Apple to fix here. 😵‍💫

Using a Mac Without Phoning Home

Howard Oakley:

A great deal has happened in the two years since Apple promised that it would provide an option to stop online checking of certificate validity using OCSP, and that of notarization. Instead, it has introduced two quite different enhanced security modes: Lockdown Mode, and iCloud Advanced Data Protection. Although they’re both valuable, it’s surprising that Apple has put great engineering effort into those, but still can’t see its way to let Macs run without repeatedly connecting to its servers.


There’s a small but strong body of users who, for a variety of reasons, really don’t want their Macs when they’re in use repeatedly connecting to Apple. To get a feel for how extensive the problem is, this article lists all the connections that Macs and devices require. I count 75 for regular macOS, excluding MDM and enterprise/education/business.

Howard Oakley (Hacker News):

This article explains what does and doesn’t work when a Mac running Ventura has no network connection at all.

It’s what you would expect.


The problem with online checks (gatekeeper) are when you have flaky internet connection.

It can handle no connection quite well, but unstable internet is really a PITA - commands and applications lag randomly when launching etc... It took me some time to troubleshoot why suddenly ma MacOS was almost unusable and this was the culprit.


Bugs in OpenBSD’s UTF-8 Decoding Logic

Exotic Silicon (via Hacker News):

In this article, we’ll take a look at the [sorry] state of affairs regarding UTF-8 support on the OpenBSD kernel, at least as of OpenBSD 7.2-release. It’s not a pretty picture, but hopefully we can improve things.


Still, the debugging process we went through here to discover the cause of the problems in the first place is worth sharing from the beginning, as the code in question was particularly bad with plenty of textbook mistakes. Who knows what you might find in your own investigations elsewhere.


So effectively, when we tried sending the 0xC4, 0x80, sequence to print character 256, the kernel tried to interpret it as a three byte sequence instead of a two-byte sequence. The trailing newline caused the re-assembly of the multi-byte character to fail, but we fell through to code which then correctly processed the newline character.


Converting the Streaks Apple Watch App to SwiftUI

Quentin Zervaas:

At this time, Streaks for Apple Watch still supports watchOS 6. Even though SwiftUI runs on watchOS 6, there were some roadblocks in our implementation, so if you’re on watchOS 6, you’ll still be running the WatchKit version.


In Streaks 9, this animated view on Apple Watch fully uses SwiftUI, not a series of animated images. This makes it much smoother, faster and nicer to interact with.


All of these edge cases are the primary reason why it’s taken us two years to get all this working as well as we’d like.


The multiline support in TextField on Apple Watch is buggy: while it would reserve 3 lines of space, it would just truncate the first line and not show subsequent lines.


Monday, March 13, 2023

Pattern Matching on Swift Error Codes

Ole Begemann:

I was wondering why this shorter syntax works. Is there some special compiler magic for pattern matching against error codes of NSError instances? Turns out: no, the answer is much simpler. Foundation includes an overload for the pattern matching operator ~= that matches error values against error codes.

The implementation looks something like this:

public func ~= (code: CocoaError.Code, error: any Error) -> Bool {
    guard let error = error as? CocoaError else { return false }
    return error.code == code

However, my experience has been that this only works for concrete types, not when your errors or codes use a protocol.


Update (2023-03-15): See also: Rob Jonson.

Update (2023-03-16): The problem seems to be this bug (via Rob Jonson).

Ventura Time Machine Backups and the APFS Uncertainty Principle

Howard Oakley:

Before making any snapshots for this backup, TMA performs housekeeping on its own previous snapshots, both on each volume being backed up, and on the target volume (backup storage). The rule it applies is inflexible: it deletes any local snapshots (on a volume being backed up) that are more than 24 hours old, unless it’s the last snapshot on that volume, which it retains for this backup. Even so, TMA snapshots can become orphaned and left indefinitely, for the user to spot and delete manually. Although uncommon, this can occur when Macs are unable to make full backups because they’re disconnected from their backup storage for more than 24 hours at a time.


TMA next has the task of deciding how it’s going to work out what needs to be backed up on each source volume. […] Snapshot deltas were first choice in the past, but TMA has returned to preferring FSEvents when possible, for second and subsequent backups of a volume.

I wonder whether this is for performance reasons.

Howard Oakley:

If the large files you put in the Trash were on the volume being backed up when Time Machine made one of those hourly snapshots, then the data for those files will be retained as part of that snapshot, until the last snapshot containing those files is deleted. Only then can the data for those files be removed, and the space they took up will be freed.


The cleanest way to avoid this happening is to keep all downloads and large temporary files on a separate volume which isn’t backed up, so doesn’t have snapshots made of it automatically.


If you don’t want to use a BigFiles volume, or can’t select where to save a large temporary file, you can work around snapshots by timing. Before acquiring that large file, check when the last Time Machine backup was made, using the Time Machine item in the menu bar. Provided there’s sufficient time before the next backup is due, you can download the large file(s), move them to another disk for storage or otherwise use them, then put them in the Trash. But the most essential step is that you must then empty the Trash before the next backup starts, or they’ll be captured in the next automatic snapshot.

Adam Engst:

I’ve been pondering just how difficult—perhaps impossible—it is to know how much free space you actually have on a Mac’s drive these days (see “Ensure Sufficient Free Space before Upgrading to Ventura,” 15 November 2022 and “iPhones and iPads Now Require a Passcode on Every Backup/Sync,” 11 January 2023). The complexity underlying APFS and macOS in general creates a situation where the amount of free space isn’t entirely deterministic.


I figured that if I emptied the Trash, I’d either see no change due to the Time Machine snapshot issue or have almost exactly 145 GB free. Surprisingly, neither was true. After a minute or so, the free space number did rise—as expected—but first to 148 GB (not shown) before settling down at 146 GB. I can’t explain why it was a full gigabyte higher than would seem possible.


Grasping at straws, I decided to restart, just in case that somehow helped the filesystem come to a better conclusion about the amount of free space. Unfortunately, after my Mac came back up (with the same apps running), the free space number had dropped to 159 GB.


I no longer believe it’s possible to audit the free space on a Mac or to explain precisely how much space should be freed up by a particular action.


Indispensable Developer Tools

David Smith:

This isn’t comprehensive, but my hope is to surface potentially less well known tools that I have found super helpful. The obvious ones like Xcode and Terminal are obviously essential, if not particularly interesting.

Sim Genie is an absolutely required tool for anyone doing development involving GPS. Curtis has put together a fantastic tool that can do all manner of things for improving the iOS simulator, but its GPS Simulator function is amazing. You load up a GPX file and it will play it back and various speeds and various rates.


Pastel is essential for anything involving color (which is probably every app).


The iOS Simulator’s video recording can export gifs, but I can’t easily edit those outputs. So instead I would often record to video there, then roundtrip quickly to Final Cut to tweak something, then export them in Gifski for sharing.


I was constantly juggling GPX files for this update and found the best place to preview/compare them was the website GPX Studio.

From this article, I use Soulver, Sketch, and Kaleidoscope a lot. Other key apps for development: BBEdit, Dash, Tower, Hopper, LaunchBar (opening headers, snippets for coding and customer support), DropDMG, Script Debugger, EagleFiler (issue tracking, customer support history, and documentation searching), Apparency, and Base.


Friday, March 10, 2023

Music to No One’s Ears

Joe Rosensteel (member post):

Look, I’ve been hoping that at some point, the rocky transition from iTunes to the Music app would be over and we’d all look back on it and say, “Wow, I can’t believe that was so brief.” But it isn’t over. Here I am, in the year 2023, and I have the same problems using the app that I’ve had for about half a decade at this point. And yes, many of these problems are tied to changes made for the Apple Music service.

When launching the Music app on macOS, you always start off at the Listen Now section of the app. It doesn’t matter what I was previously listening to in the app—that information has been lost to the sands of time. I can’t resume playback of anything I was listening to on this device, or any other. Anything I was looking at in the interface is wiped away too. I can, instead, see the four things that Apple thinks I want immediate access to.


Surely, the section under it, Recently Played, is exactly what I want? No, I want what I was last listening to, where I was last listening to it, tied directly to the play button. Recently Played only provides the entire song, album, or playlist I was listening to from its start.

He also discusses how search doesn’t work as well as it used to and how it lost his star ratings.

Dan Moren:

In implementation, however, the macOS Music app is basically the former iTunes app with Apple Music’s streaming functionality bolted on. While being able to include both tracks from your personal library and Apple Music in one unified interface has its benefits, especially when it comes to ease of use, it can sometimes feel like Apple’s performing some clever legerdemain. For example, one of my biggest frustrations is discovering that a specific track from an album that I’ve added to my library is unavailable because of streaming rights. Why just a specific track? It’s almost always unclear—but it does put paid to the idea that music in your library is actually in your library.

That’s just one example of where this melding doesn’t always work; there are plenty of others, including matching an explicit version of a song to a clean version (or vice versa), ending up with split albums because of metadata problems, and just plain getting the wrong version of a song (live instead of studio, for example).


But there exists no similar [Handoff] functionality for music. If I pause a song I’m playing on my Mac and want to pick it up on my iPhone—an analog of which was performed in the very first ad for the iPod in 2001, I have to launch the Music app on my phone, find the track, and skip ahead to where it was on the Mac.


This has caused me no end of frustration, especially when I start listening to an album on my phone, AirPlay it to my HomePod mini, and then go back to my phone only to discover that it’s still on the same track it was when I first AirPlayed it.

Pierre Igot:

One of the many ways that Apple effectively punishes Mac users for not fully embracing the all-Apple approach to music (by using third-party tools to rip CDs, etc.) is the chronic failure of #iOS’s #Music app to provide reliably GAPLESS playback of ripped album tracks. Could they not use a bit of that “machine learning” magic to detect when there is no silence between tracks and make sure the playback has no annoying gaps/blips between them?

I just tried to open the MiniPlayer window in the Music app, and in response I got a modal alert asking me to join Apple Music.

Nick Heer:

Was wondering if Apple had fixed Music’s “Sync Library” feature. Nope. Still not enabling it.


Update (2023-03-14): evilerutis (via ednl):

[A] majority of songs came back. But a few hundred are just completely gone for good. The support person said “sometimes that happens” (?!?)

Adam Demasi:

I’ll take an occasional bad design decision (Spotify’s new TikTok-style homepage) over the death by a thousand cuts you’re made to endure to use Apple Music.

Update (2023-12-22): Adrian Schönig:

For over 17 years I’ve created many hand-curated playlists in my iTunes and then Apple Music library. Since Apple Music came around, many songs in those playlists randomly get marked as unavailable. I can find most of these songs and fix it up manually, but this is really not cool. 😞

Christina Warren:

Even in #macOSSonoma, Apple Music is such a shitshow as a Mac app that I won’t even open it and will instead go straight to Spotify as God intended. I have to subscribe to two different streaming services b/c they ruined iTunes so much that I can’t even listen to Apple Music on a Mac without wanting to throw things. Yet I prefer it on mobile. First world problems but damn

Update (2023-12-29): See also: Matt Sephton.


Update (2024-02-14): Steve Troughton-Smith:

The iTunes Store on macOS is in disrepair 😂 What is this font!

Update (2024-02-27): Jeff Johnson:

Just when you thought the Mac Music app couldn’t get any worse, it suddenly decided to start randomly turning off shuffle.

Steve Troughton-Smith:

Declaring Apple Music bankruptcy; it has made me so unhappy with what’s left of the music library I spent 25 years curating that there’s just no way to fix it anymore. I’ve lost my algorithm-seeding play counts, hearts and stars many times over by now. cmd-A, delete 🫡

Update (2024-03-05): Matt Sephton:

Apple HIG says that enter will select the highlighted button (here the red one) and space will select the focused button (here the outlined one), but in Music app on Sonoma enter and space both select cancel! So to delete song you have to tab to the red button, or use the mouse.

Judo 1.13.1

Judo (via Collin Allen):

Judo is a design and build tool for SwiftUI apps that writes production-ready code for you while you’re designing. Eliminate back-and-forth with developers and free them from unrewarding grunt work.


Drag-and-drop a Judo file into any Xcode project and use the Judo SDK to render it as native SwiftUI — then wire up button actions and input controls to custom code.

Roku Doesn’t Support IPv6

DingleBog3899 (via John Gruber):

Our tribal network started out IPv6, but soon learned we had to somehow support IPv4 only traffic. It took almost 11 months in order to get a small amount of IPv4 addresses allocated for this use. In fact there were only enough addresses to cover maybe 1% of population. So we were forced to create a very expensive proxy/translation server in order to support this traffic.

We learned a very expensive lesson. 71% of the IPv4 traffic we were supporting was from ROKU devices. 9% coming from DishNetwork & DirectTV satellite tuners, 11% from HomeSecurity cameras and systems, and remaining 9% we replaced extremely outdated Point of Sale(POS) equipment. So we cut ROKU some slack three years ago by spending a little over $300k just to support their devices.


Now if ROKU cannot be proactive at keeping up with connectivity standards they are going to be wiped out by their own complacency. Judging by the growing number of offers to replace their devices for free their competitors are already proactively exploiting that complacency.

I suppose I’m lucky that, as an end user, IPv6 so far isn’t something I’ve had to think about. It’s kind of like Y2K in that I know there’s been a lot of work going on, but it’s been mostly invisible. I don’t actually know which of my devices and apps have been updated.

Geoff Huston (in February 2022, via Tim Bray):

I bet that nobody believed in 1992 that thirty years later we’d still be discussing the state of the transition to IPv6! In 1992, we were discussing what to do about the forthcoming ‘address crunch’ in IPv4 and, having come to terms with the inevitable prospect that the silicon industry was going to outpace the capacity of the IPv4 address pool in a couple of years, we needed to do something quickly. We decided to adopt a new protocol, IP version 6, a couple of years later, and in December 1995 the IETF published RFC 1883, the specification of IPv6.

There were many views as to how long the transition from IPv4 to IPv6 would take, from an optimistic six-month rapid cutover to a hopelessly pessimistic view of a protracted ten-year transition. If there was a prevalent view at the time, it was that the transition would take a further five years or so. But don’t forget that this was in the lead up to the Internet bubble of 2000, and anything that was going to happen five years from now was shelved as a ‘tomorrow’ problem while we toiled away on adding more carriage capacity to the network, fixing the myriad of issues with routing, and making dial-up modem access work!

While this was a pressing issue in 1992, four years later in 1996 there was no longer any particular sense of urgency about the transition to IPv6. Why not? There are four major reasons for the shift in attitude.

Google (via Hacker News):

Google collects statistics about IPv6 adoption in the Internet on an ongoing basis. We hope that publishing this information will help Internet providers, website owners, and policy makers as the industry rolls out IPv6.

It’s around 38% right now.


Screen Saver Doesn’t Properly Display Rotated Images

Adam Engst:

But therein lies the longstanding rub: an unresolved bug that spans many years. The big win of Apple’s photo screen savers is that they let you select photos from your Photos library or a folder. According to the author of ArtSaver, an independent macOS screen saver that offers many more options, Apple doesn’t allow third-party apps access to your Photos library.

The macOS permissions system is designed around giving apps access to things. There is apparently no way to do this for a plug-in.

The problem is simple: Apple’s photo screen savers display only original, unedited images in Photos. If you have edited an image, including rotating it, the screen saver ignores your changes, instead using the original image stored separately in Photos.


There are workarounds, but you’re not going to like them because they waste disk space and require regular maintenance to include new photos.

The seemingly basic task of displaying a collection of photos from the system photo library on your lock screen is awkward on both macOS and iOS.


Update (2023-03-14): Satish E Viswanath:

ever tried screen savers on Apple TV via Home Sharing your photo library? It does NOT support HEIC photos (!) Dates back to 2017.

Working Around Stuck Safari Tabs Syncing

Jesse Squires:

Aside from tabs not syncing, the biggest problem I’ve had is that tabs from my Mac get “stuck” on my iPhone and iPad. These “ghost tabs” are ones that have been closed on my Mac — often for weeks or months — yet they continue to appear as open tabs on my iOS devices. Most recently, a tab appeared on my iPhone that was supposedly open on my Mac for a project on GitHub that I haven’t worked on for over a year! I’ve tried deleting/closing these ghost tabs on my iPhone, but they always reappear.

He disables syncing on all devices, keeping the data only for the Mac, reboots each device, and then launches Safari for Mac first.


Thursday, March 9, 2023

Apple Music Classical Pre-Order

Hartley Charlton:

Apple’s long-awaited dedicated classical music app today appeared on the App Store and is available for pre-order ahead of its launch at the end of March.

Sarah Perez (Hacker News):

The company’s decision to target classical music listeners with a standalone app is a differentiator for its Apple Music subscription service — though it’s one that’s quite different from the features rival Spotify announced this week, which had involved tech-forward features like AI and video-based discovery feeds.

Instead, Apple Music Classical will present a simple interface for engaging with classical works. Users will be able to search by composer, work, conductor or even catalog number, to locate recordings. These can be streamed in high-quality audio of up to 192 kHz/24-bit Hi-Res Lossless. And thousands of recordings will be available in Apple’s immersive spatial audio, as well.

There’s no additional charge for Apple Music Classical as it’s being shipped as part of the Apple Music subscription. The app will be available to subscribers across plans, including the Individual ($10.99/mo), Student ($5.99/mo), Family ($16.99/mo) plans, and in the Apple One bundles.

Hartley Charlton:

Apple says that it has been working with classical music artists and institutions to offer exclusive content and recordings in Apple Music Classical, including Hi-Res Losless and Spatial Audio tracks.

The app’s design is based on Apple Music, but with a simplified UI that heavily uses Apple’s New York font instead of SF Pro.


There is no version of Apple Music Classical for iPadOS, making it an iPhone-only app.

An Android version of Apple Music Classical is in the works and set to arrive “soon,” according to Apple.

Steven Woolgar:

It says there will not be an iPad app, but there will be an Android app. It doesn’t say anything about macOS.

I don’t know what to think that Apple has prioritized Android over iPad. As an iPad user and music lover I am not too impressed.

They’ve got Catalyst and SwiftUI, but the second platform to be supported will be Android? And what about HomePod?

Jason Snell:

As I learned years ago from Macworld contributor Kirk McElhearn, classical music fans have some very specific needs that aren’t well served by the pop-music-oriented design of Apple Music (and all the way back to iTunes, for that matter). Hence the need for a dedicated app. (It’s unclear to me if a Mac app is in the works, however.)

Dave B.:

On the one hand, I’m glad it’s finally coming.

On the other hand, if you look at the screenshots on the App Store, it looks like it has the exact same design as the normal Apple Music app.

I had been hoping the long delay to Apple Music Classical was the result of Apple building a newly designed Classical app, and then applying those updated designs to the regular Music app so that they could both be released together with a new, improved design.

By the looks of it, that’s not the case. If Apple Music Classical looks exactly like the current Apple Music app, that means it’s less likely that Apple is actually redesigning the current app. That’s immensely disappointing to me.

And I guess the classical-focused UI improvements won’t be available for already purchased music, only via subscription.


Update (2023-03-10): Rui Carmo:

Sometimes I wonder if Apple really has a services strategy instead of a bunch of tiny, disjointed little teams that appear to operate in a completely isolated way without thinking about how and end customer would use all their services across all of their devices.

Indie Success

David Smith:

Widgetsmith has just achieved a remarkable milestone, surpassing 100 million downloads since its launch in September 2020. A number that I can’t really wrap my mind around. A number larger than the population of all but 14 countries (🤯).


The success of Widgetsmith was made possible by the amazing platform Apple has made and the amazing users it has attracted.


It took me a long time to get here, Widgetsmith was the 59th app I launched over 12 years, and there are no guarantees that anything we make will ever find its audience.


2022 Apple Vision Accessibility Report Card

AppleVis (via Steven Aquino):

To gather the ratings and comments contained in the report card, we conducted a comprehensive survey where participants rated their experience using Apple’s various platforms with the available vision accessibility features on a scale of 1 to 5. Additionally, we invited participants to provide detailed written feedback and suggestions for enhancing Apple’s vision accessibility features and user experience. The survey also included questions that assessed Apple’s performance in addressing vision-related bugs, as well as the new vision accessibility features added in 2022.

The report card below presents a summary of the survey results, showcasing the areas where Apple excels and where there is room for improvement. It also includes a selection of participant comments, providing further insight into the specific challenges and opportunities related to Apple’s vision accessibility offerings.

There are lots of complaints about VoiceOver on macOS.


EU Narrowing the Spotify Antitrust Case

Joe Rossignol:

The European Commission today announced it has narrowed its antitrust investigation into Apple’s rules for streaming music apps. In a revised Statement of Objections sent to Apple, the Commission said it will no longer challenge Apple’s requirement for apps to use the App Store’s in-app purchase system for digital goods and services. […] The investigation will now focus entirely on Apple preventing streaming music apps from informing iPhone and iPad users within the app that lower subscription prices are available when signing up outside of the App Store.

John Gruber (Dithering):

I’ve thought all along that most of the EC’s probe against Apple was overreaching (the stuff about opening up IAP in particular), but Apple’s anti-steering provisions are wrong and either already are illegal or should be made illegal.


Wednesday, March 8, 2023

Swift “Certificates” and “ASN.1” Packages

Cory Benfield:

I’m excited to announce two new open source Swift packages: swift-certificates and swift-asn1. Together, these libraries provide developers a faster and safer implementation of X.509 certificates, a critical technology that powers the security of TLS.


Swift ASN.1 provides two major pieces of functionality: an implementation of the common ASN.1 currency types, and an implementation of DER serialization and deserialization. This is sufficient for implementation of the majority of the cryptographic use cases for DER, including for swift-certificates.

Swift ASN.1 provides these security-critical parsing and serializing services using entirely memory-safe code with low overhead.

I’ll probably eventually use this for receipt and license validation.


Medium’s Mastodon Server

Alex Benzer:

A few weeks ago, we announced that Medium is embracing short-form writing by launching our very own Mastodon server at Starting today, we’re opening up access for our member community. If you’re a Medium member, you can create an account on

Via John Gruber:

To my knowledge no company with such resources has started a public Mastodon instance to date. I am very uncomfortable with the fact that nearly all Mastodon servers are free-to-use volunteer efforts, funded by voluntary donations. That’s not sustainable. I suspect a lot of Mastodon servers that seem to be thriving today won’t be around in 5 years, taking all of their posts with them. I don’t feel great about the fact that Medium is venture-backed, either, but they do charge $5/month or $50/year for a membership.

I’ve been using, which is funded by Patreon donations. It seems to be one of the better servers but was down for a while yesterday. I haven’t actually seen Twitter go down recently, but sometimes it’s really slow.


Overhead of Using APFS Encryption

Howard Oakley:

T2 Intel and Apple silicon Macs invariably encrypt the Data volume on their internal SSD; adding the protection of FileVault’s password comes at no cost.

Some external SSDs can use APFS encryption without any reduction in performance at all.

Other external SSDs may show reduced write speed to APFS encrypted volumes, particularly when they are connected via a hub rather than directly.

Currently the only way to tell SSDs apart is to measure their write speeds.

This third point is not what I would have expected.

macOS Network Metrics Using sysctl()

Milen Dzhumerov:

As part of my work on the Buck2 build system, I needed a way to observe the network throughput of the system. After some research, the conclusion was to use sysctl() with NET_RT_IFLIST2: this provided access to 64bit metrics which do not suffer from overflowing that affects the 32bit fields of the older APIs.


If you looked at the traffic metrics, they would only ever increase in multiples of 1KiB. The reason for the behaviour is that the kernel applies batching to prevent malicious code from fingerprinting the system. This restriction applies only to 3rd party programs (i.e., not codesigned by Apple).


Upon further investigation, it became clear that the API truncates and wraps around the traffic metrics at the 4GiB mark. Again, this only affects 3rd party programs.

Update (2023-03-29): Mojo66:

BTW, my currently-in-development Mac app “DerPinger” uses [sysctl()] to fetch 64-bit interface metrics, and does not have problems with 4GB wrapping on 13.2.1.

I’m looking for beta testers.

Tuesday, March 7, 2023

Cracking the Mac Gaming Market

Oliver Mackenzie (in August 2022, via John Voorhees):

Let’s take a look at our gaming benchmarks, calculated via video capture as is the Digital Foundry way.


It’s not a particularly large table because, unfortunately, there aren’t many high-end Mac games that we can actually test, particularly when it comes to big-budget games. But we do have a few titles here - and the results are intriguing.


This is a full-bore Apple Silicon version of Blizzard’s long-running MMO, but despite running natively, the same pattern emerges with the M1 Ultra yet again falling squarely between the two PC systems, falling well short of the 3090 but still delivering performance in line with a high-end PC GPU. The Max is borderline unplayable while the 3080M hovers around 30fps. All of these systems would be perfectly fine with the game at remotely reasonable settings, of course - we are running the game essentially maxed out at a whopping 8K internal resolution to create a proper stress test.


Gaming on Mac has historically been quite problematic and that remains the case right now - native ports are thin on the ground and when older titles such as No Man’s Sky and Resident Evil Village are mooted for conversion, it’s much more of a big deal than it really should be.

Matthew Panzarino:

One arena still holds fascination for any of us who have found a home on the Mac for nearly every part of our digital life — save one: gaming. The M-series Macs are undoubtedly more gaming capable than any previous Mac due to the inclusion of much-improved onboard GPUs across the lineup. But even with big titles popping up on Mac in spurts, there still is a fairly large section of “here there be dragons,” where you would think Apple would like to map in the multi-billion-dollar gaming market.

Borchers says that Apple is feeling like the Apple silicon gaming story is getting more solid release by release.

“With Capcom bringing Resident Evil across, and other titles starting to come along, I think the AAA community is starting to wake up and understand the opportunity,” he says. “Because what we have now, with our portfolio of M-series Macs, is a set of incredibly performant machines and a growing audience of people who have these incredibly performant systems that can all be addressed with a single code base that is developing over time.


Millet says that Apple’s work on cracking the gaming market started with the early days of the Apple silicon transition.

Peter Cohen:

Reading this interview from last month, I was struck by the fact that I’ve heard the same basic line from Apple since they released the blue and white Power Mac G3 in 1999: “Now we have performant gaming hardware.”

The problem isn’t the hardware. The problem is getting an entire industry of developers and publishers on board to support the platform, and consumers to buy them with this purpose in mind. Apple can’t fix this with new game-savvy senior management.

Also, pointing out the amazing GPU performance of the M2 isn’t helpful, because most of us don’t have one. And won’t be goaded to buy one based on how well it plays games that have already been out on PC and console for years. It’s “Field of Dreams”-level magical thinking: Build better silicon and they will come.

Cabel Sasser (Hacker News):

A short story. We once submitted Untitled Goose Game to the Mac App Store. It was rejected by the reviewer because they thought you couldn’t skip the credits. (?!?) We explained that you could skip the credits by holding space. It was then rejected for something else and at that point we just gave up and never bothered to resubmit.

John Gruber:

Untitled Goose Game, of course, is one of the funnest and most original games of the last decade. And Panic is a company that has made a couple of decent Mac apps over the years.

Isaiah Carew:

i think the most damning evidence is that the goose game is on a bunch of other really strict platforms, like Nintendo Switch, and not of the app store.


Update (2023-03-14): Wraithe:

I will say, my primary gaming system for the past 5+ years has been the same Mac.

I play AAA titles, relatively high end FPS, and it’s a MacPro 2012, albeit with upgrades (video cards, SSD drives) so it’s over 10 years old, still doing the work.

Of course (and you knew there was an “of course :)) it’s running Windows.

So, the issue isn’t the hardware….

It’s also been a wonderful reminder of what I don’t like about windows. 😂

Update (2023-04-22): Amaar Chowdhury:

Mac is not a system designed to run games. We’ve already seen that with Hogwarts Legacy, which was too intensive of a game to run on a non-gaming rig. Sons of the Forest will also be facing a similar fate, as the game will definitely be too much for a Mac to handle.

Via Thomas Clement:

Funny that Apple executives are saying the exact opposite. Yet games like Sons of the Forest are not available for macOS. So what's the problem? Inadequate hardware? Improper APIs? Lack of interest from the developers in the platform?

MoneyWell 2023.01

Diligent Robot:

After a lot of dillydallying, we’re very pleased to announce the return of sync to MoneyWell. This is available in MoneyWell 2023.1. To go along with this, we’re releasing MoneyWell Express 2023.1 for iPhone.


We know a subscription will put lots of people off, but we need to make MoneyWell sustainable, and the existing model isn’t.

The syncing seems to use Ensembles/CloudKit. It’s not clear to me what else is new in the version, other than the Big Sur–style icon. The subscription is $49.99/year, the same as the original price I paid for the app back in 2009. There hasn’t been a paid upgrade since MoneyWell 3, which was $25 back in 2015.

They’re also going Mac App Store–only. Eight hours after I received the update e-mail, the app still doesn’t show up at all when searching in the Mac App Store. The direct link works, though.

We have a roadmap for future development on MoneyWell. Our biggest goal is for MoneyWell to return to sustainability so it can be our main, and eventually only, source of income. Currently that isn’t the case, which is one reason why progress is slow.

Over the next 12 months amongst other things we’re planning[…]

I’m not interested in anything on the roadmap, but I still really like the app and will be happy if they can simply maintain the current feature set. Hopefully the subscription and planned features, which seem marketing friendly, will make that possible.

MoneyWell Help:

Because of the way syncing now works, we’ve moved away from a “document” model, where you look after your document and can move it around. The MoneyWell app now manages all of the budgets. This enables multiple budgets to be synced. If you want to make sure your budgets are backed up (and you should) ensure your backup system backs up ~/Library/Containers/com.diligentrobot.MoneyWell/

I can see why they’re doing this, but I’m not thrilled because I don’t use syncing, anyway, and I liked to keep my document file on an encrypted disk image. Undo support has also been removed, since it doesn’t work with the new syncing. The new version seemed to migrate my data correctly except that it reported that some of my smart filters were damaged.


Microsoft Adds Free Outlook Tier

Jeremy Perdue (AppleInsider, MacRumors, Slashdot, Hacker News):

Now consumers can use Outlook for free on macOS, no Microsoft 365 subscription or license necessary.

However, according to the pricing page, you need to pay in order for it to be ad-free. The new version also removes the switch to turn off the “New Outlook” user interface. You can still turn it back off using Terminal to get back features like rules and AppleScript (which are required for SpamSieve and EagleFiler) that have not yet been implemented, however that’s only allowed if you’ve paid for Microsoft 365. Otherwise, it will only run in offline mode. So, although everyone seems to be writing that “Outlook is now free,” I think it’s more accurate to say that there is a new free tier.

Microsoft updated its roadmap on March 1 to state that AppleScript will finally be implemented this month, but I don’t see anything about full rules support.

Whether at home, work or school, Mac users everywhere can easily add, Gmail, iCloud, Yahoo! or IMAP accounts in Outlook and experience the best mail and calendar app on macOS.


With Outlook, you’ll get a modern and native user interface that has been designed and optimized for macOS.


Microsoft plans to continue building and maintaining best-in-class native apps on macOS and iOS. There is no plan to build a web app version of Outlook for Mac.

When key members of the Claris Emailer team went to Microsoft to build Outlook Express and later Entourage, I would say those were best-in-class native Mac apps. The current version of Outlook feels weird to me. It’s not a Web app, but the design feels like a hybrid of mobile, Web, and Office. It doesn’t use a Mac standard toolbar or table view. Many of the buttons look weird. Keyboard navigation is odd. There are some new cloud-based features, but overall I think “New Outlook” removed a lot of the good stuff that was in the previous Outlook, which itself removed some great features that were in Entourage.


How Troubleshooting Has Changed With macOS Security

Howard Oakley:

With the guaranteed integrity of the SSV and cryptexes on IT2 and AS models, reinstalling the same version of macOS has no effect on the great majority of macOS. Similarly, installing an older version and updating it to the current one can only produce exactly the same result as installing the current version directly.

Two procedures might be worth considering, though: replacing the latest version of macOS with an older one, in an attempt to clear new problems, and installing macOS and migrating to it from backups. Both of these can also make problems worse as they rely on migration, which could restore other components responsible for a problem, or those incompatible with the version of macOS being installed.


Just as successfully booting macOS is verification of its integrity, so launching an app without a code signature error verifies the code within that app. That applies to all Macs running Ventura, where replacing a misbehaving app with a fresh copy is likely to be pointless.

Most non-bug problems these days seem to be caused by bad data files or file permissions.

Howard Oakley:

Every time you run an app or other executable code, such as a command tool, those first run checks are now repeated, although not quite in the same depth, and with slightly greater tolerance for minor errors, it appears.


This shows how Apparency reports an app I crafted to check whether macOS had fixed a longstanding vulnerability in signature checking. Code signatures apply to different architectures, including Intel and Apple silicon. For some time, Gatekeeper checks didn’t cover all architectures correctly, a failure which could have been exploited. This crafted version of my app Cormorant contains two conflicting signatures, as recognised by Apparency.


Certificate expiry dates are a little more complicated than you might expect, and depend on the type and purpose of certificate. For ordinary app and other executable signing, a Developer ID Application certificate is used, and remains valid for Gatekeeper even though the certificate has long expired. The crucial date in this case is when the app was signed: so long as the Developer ID Application certificate was valid at that time, then Gatekeeper will accept the certificate many years later.

That isn’t true of certificates used to sign Installer packages, which are a different type, Developer ID Installer.


Monday, March 6, 2023

Rogue Amoeba Historic Screenshot Archive

Paul Kafasis:

20 years ago today, on March 3, 2003, Rogue Amoeba released Audio Hijack Pro 1.0. This was a crucial event in the company’s history, as sales grew a much higher level, taking Rogue Amoeba from a hobby to a viable business.

On this anniversary, it seems fitting for us to unveil something else special: the Rogue Amoeba Historic Screenshot Archive. It’s an in-depth collection of images and information about key versions from our 20+ years in business, and we think it’s well worth a look.

This is really cool.


Update (2023-03-08): Rui Carmo:

Although we blame the web and shitty Electron apps for the recent downturn in overall computer usability, it is sobering to go over these screenshots and notice that the erosion of clarity and usability on the Mac actually started with Apple itself as it progressively sanded down the macOS UI into featureless rounded rectangles laden with ambiguous text that (lacking affordances) might or might not be buttons and drop-downs.

John Gruber:

I really miss UI design that made controls obvious. Clear affordances. All buttons obviously buttons, all text input fields obviously text input fields. Pop-up menus that are obviously pop-up menus (today’s MacOS 13 is chock full of pop-up menus that only reveal themselves as pop-ups when you hover over them). 20 years ago we bent over backwards to make the purpose of every control as obvious as possible; the style today is to make everything look like flat static text.

Depth and texture in UI are good things. Our displays have never been better suited to displaying color and fine detail, but our UI themes today look like they were designed for output on a crummy old laser printer or something.

Update (2023-03-14): Cory Birdsong:

Taking extremely busy UIs and making them cleaner and less obtrusive often ends up in a decent-ish place, but the mistake is not keeping in mind that the goal should be clarity, not indiscriminately stripping out every bit of visual noise.

The shiny aqua style makes the active control here a little hard to read, but when glancing at the new style you might not even notice there's an active control[…]

CoverSutra Open Source

Sophia Teutschler:

The source code for CoverSutra is now available on GitHub.

This was a great app back in the day. So many of these talented indie developers ended up working at Apple.

Via Dave Verwer:

Sophia Teutschler has been open-sourcing her old apps (Tipulator, CoverSutra, and Groceries) recently[…] None of Sophia’s apps is exactly ten years old, but they’re certainly of that era, and it struck me how much things have changed as I browsed the repositories.

It’s got Objective-C properties with manual reference counting, NS_DURING, Cocoa bindings, Scripting Bridge, and “delicious” interface design.


Samra 1.1

Serena (tweet):

There are a few existing asset catalog viewer applications for macOS, however, none felt feature complete, Samra offers the following:

  • Browse through the Asset Catalog file
  • Show all types of objects (renditions) in it, not just images (colors, pdfs, image sets, etc)
  • Ability to edit icons/images & colors
  • Search in Asset Catalog for renditions by name
  • View detailed information about each rendition, such as lookup name, width, height, appearance (if it’s meant for dark mode or light mode) and other type-specific information (ie, RGB values for colors).

It’s open-source, with downloads available here.


iOS Announcements and Offers

Adam Chandler:

150% of my iPhone 14 Pro Max’s screen on the App Store’s Today screen is occupied by advertisements that aren’t relevant to my interests. Apple’s services team is ruining the experience.

Mario Guzman:

Ugh. I got hit by two Apple ads this morning. What the f is this shit?

First, some Apple Store ad for Valentines Day.

Then I open Music to get my day going and this is what I get immediately. An ad for the Super Bowl Halftime Show. 😒

When did Apple get so freakin’ spammy?!

Mario Guzman:

Turn off Apple Store Spam notifications by going to Account > Settings > Notifications and switching off “Announcements and Offers”

Mario Guzman:

Earlier I posted about shutting off Spam Notifications from Apple via the Apple Store app.

Well, apparently it’s worse. If you shut it off, you get this little reminder (that won’t go away unless you re-enable the spam notifications). This is so fucking user hostile.

Christina Warren:

These sorts of ads in the Apple TV app are so obnoxious.

The worst part is this is literally when you launch the app. Don’t do this shit! This is a bad, dark pattern! Apple doesn’t get to claim moral high ground when it does stuff like this!


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

I love how the Music app keeps asking me to choose an Apple Music plan despite having an Apple One membership — and the highest tier at that. 😒 This is the fourth time I get this view today.

Update (2023-06-01): Mario Guzman:

Apple doesn’t respect your choices OR this is just another bug…

With my new Beats, Settings app now advertises AppleCare+. But even if I decline by saying “Not Now” and then “Don’t Show Again”, it’ll bring it up in a couple days.

This is the third time I’ve done this.

Update (2023-07-06): Adam Chandler:

I never searched for Apple Arcade, nor do I have it installed on my iPhone.

This is an advertisement.

Update (2023-07-26): Daniel Jalkut:

Pretty sure Apple News just abused the social contract for their top stories notifications. If they weren’t involved in Lionel Messi’s soccer career in the US, I don’t think his debut would have warranted a wrist notification.

Update (2023-08-18): Thomas Clement:

But seriously, one notification every two weeks. Is there an off switch somewhere?

Friday, March 3, 2023

Brave Search Summarizer

Brave (via MacRumors):

The Summarizer provides concise and to-the-point answers at the top of Brave Search results pages, in response to the user’s input, solely based on Web search results. Unlike a purely generative AI model, which is prone to spout unsubstantiated assertions, we trained our large language models (LLMs) to process multiple sources of information present on the Web. This produces a more concise, accurate answer, expressed in coherent language.

In addition, the provenance of original sources of data is cited at all times via links. This maintains the rightful attribution of information, and helps users assess the trustworthiness of the sources, both of which are needed to mitigate the authority biases of large language models.


OpenAI Is Today Unrecognizable

Chloe Xiang (via Hacker News)::

This blog post and OpenAI’s recent actions—all happening at the peak of the ChatGPT hype cycle—is a reminder of how much OpenAI’s tone and mission have changed from its founding, when it was exclusively a nonprofit. While the firm has always looked toward a future where AGI exists, it was founded on commitments including not seeking profits and even freely sharing code it develops, which today are nowhere to be seen.

OpenAI was founded in 2015 as a nonprofit research organization by Altman, Elon Musk, Peter Thiel, and LinkedIn cofounder Reid Hoffman, among other tech leaders. In its founding statement, the company declared its commitment to research “to advance digital intelligence in the way that is most likely to benefit humanity as a whole, unconstrained by a need to generate financial return.” The blog stated that “since our research is free from financial obligations, we can better focus on a positive human impact,” and that all researchers would be encouraged to share “papers, blog posts, or code, and our patents (if any) will be shared with the world.”


By March 2019, OpenAI shed its non-profit status and set up a “capped profit” sector, in which the company could now receive investments and would provide investors with profit capped at 100 times their investment. The company’s decision was likely a result of its desire to compete with Big Tech rivals like Google and ended up receiving a $1 billion investment shortly after from Microsoft.


Update (2023-03-16): James Vincent:

Yesterday, OpenAI announced GPT-4, its long-awaited next-generation AI language model. The system’s capabilities are still being assessed, but as researchers and experts pore over its accompanying materials, many have expressed disappointment at one particular feature: that despite the name of its parent company, GPT-4 is not an open AI model.


“I think we can call it shut on ‘Open’ AI: the 98 page paper introducing GPT-4 proudly declares that they’re disclosing nothing about the contents of their training set,” tweeted Ben Schmidt, VP of information design at Nomic AI, in a thread on the topic.


Update (2023-03-24): Rohan Goswami (via Hacker News):

Altman didn’t take an equity stake in the company when it added the for-profit OpenAI LP entity in 2019, Semafor reported Friday.

Linode Price Increases

Shawn Michels (Hacker News):

The price of Shared and Dedicated compute plans will increase by 20%. Our shared Nanode plan remains unchanged at US$5 per month.

Additional IPv4 IP addresses will increase from US$1 to US$2 per month. IPv6 addresses remain free.


Akamai faces the same macroeconomic headwinds of growing costs for data center space, energy, and hardware as other providers. We resisted making any changes to our offerings for as long as we could.


The message being sent to customers claims that they “remain more aggressively priced than our peer providers”, which is nonsense as far as I can tell—unless they now consider their “peer providers” to be the likes of AWS, Azure, and GCP?


What is really weird about this, they are now more expensive than comparable systems on AWS Lightsail.

Marco Arment:

Deleted my earlier post about packet loss to Linode — that may be a regional Verizon thing closer to me, so I can’t blame them for it.

The price hike still has me looking around and making a contingency plan, though.


I’m not as concerned about the price increases as I am about Akamai just completely changing what Linode is, which I feel is inevitably underway. Very frustrating since I just moved to Linode last year after finally getting fed up with Digital Ocean’s laissez-faire attitude turning their network into a spam factory. Up to now I’ve been really happy with Linode.




Use this property wrapper on view controller properties that can be nil before the view controller’s view loads. Wrapping view controller properties this way eliminates crashes that can occur from implicitly defining properties as Optional, and then referencing them before the view controller finishes loading.


Use this property wrapper over implicitly unwrapped optionals for IBOutlets as well.

This is introduced in the Xcode 14.3 beta but requires macOS 13.3 (still in beta) for deployment. So it will be a long time before many developers can use this, but it seems like the sort of thing you could reimplement yourself.

There are also NSWindowController.WindowLoading and UIViewController.ViewLoading.


Update (2023-04-22): Daniel Jalkut:

MagicLoading is a reference implementation of a @ViewLoading-style property wrapper.


The magic in Apple’s wrappers is an under-documented but widely used alternative mechanism for property wrappers: the ability to define getters and setters with knowledge of the containing object’s type, and access to the specific instance. The “subscript” variant of property wrappers is described in the original proposal, but has never been publicly endorsed, as far as I know, by Apple or the Swift team.

Usually I would shy away from undocumented features, but in this situation I believe it’s safe to use the undocumented subscript functionality because doing so only instructs the compiler to generate wrapper code that is compiled into the resulting binary. In other words: there are no private runtime dependencies that are being assumed by opting into this more sophisticated form of property wrapper.

So it shouldn’t count as private API for the App Store. I guess the main danger is that future versions of the compiler could remove support for this feature. Hopefully they will instead replace it with an official feature that’s more ergonomic.

Thursday, March 2, 2023

Outlook Syncing With Microsoft Cloud

Beatrix Willius:

According to the German computer magazine Heise Outlook is now using “Microsoft Synch Technology” without asking the user.

When you create a new account, there’s a checkbox to opt out, but the Heise article implies that existing accounts are automatically opted in and you have to delete and recreate them to opt out:

A reader pointed out to us that the previously established direct retrieval of an IMAP account with him now also takes detours via Azure. [Apple translation]

This seems really bad to do without consent, but perhaps the reader is mistaken or it’s a bad translation.

Yesterday, when I tried adding a Gmail account, the Sync with Microsoft Cloud option was present but pre-checked.

But today, when I did the same thing, the wizard did not offer me the option. It briefly showed some text saying that “for a better experience” it was going to sync with Microsoft, but before I could take a screenshot it switched to the next page. The configured Gmail account did not show any indication that Microsoft sync was in use.

I then tried adding an IMAP account, and the Sync with Microsoft Cloud option was not presented at all. I don’t understand why Outlook seems to be behaving inconsistently.


Syncing your account to the Microsoft Cloud means that a copy of your email, calendar, and contacts will be synchronized between your email provider and Microsoft data centers. Having your mailbox data in the Microsoft Cloud lets you use the new features of the Outlook client (Outlook for iOS, Outlook for Android,, or Outlook for Mac) with your non-Microsoft account, just like with your Microsoft accounts.


The ability to sync to the Microsoft Cloud is available to new Outlook for Mac users who are on build 16.15.18070902 and higher and have an active Microsoft 365 subscription.

Yeah, I don’t want that.


Tweetbot and Twitterrific Subscription Cliff

John Gruber (tweet, MacRumors, Hacker News):

Twitter’s kneecapping of third-party clients didn’t just mean that their future revenue was gone — it meant revenue they’d already collected from App Store subscriptions would need to go back to customers in the form of prorated refunds for the remaining months on each and every user’s annual subscriptions. Consider the gut punch of losing your job — you stop earning income. It’s brutal. Now imagine that the way it worked when you get fired or laid off is that you’re also suddenly on the hook to pay back the last, say, 6 months of your income. That’s where Tapbots and The Iconfactory are.


This week, both Tapbots and The Iconfactory released updates in the iOS App Store to Tweetbot and Twitterrific — not to restore any functionality, but to deal with the grim meathook reality of these paid-for subscriptions rendered useless by Phony Stark’s imperious shitheadedness. Both apps, upon launch, now simply display a single screen describing what has happened, and offer options to users with existing subscriptions.


Tweetbot offers users three choices. The first is an option to transfer your existing Tweetbot subscription to Ivory, Tapbots’s magnificent (and magnificently Tweetbot-like) new Mastodon client. […] Twitterrific offers two choices: the same do-nothing-and-get-a-prorated-refund-from-us option, and a clear “I Don’t Need a Refund” button with this heartfelt description[…]

Perhaps because I haven’t developed a subscription product, I’m really confused about what’s happening here. The idea that some customers would want a prorated refund since the apps no longer work makes sense. And most businesses aren’t prepared to deal with a large number of refunds, on top of no longer being able to sell their product. But I have questions about the details:


Update (2023-03-03): Bryan Jones:

Stripe will absolutely withdraw funds from your bank account to fill a refund or credit card dispute—I’ve had it happen. I’d expect Apple to do the same. (Unclear what happens if that withdrawal bounces due to lack of funds, though.)

Arrested Development Leaving Netflix Soon

Selome Hailu:

All episodes of “Arrested Development” are set to leave Netflix on March 15 — including Seasons 4 and 5, which Netflix produced itself.


Netflix co-produced Seasons 4 and 5 with 20th Television and Imagine Entertainment, and the licensing deal that allowed the streamer to host those seasons is now expiring.

Pete Volk:

The first three seasons of Arrested Development are also on Hulu, and there has been no indication they will be removed from that platform. Hulu adding the last two seasons to their platform once they’re removed from Netflix would sure make a lot of sense, but no announcement has been made.

Christina Warren:

[The] only way I’ll be able to be a completionist and get the 5th season and the season 4 remix is to pirate it off of sketchy sources? Like, just sell it to me, Netflix/Fox. Just sell me a box set.

This has been my biggest fear with streaming-only shows and it’s why I still buy stuff on Blu-ray and iTunes. Because I’ve never trusted these fuckers to let me be a digital hoarder.

They already removed the original cut of Season 4 when they made the remix version. Even for streaming shows that remain available, the music is often different.


Thought the same as I believed “Oh, they wouldn’t remove things that they’ve made” Well, was wrong there with HBO. Westworld and Raised by Wolves gone and I hadn’t started season 2 of Wolves yet, now I can’t.

Apple’s original shows and movies are not available for purchase on iTunes, and I can’t imagine them ever being on Blu-ray.


Update (2023-03-28): Christina Warren:

Netflix reupped the Arrested Development contract! There’s always money in the banana stand.

Update (2023-08-31): Dare Obasanjo:

Disney is joining Warner Bros in removing shows from streaming for the cost savings (tax write off + no residuals). Just like in the case of the Batgirl movie, the Spiderwick Chronicles has been completed but will never be aired.

Orwell and Dahl on Kindle

Annalee Newitz (in 2009):

Thousands of people last week discovered that Amazon had quietly removed electronic copies of George Orwell’s 1984 from their Kindle e-book readers. In the process, Amazon revealed how easy censorship will be in the Kindle age.

In this case, the mass e-book removals were motivated by copyright . A company called MobileReference, who did not own the copyrights to the books 1984 and Animal Farm, uploaded both books to the Kindle store and started selling them. When the rights owner heard about this, they contacted Amazon and asked that the e-books be removed. And Amazon decided to erase them not just from the store, but from all the Kindles where they’d been downloaded.


Apparently, until last week, Amazon claimed it wouldn’t take back purchased books[…]

John Timmer:

The company has since apologized to its users and promised that it will never happen again, but those steps aren’t enough for some. A lawsuit has been filed in Seattle that seeks class action status for Kindle owners and Orwell readers, alleging that Amazon has done everything from committing computer fraud to eating a high school student’s homework.

One of the plaintiffs, Justin Gawronski, has a compelling story about his experience with Amazon’s memory hole. Apparently, he was reading his copy of 1984 as a summer assignment for school, and had been using one of the Kindle’s selling points—the ability to attach notes to specific parts of the e-book text—to prepare for his return to school. Since he was actively reading the work when Amazon pulled the plug, he actually got to watch the work vanish from his screen. He’s left with a file of notes that are divorced from the text that they reference.

Carolyn Kellogg:

Amazon has agreed to pay $150,000 in a lawsuit filed by Justin Gawronski, who sued the online retailer after George Orwell’s novels ‘1984’ and ‘Animal Farm’ were deleted from his Kindle, along with his homework. The money, after going to the law firm representing the teen, will be donated to charity. Gawronski had already been compensated for the loss -- with a $30 gift certificate.

• • •

Ben Ellery and James Beal (via Josh Centers, Hacker News, 3, 4):

Owners of Roald Dahl ebooks are having their libraries automatically updated with the new censored versions containing hundreds of changes to language related to weight, mental health, violence, gender and race.


Yesterday Puffin, the children’s division of Penguin Random House, announced it would publish additional classic editions of the stories with the original texts.


It said the books will be available alongside the sanitised versions “offering readers the choice to decide how they experience Roald Dahl’s magical, marvellous stories.”

But it’s not really a choice if they push updates to the version that you already bought, also potentially breaking existing annotations.


Wednesday, March 1, 2023

SwiftUI Views Versus Modifiers

John Sundell:

So, regardless of whether we want to change the styles or structure of a view, or introduce a new piece of state, it’s starting to become clear that SwiftUI views and modifiers have the exact same capabilities. But that brings us to the next question — if there are no practical differences between the two approaches, how do we choose between them?

At least to me, it all comes down to the structure of the resulting view hierarchy.


Looking at the view-based call site above, it’s very clear that our two texts are being wrapped within a container, and it’s also easy to tell which of those two texts will end up being the leading versus trailing view.

That same thing can’t really be said for the modifier-based version this time, though, which really requires us to know that the view that we’re applying the modifier to will end up in the leading slot. Plus, we can’t really tell that those two texts will end up being wrapped in some kind of container at all. It looks more like we’re styling the leading label using the trailing label somehow, which really isn’t the case.

iMessage on Windows via Microsoft’s Phone Link

Chance Miller (Hacker News):

As reported by The Verge, the Phone Link app for Windows is meant to mirror your phone on your PC for things like notifications, phone calls, and messages. The app has historically only supported Android devices, but that’s changing today with the addition of iPhone support.

The new version of Phone Link for Windows uses Bluetooth to link a user’s iPhone to their Windows PC. It then “passes commands and messages” to the Messages app on that paired iPhone. This means you can send and receive all iPhone messages — text messages and iMessages — through the Phone Link app on your PC.


[You] can’t see the full message history in conversations via the Phone Link app. Instead, you’ll only see messages that “have been sent or received using Phone Link.”

It doesn’t support images or group messages, either. I guess this is similar to the limited iMessage support that CarPlay and Fitbit have.

I wish there were an actual iMessage API so that third parties could work around the bugs and limiations of Apple’s Messages app.


I got access to the updated version of Phone Link on my PC today, and this integration is pretty wild and it actually works, albeit with several limitations.

Microsoft today announced it is beginning to roll out iPhone support to the Phone Link app on Windows 11. In a blog post, the company said this functionality will be available to all Windows 11 users around the world by mid-May.

Microsoft today announced it has completed its rollout of iPhone support for its Phone Link app on Windows 11, as spotted by The Verge.

Blocking Adobe’s Acquisition of Figma

Leah Nylen et al. (Hacker News):

The Justice Department is preparing an antitrust lawsuit seeking to block Adobe Inc.’s $20 billion acquisition of startup Figma Inc., people familiar with the matter said.


The deal also faces an antitrust review in the European Union after the bloc’s antitrust watchdog said it had received requests from national regulators to look into the deal. The UK Competition and Markets Authority is reviewing the merger as well, and the three jurisdictions often coordinate on their investigations.

The antitrust division, which has taken a more aggressive approach to mergers under President Joe Biden, is concerned the deal — one of the largest takeovers of a private software maker — would reduce options for design software used by creative professionals.

Paul Kunert (Hacker News):

Adobe told us it expects the sale to stand up.


GraphicConverter 12

Lemke Software (product page):

With the new Metadata Juggler dialog you can effortlessly combine several editing steps, save them and open them again at any time, just as you already know from the actions. Your advantage: You can, for example, delete parts of the metadata such as exposure time and aperture in one editing step and copy the contents of an IPTC field into another field, etc.


you can now automatically crop people and objects and insert them into another image, for example.


lines, circles and rectangles can now be created as vector objects, optionally with a shadow. Save your image in GraphicConverter format /gcimgd) to be able to change the vector objects later.


Our new dialog makes quick conversions even easier. Drag your images onto the dialog and sit back. GraphicConverter does the conversion and performs an action at the same time if you wish.


If you have only changed the IPTC/XMP metadata, you can now save these changes without resaving the entire file. This way you avoid unnecessary quality losses with formats like the JPG or the HEIC format.

It’s $39.95 or $25.95 to upgrade.