Wednesday, April 16, 2025
Bombich Software:
For Sonoma and Sequoia users, CCC now offers an option to set a custom icon on locally-attached source and destination volumes. Select an image of your own, or get creative with Apple’s new Image Playground.
I’ve been doing this manually (dragging into Finder’s Get Info window), and I find that it really helps to have different icon colors and badges to quickly tell which drive is which.
This version of CCC embraces new macOS functionality that allows us to avoid installing the CCC helper tool into Macintosh HD > Library > PrivilegedHelperTools. The helper tool will be "registered" with macOS, but will remain inside of the CCC application bundle. This new practice resolves a long list of complications that have arisen over the years with the legacy LaunchDaemon configuration as Apple has improved macOS platform security.
I’m guessing this uses SMAppService.
The Snapshot Comparison Browser search field now supports wildcard and regular expression searches.
The biggest backup problem I’ve been seeing lately—and I don’t think it’s really CCC’s fault—is that it’s sometimes unable to automatically prune old APFS snapshots, so the destination volume ends up full, and the backup fails. CCC usually does a better job than Disk Utility at showing the snapshots, though in some cases neither is able to delete them. Disk Utility recommends restarting the Mac, which is a really pain but does sometimes help. It’s unclear to me what causes the problem and why ejecting and remounting the drive isn’t enough. I wonder if there’s some sort of APFS issue because oftentimes the oldest bunch of snapshots show zero for the size, and deleting them doesn’t seem to free up any space. Is this because CCC had started deleting them but was only partially successful? (I would have thought this would be atomic.) Or because they lost data?
And sometimes the snapshots seem to be totally undetectable or even unviewable, with Disk Utility on Sequoia reporting permissions errors if I try to repair the drive. I tried another Sequoia Mac with no luck. A Mac with an older version of macOS made more progress with two of the drives damaged in this way, successfully scanning the snapshots that Sequoia had not been able to see, but ultimately it found errors that it couldn’t fix. With the old snapshots inaccessible, anyway, I ended up reformatting the drives. I never had these types of problems before, so I wonder whether Sequoia somehow damaged these drives or whether it’s just bad luck.
Spotlight will now be disabled on the destination by default when selecting the option to use a destination volume exclusively for the CCC task in the Backup Volume Setup Assistant. Users can also select a volume in the sidebar and disable (or re-enable) Spotlight via a switch. This change will hopefully address the interference that Spotlight and its mediaanalysisd buddy are causing with regard to unmounting CCC destination volumes.
Yay! I find Spotlight useless with backup drives. It seems to slow things down at best or sometimes cause worse problems like not being able to eject the drive, which also seems to be a new issue with Sequoia.
Previously:
Apple File System (APFS) Backup Carbon Copy Cloner Icons launchd Mac Mac App macOS 15 Sequoia Spotlight Storage
Peter Mommsen:
Around the globe, governments are increasingly committed to making the right to repair the law of the land. India’s Ministry of Consumer Affairs is developing a set of rules requiring manufacturers of electronics, farm equipment, and automobiles to let people fix products themselves. France requires tech manufacturers to register their products with a national “repairability index.” And in the United States, the Federal Trade Commission has announced that it will crack down on repair restrictions.
Whatever the merits of these specific policy measures, they are responding to a growing sense that a consumer economy based on pushing people to discard the old and buy the new is no longer sustainable. Yet in an age in which smartphone models go out of date within months and many clothes are worn once or twice before being binned, the champions of repair face powerful obstacles. After all, obsolescence of consumer goods has been a cornerstone of the growth of developed economies for a century.
Hanan Zaffar and Danish Pandit (Hacker News):
Across India, in metro markets from Delhi’s Nehru Place to Mumbai’s Lamington Road, technicians like Prasad are repurposing broken and outdated laptops that many see as junk. These “Frankenstein” machines — hybrids of salvaged parts from multiple brands — are sold to students, gig workers, and small businesses, offering a lifeline to those priced out of India’s growing digital economy.
“We take usable components from different older or discarded systems to create a new functioning unit. For instance, we salvage parts from old laptop motherboards, such as capacitors, mouse pads, transistors, diodes, and certain ICs and use them in the newly refurbished ones,” says Prasad.
[…]
“A college student or a freelancer can get a good machine for INR 10,000 [about $110 USD] instead of spending INR 70,000 [about $800 USD] on a brand-new one. For many, that difference means being able to work or study at all.”
[…]
The Indian government has started discussions on right-to-repair laws, inspired by similar efforts in the European Union and the United States. However, progress remains slow, and repair shops continue to operate in legal limbo, often forced to source different parts from informal and e-waste markets.
Environment Hardware India Legal Unauthorized Repair
Jason Koebler:
Right to repair legislation has now been introduced in all 50 states, a milestone that, despite not all passing, shows the power of the grassroots political movement. Thursday, Wisconsin became the final state in the country to introduce a right to repair bill.
So far, right to repair laws have been passed in Massachusetts, New York, Minnesota, Colorado, California, and Oregon. Another 20 states are formally considering right to repair bills during this current legislative session. The rest have previously introduced bills that have not passed; so far we have seen that many states take several years to move a given right to repair bill through the legislative process.
Karl Bode:
And in some instances the bills have been watered down post-passage, like in New York, where Governor Kathy Hochul buckled to company lobbying to make the law much weaker while also exempting many of the most problematic industries.
Elsewhere, state governments just aren’t really enforcing the laws so far despite no shortage of corporate violators. Reformers can correct me if I’m wrong, but I’ve yet to see a meaningful enforcement action against a major company in any of the states that have passed such legislation.
Previously:
Hardware iOS Legal Mac Unauthorized Repair
Tuesday, April 15, 2025
Fabien Perigaud (tweet):
This time, we will dynamically resolve and use strcmp()
.
[…]
Instead of a nice log indicating that the two strings are not the same, our application crashed...
[…]
What just happened? Why is the pointer incorrectly signed? Why do I have a kernel pointer in PC
?
[…]
A XPACI
instruction is clearly missing here, we can see the return value (X0
) from the BLRAAZ
being directly converted to an offset by the SUB
instruction. In iOS 18.3.2, the XPACI
instruction is present.
[…]
Repeated tests showed that in contrast to the specification, the
pointer was considered as a kernel one (during a signature operation) if the bit 63 is set!
Previously:
Assembly Language Bug dyld iOS iOS 18 Programming
Howard Oakley:
What happens with an Apple silicon VM is a bit more complicated, and harder to observe. This time the virtualisation app should create the disk image inside the VM bundle as a sparse file to begin with, then copy into that what’s needed for the VM, so skipping the first mount stage and Trimming during the second mount.
The result is the same, though, with a 350 GB VM taking just 22 GB on disk. Inspect that disk image using my free utility Precize, and you’ll see that economy confirmed, and the Sparse File flag set.
He has a summary of the requirements for “plain read-write disk images and those inside VMs to be sparse files.”
Previously:
Apple File System (APFS) Disk Image Mac macOS 15 Sequoia Virtualization
Taylor Blau:
Exactly twenty years ago, on April 7, 2005, Linus Torvalds made the very first commit to a new version control system called Git. Torvalds famously wrote Git in just 10 days after Linux kernel developers lost access to their proprietary tool, BitKeeper, due to licensing disagreements. In fact, in that first commit, he’d written enough of Git to use Git to make the commit!
Git’s unconventional and decentralized design—nowadays ubiquitous and seemingly obvious—was revolutionary at the time, and reshaped how software teams collaborate and develop. (To wit, GitHub!)
To celebrate two decades of Git, we sat down with Linus himself to revisit those early days, explore the key design decisions behind Git’s lasting success, and discuss how it forever changed software development.
At this point, I’ve now used Git for much longer than any previous version control system (Projector, RCS, CVS, VOODOO, Subversion). It’s worked really well. There are certainly valid complaints to be made about the command-line interface, but these days 99% of my interaction with Git is through Tower, anyway.
Scott Chacon (via Christina Warren, Hacker News):
I started using Git for something you might not imagine it was intended for, only a few months after it’s first commit. I then went on to cofound GitHub, write arguably the most widely read book on Git, build the official website of the project, start the annual developer conference, etc - this little project has changed the world of software development, but more personally, it has massively changed the course of my life.
I thought it would be fun today, as the Git project rolls into it’s third decade, to remember the earliest days of Git and explain a bit why I find this project so endlessly fascinating.
Patrick Steinhardt:
To mark the 20th anniversary of this important project that is nowadays used by almost every single developer, I interviewed Linus about the history of Git, why he handed over maintainership of Git, and what he considers to be its most important milestones.
Irreal:
There’s an argument to made that BitKeeper is the better solution and McVoy has made that argument in the past but BitKeeper was proprietary software in an age when developers pretty much insisted on open source tools. McVoy, to his credit, has accepted this and is devoting his time to fishing.
Whether or not Git is the best solution it has emerged as the default solution and that, I think, is a good thing. It’s definitely a good VCS and having a standardized VCS benefits us all. I have no doubt that its distributed nature is the correct answer and 20 years of Git and BitKeeper before it has proven that to be the case.
Previously:
Anniversary BitKeeper CVS Git Git Tower History Mac Mac App Macintosh Programmer’s Workshop (MPW) Programming Subversion Version Control VOODOO
Monday, April 14, 2025
Yuxi Liu (via Hacker News):
The legendary Cyc project, Douglas Lenat’s 40-year quest to build artificial general intelligence by scaling symbolic logic, has failed. Based on extensive archival research, this essay brings to light its secret history so that it may be widely known.
[…]
In 1984, he launched Cyc to manually encode millions of facts and rules about common sense, predicting that once this “knowledge pump” was primed, the system would begin true machine learning by reading natural language texts and conducting autonomous scientific experiments. Cyc grew to contain approximately 30 million assertions at a cost of $200 million and 2,000 person-years. Yet despite Lenat’s repeated predictions of imminent breakthrough, it never came.
[…]
Cycorp achieved long-term financial stability that is uncommon for a small technology company, but all known commercial uses of its system involve standard methods in expert systems, data integration, and information retrieval, functionally the same as similar services offered by established corporations like Oracle and IBM. No evidence suggests that Cyc’s purported higher intelligence provided any competitive advantage.
Previously:
Artificial Intelligence History Sunset
Alberto Romero (via Hacker News):
I’d been holding off on writing about Gemini 2.5. Focusing on the AI model didn’t feel like enough to tell the full story of Google’s comeback. Gemini 2.5 is only a piece—albeit a big one—of something much larger. Back in December 2024, I said they would come out on top by the end of 2025. We’re not even halfway there and it’s already happened.
[…]
Perhaps most importantly, the benchmark scores match the signal I receive from vibes checks, high-taste testers, and firsthand testimonials: people are reporting en masse that Gemini 2.5 Pro is indeed the best model today. A rare sight to witness. (Watch Matthew Berman’s clip below.)
And that's just pure performance. Add to the above that Gemini 2.5, compared to models of its category, is fast and cheap—I mean, they're giving away free access!—has a gigantic context window of 1 million tokens (only recently surpassed by Meta’s Llama 4) and it’s connected to the entire Google suite of products (more on that soon).
Previously:
Artificial Intelligence Google Google Gemini/Bard
Jordan Novet (2024, via Hacker News):
OpenAI co-founder John Schulman said in a Monday X post that he would leave the Microsoft-backed company and join Anthropic, an artificial intelligence startup with funding from Amazon.
The move comes less than three months after OpenAI disbanded a superalignment team that focused on trying to ensure that people can control AI systems that exceed human capability at many tasks.
Emma Roth:
Claude, the AI chatbot made by Anthropic, now has a desktop app. You can download the Mac and Windows versions of the app from Anthropic’s website for free.
Last week, Anthropic released its “computer use” feature in public beta, which allows the Claude 3.5 Sonnet model to control a computer by looking at a screen, moving the cursor, clicking buttons, and entering text. This capability isn’t available within the app, however.
Sebastiaan de With:
Big miss from Anthropic releasing a super clunky macOS electron app that feels like a bad wrapper of their website. Very weird non-standard UI all over, choppy and sloppy animations.
OpenAI is really leagues ahead in making good apps (+ has ChatGPT Search rolling out today)
Via John Gruber (Mastodon):
There’s much talk that Anthropic’s Claude 3.5 has pulled ahead of OpenAI’s ChatGPT 4o in terms of chatbot “intelligence”, but as an overall experience ChatGPT wins hands-down. For one thing ChatGPT has been able to search the web for answers for a while now, and it works great. For another, just today OpenAI launched ChatGPT’s dedicated “search” mode. Claude has nothing like it.
[…]
ChatGPT’s native Mac app, on the other hand, is a truly native Mac app. It looks like a Mac app and feels like a Mac app because it really is a Mac app.
Previously:
Anthropic Artificial Intelligence ChatGPT Electron Mac Mac App macOS 15 Sequoia OpenAI
Kylie Robison (via Hacker News, Slashdot):
Over the weekend, Meta dropped two new Llama 4 models: a smaller model named Scout, and Maverick, a mid-size model that the company claims can beat GPT-4o and Gemini 2.0 Flash “across a broad range of widely reported benchmarks.”
[…]
The achievement seemed to position Meta’s open-weight Llama 4 as a serious challenger to the state-of-the-art, closed models from OpenAI, Anthropic, and Google. Then, AI researchers digging through Meta’s documentation discovered something unusual.
In fine print, Meta acknowledges that the version of Maverick tested on LMArena isn’t the same as what’s available to the public. According to Meta’s own materials, it deployed an “experimental chat version” of Maverick to LMArena that was specifically “optimized for conversationality,” TechCrunch first reported.
First Google demo shenanigans, then Apple, and now Meta.
Previously:
Artificial Intelligence LLaMA Meta
Friday, April 11, 2025
I thought I was out of the woods in setting up new Apple Silicon test macOS systems, after finally working around a Sequoia bug to get old versions of macOS to install on an external drive. Then Apple released the first beta for macOS 15.5, and I found that I couldn’t update to it.
After I agreed to the license and entered my password for software update, it would fail saying, “User interaction required. An error occurred while installing the selected updates.” I’ve had lots of problems with the Software Update pane of System Settings in recent years, but the command-line tool had always worked. So I tried sudo softwareupdate -irR
, but that also kept failing, saying: “Failed to authenticate.”
This seems to have been caused by a problem with the LocalPolicy. I was aware that ownership is an issue with Apple Silicon Macs, but it had never really caused problems for me before. I would just enter the requested information for a prior account when installing macOS, and it seemed to all just work, albeit with some annoying extra steps.
This external Sequoia drive that I was trying to update to macOS 15.5 had been originally created using a different Apple Silicon Mac, so in retrospect it makes sense that the owner information wouldn’t be right for the Mac where I was trying to do the update. But this never occurred to me because the Mac was able to boot from the drive just fine. Apparently, the owner account is not necessary for booting but is necessary for updating.
A visible symptom of ownership problems seems to be that the Mac won’t auto-boot from the drive. It will either boot from the internal drive or take you to the startup manager. I didn’t notice this because I had been intentionally switching back and forth between different boot drives, always holding down the power key and selecting the drive using the startup manager.
I happened to boot into macOS Recovery and look in the Startup Security Utility, and I saw that it did not have access to change the security policy for the external drive. In order to do that, it said I had to set the drive as the startup disk. This kind of didn’t make sense because don’t the security options get set when booted from Recovery?
Anyway, I went to the Apple menu and chose Startup Disk and clicked on the external drive. Then I went back to Startup Security Utility and nothing seemed to have changed. OK, maybe I have to restart and it will use the Recovery from the newly selected startup disk? So I did that but ended up in the same place. It was still acting as though the external drive wasn’t the startup disk, even though I had selected it.
Maybe the startup disk will stick if I click the Restart button that’s in the Startup Disk window? That turned out to be the key. When I clicked the button, it showed this error:
This volume does not have any authorized users for this computer.
The selected system does not have any users that are authorized to administer this computer. You can continue to try to set the startup disk but some features such as software updates will not be functional. If you know the password of one or more users on this system you may authorize the users by clicking on
“Authorize Users…”
I don’t know why software update couldn’t tell me this or why there is seemingly no direct GUI command to view or edit the authorized users. But restarting from within Startup Disk is apparently the way to get macOS to offer to fix the LocalPolicy. Once I added the user, I was able to do a normal boot from the external drive and software update normally.
Previously:
Mac macOS 15 Sequoia macOS Recovery Security Software Update Startup Disk Startup Security Utility Storage
Howard Oakley:
App extensions, appexes, have become plentiful and widely used by macOS and third-party software, yet discovering and controlling them is patchy and limited. The most coherent access is in System Settings > General > Login Items & Extensions, where some are gathered in the list of Extensions at the end. Others like Safari extensions are controlled in app settings, while most remain hidden out of sight.
To take stock of all these appexes, I turned to the pluginkit
command tool, but the lists it generates are seemingly ordered at random, and so extensive that it would require some serious scripting to make any sense. Instead, it’s easier and more effective to put together a little app to do that. So I present you with AppexIndexer, an exploratory utility that displays key information about all appexes recognised by macOS.
Previously:
AppexIndexer Extensions Mac Mac App macOS 15 Sequoia
Atilla (via Chris Turner, Reddit):
A Bauhaus-inspired clock screensaver for Mac, designed to be present even when you’re not.
Watch precision meets digital aesthetics, enhancing your workspace even when you’re away.
$19 for lifetime upgrades.
Previously:
Mac Mac App macOS 15 Sequoia Screensaver Time
Jen Simmons:
Support for text-wrap: pretty
just shipped in Safari Technology Preview, bringing an unprecedented level of polish to typography on the web.
[…]
Now, the web has the ability to evaluate the whole passage of text when figuring out where best to wrap. You can ask browsers to do this by using text-wrap: pretty
. WebKit is not the first browser engine to implement, but we are the first browser to use it to evaluate and adjust the entire paragraph. And we are the first browser to use it to improve rag. We chose to take a more comprehensive approach in our implementation because we want you to be able to use this CSS to make your text easier to read and softer on the eyes, to provide your users with better readability and accessibility.
[…]
While support for pretty
shipped in Chrome 117, Edge 177, and Opera 103 in Fall 2023, and Samsung Internet 24 in 2024, the Chromium version is more limited in what it accomplishes. According to an article by the Chrome team, Chromium only makes adjustments to the last four lines of a paragraph. It’s focused on preventing short last lines. It also adjusts hyphenation if consecutive hyphenated lines appear at the end of a paragraph.
[…]
Perf concerns emerge as the pretty
algorithm takes more and more lines into consideration as it calculates what to do. In WebKit-based browsers or apps, your text element would need to be many hundreds or thousands of lines long to see a performance hit — and that kind of content is unusual on the web. If your content is broken up into typical-length paragraphs, then you have no reason to worry.
[…]
Basically, the text-wrap: balance
rule tells the browser to wrap in such places to make every line be about the same length as the others. I think of it like folding a piece of paper into halves, or thirds, or quarters.
Stephanie Stimac (via ktguru):
With text-wrap: balance;
, because there’s a limit to how many lines the browser will wrap, this should only be used on headlines, headings, and subheadings. Applying it to large paragraphs will have no effect and comes at a performance cost because the browser is trying to calculate optimal balance even though it won’t apply anything.
John Gruber (Mastodon):
I have mixed feelings about the results. Here are saved PDFs showing the rendering of my “How Many New iPhones Can Fit on a Freight Plane?” article from earlier today: first with traditional text-wrap: auto
line wrapping, and second with WebKit’s new text-wrap: pretty
in STP 216. Looking at each paragraph by itself, there’s no question this new layout algorithm is, well, prettier. The problem I see is going from one paragraph to another. Within a paragraph, WebKit’s new pretty
wrapping definitely makes lines a more uniform width. But in some cases it so narrows an entire paragraph that it makes going from one paragraph to the next jarring. Line-to-line the new algorithm looks better, but paragraph-to-paragraph I think it looks worse.
CSS iOS iOS 18 Mac macOS 15 Sequoia Safari Typography WebKit
Thursday, April 10, 2025
Tomáš Kafka:
So, this is the first time I am filling a bug report against a whole WWDC talk asking for its retraction for misleading info and describing unimplemented features.
It’s the “Efficiency awaits: Background tasks in SwiftUI”.
Well, they did say that it “awaits.”
The talk describes .backgroundTask(.urlSession("...")) {}
modifier, and leaves its body empty - because there is no valid code that could work there. This part seems to be entirely unimplemented, probably planned to be finished for WWDC 22, but never completed even 3 years later.
If you google the code, you will find many developers having spent hours and days trying to implement the solution from this talk, only to end up in dead end.
More details are in this forum post.
I recently wasted time on a similar issue, trying to get Core Data’s indexed:by:
function to work. It’s supposed to be the equivalent of this. I wasn’t able to find the function in the documentation, but I had notes on it from WWDC 2017 Session 210, where it was displayed on a slide and also live-demoed. This wouldn’t be the first time the documentation was missing. But in this case it looks like the implementation is also missing, i.e. that the function was pulled after the demo. I don’t know why—it seems like a straightforward feature that they already had working. (Perhaps a hint that it was in flux is that the order of the function’s arguments are backwards in the slide vs. in the demo code.)
Previously:
Core Data iOS iOS 18 Mac macOS 15 Sequoia Programming Swift Concurrency SwiftUI WWDC
Wayne Ma (article):
Apple’s decision to delay new AI features in Siri came after years of dysfunction and clashes between the AI/ML and software engineering groups. Many blame Siri’s poor leadership for its slow progress.
Hartley Charlton:
Apple apparently weighed up multiple options for the backend of Apple Intelligence. One initial idea was to build both small and large language models, dubbed “Mini Mouse” and “Mighty Mouse,” to run locally on iPhones and in the cloud, respectively. Siri’s leadership then decided to go in a different direction and build a single large language model to handle all requests via the cloud, before a series of further technical pivots. The indecision and repeated changes in direction reportedly frustrated engineers and prompted some members of staff to leave Apple.
[…]
Apple’s AI/ML group has been dubbed “AIMLess” internally, while employees are said to refer to Siri as a “hot potato” that is continually passed between different teams with no significant improvements. There were also conflicts about higher pay, faster promotions, longer vacations, and shorter days for colleagues in the AI group.
Apple AI chief John Giannandrea was apparently confident he could fix Siri with the right training data and better web-scraping for answers to general knowledge questions. Senior leaders didn’t respond with a sense of urgency to the debut of ChatGPT in 2022; Giannandrea told employees that he didn’t believe chatbots like ChatGPT added much value for users.
[…]
The report claims that the demo of Apple Intelligence’s most impressive features at WWDC 2024, such as where Siri accesses a user’s emails to find real-time flight data and provides a reminder about lunch plans using messages and plots a route in maps, was effectively fictitious. The demo apparently came as a surprise to members of the Siri team, who had never seen working versions of the capabilities.
Ryan Christoffel:
It’s pretty shocking that Siri’s new design was, per this report at least, the only new feature that was ready for testing within Apple last June.
I’m still surprised that they shipped the new UI with the old Siri, thus confusing people and also missing their chance to get people to give the improved version a fresh look.
Also, Ma closes with a fascinating tidbit: Federighi has reportedly already changed one big AI policy for its work on Siri.
Whereas Apple engineers previously had been directed to build features only using internal models, now using open-source third-party models has been given the green light.
Previously:
Update (2025-04-11): John Gruber:
What Ma describes is a scenario where Walker missed the fact that the whole forest sucked and didn’t work, while focusing on one or two nice trees.
[…]
I’m not even sure eliminating the requirement to use the verbal “hey” prefix was a win at all. It’s purely anecdotal and personal, but I think I get more unwanted invocations now than I did when “Hey Siri” was the required prompt.
Same here.
Hundreds of engineers for a machine learning team outside Apple’s AI/ML division sounds like the definition of dysfunction.
Federico Viticci:
My read of this part is that Federighi might have instructed his team to use distillation to better train Apple’s in-house models as a way to accelerate the development of the delayed Siri features and put them back on the company’s roadmap. Given Tim Cook’s public appreciation for DeepSeek and this morning’s New York Times report that the delayed features may come this fall, I wouldn’t be shocked to learn that Federighi told Siri’s ML team to distill DeepSeek R1’s reasoning knowledge into a new variant of their ∼3 billion parameter foundation model that runs on-device. Doing that wouldn’t mean that iOS 19’s Apple Intelligence would be “powered by DeepSeek”; it would just be a faster way for Apple to catch up without throwing away the foundational model they unveiled last year (which, supposedly, had a ~30% error rate).
Tim Hardwick:
Apple’s current struggles with Apple Intelligence and Siri began in early 2023 when AI head John Giannandrea sought approval from CEO Tim Cook to purchase more AI chips for development, according to a new report from The New York Times.
Cook initially approved doubling the team’s chip budget, but CFO Luca Maestri reportedly reduced the increase to less than half that amount, and instead encouraged the team to make existing chips more efficient.
The lack of adequate GPU resources meant Apple’s AI team had to negotiate for computing power from providers like Google and Amazon.
At the time, Apple’s data centers had about 50,000 GPUs that were more than five years old – far fewer than the hundreds of thousands of chips being purchased by competitors like Microsoft, Google, and Meta.
M.G Siegler:
Honestly, reading these reports, even if just some of the details are as bad as they sound, it’s hard to see how Giannandrea and Walker can stay at Apple. Again, it’s undoubtedly not as cut and dry as it may seem on paper, with Mickle getting intel that Giannandrea had long ago asked for the ability to buy up more GPUs to get their AI work done, only to have it blocked by CFO Luca Maestri – someone who is, incidentally, no longer in that role.
[…]
But really, this all speaks to what is clearly a larger issue: a lot of this falls – or should fall – on Tim Cook.
There’s just no sugarcoating it. He’s the CEO. The buck literally stops with him – if the CFO overrides him on the GPU request, he should veto that, as he apparently had already signed off. If the CFO changed his mind, okay, but why? Just cost? That would indicate a colossal misreading of the situation.
Stephen Hackett:
For a company that says it doesn’t like looking back at its own history, very often, Apple makes decisions like it’s the late 1990s and the company is on the verge of failure.
Only for core technologies like Macs, high-end processors, QA, and Siri. When it’s the car or Vision Pro or Apple TV+ the sky’s the limit.
Apple Apple Intelligence Artificial Intelligence Craig Federighi iOS iOS 18 Mac macOS 15 Sequoia Siri Tim Cook
Joe Rosensteel:
Thinking back to Apple’s statement to John Gruber boasting about Siri product knowledge, and Gruber rightfully pointing out on Mastodon that product knowledge isn’t very accurate, or helpful. I figured this was a time where I should at least try to use it. I already knew there was a support document, so it should at least send me to that.
That is what product knowledge is, after all, it’s a thing that displays part of the Apple Support document. It’s only display one thing, but it’ll do it with absolute certainty. A deep-link to the Tips app will take you right to the documentation, but you can’t share the document from the Tips app even though it also exists online at Apple’s own website. Also, for some reason, there are differences between Tips and the web, like the part about the Files app is in the web version of the document, but absent from Tips even in the latest iOS 18.3.2. If you’re looking up something on behalf of someone else and plan to send instructions to them it’s better to do that from the web, using a real search engine.
[…]
If I typed “How to scan and email a document?” it gave me some abbreviated, generic instructions from the world famous scannmore.com to open any email app, and add an attachment. This is quite useless because it isn’t relevant.
[…]
This isn’t LLM-AI-AGI-GPT-Multi-Modal stuff. This isn’t trillions in funding and melting a glacier. It’s the kind of logic you’d use in a search engine where relevance comes into play. This doesn’t require years of research into a new field of study. Typing this in the blank address bar of a web browser is the level of technological advancement that outpaces Siri. Siri can’t be this picky about syntax when no one else is.
Previously:
Apple Intelligence Files.app iOS iOS 18 Siri Tips.app
Wednesday, April 9, 2025
Awkward_One_9772:
MacOS 15.4 (Sequoia) cannot send email, but it receives email eMail. Using 3 different accounts in apple email it fails for all three. […] When I click “send” on an email created in apple mail or as a draft in apple mail, apple eMail nothing happens, just the airplane send icon grays out, also Time-to-cancel does not appear in the apple mail’s bottom left column either.
pajako:
I can open the mail.app; type and e-mail and hit ‘send’
The send-button turns gray and no email is been send.
[…]
It gets even weirder: I saw a reply somewhere about trying to send an e-mail with an attachment; after I tried to attach a file to an e-mail it works again. Not flawless but I can send emails again…
One of my customers also encountered this bug, where the Send button turns gray and seemingly the only option is to close the draft, discarding changes. He found that the problem was triggered by the Settings ‣ Composing ‣ Check spelling ‣ When I Click Send option, which is supposed to bring up the Spelling and Grammar panel, but didn’t. I have always used As I Type. When I changed it to When I Click Send, the first message worked normally, bringing up the panel and then sending the message when I closed it, but the second message didn’t show the panel and got into the reported disabled state.
Previously:
Apple Mail Bug E-mail Mac macOS 15 Sequoia Spelling
Ibrahim Diallo (via Hacker News):
A few years ago, a lone programmer named t0st did something extraordinary: he fixed an 8-year-old bug in GTA Online that had been driving players crazy. The bug? Painfully long load times, sometimes up to 20 minutes. While the single-player mode loaded in seconds. His solution was elegant: a 13-line code tweak that cut load times by 70%. Rockstar Games, the studio behind GTA, rewarded him with a $10,000 bounty and patched the game. Problem solved, right?
Not quite.
The internet erupted with criticism. How could a billion-dollar company miss something so obvious? Were their developers incompetent? As someone who’s worked in tech, I can tell you the answer isn’t that simple. The real story here isn’t about lazy developers or technical incompetence. It’s about how even the simplest fixes get lost in the labyrinth of corporate priorities.
I think these kinds of bugs do drive customers away, but did it really happen if you can’t measure it? I wish Tim Cook would not think about the “bloody ROI” regarding software quality, too. Apple had the back of the cabinet mentality as a young company, but now that it has F.U. money it chooses not to care. Shouldn’t it be the other way around? Conversely, there are some small companies who will dig into any issue that you report, even though it may turn out to be a bug that doesn’t affect anyone else. (At bigco scale, odds are that it does.) Not only is this great because it directly solves my problem, but I also know that I’m dealing with craftspeople and that if they treat others the same way the product is probably solid in ways I couldn’t imagine.
Tim:
There’s some software from a big company that I have to use for a project (not my choice), and it drives me crazy how buggy it is. The same company is running ads for internet service in my city. Given my experience with the software, there is zero chance I’d ever consider them as my ISP. I know it’s not the same team, but they give off a corporate aura of not caring. Even if I knew for certain that the internet service would be perfect, I can’t in good faith reward them with money for their software apathy.
The best companies realize that the best advertising is a quality product, the easiest customers to sell to are their existing customers, and happy customers are their own free advertising team. All the buggy software I see today is causing me to have absolutely no loyalty to any of these companies. It is unbelievably shortsighted for them not to see this.
Previously:
Apple Apple Software Quality Bug Business Craft Game iOS Mac Programming Working
Matthew Bickham (Hacker News):
Once upon a time, developing for Apple was an exciting, rewarding challenge. Apple built world-class hardware and software, and developers created incredible apps that made those devices indispensable. It was a win-win. But in 2025, that relationship has soured.
[…]
Sure, they’ll pay lip service to developers. But as in any relationship, don’t listen to the loving words of the perpetrator, instead observe their hurtful actions. Apple has continually created an environment and policies, along with nurturing a culture, that is detrimental and harmful to developers.
[…]
Developing for Apple isn’t just about writing great code — it’s about navigating a bureaucratic obstacle course filled with red tape, secret handshakes, and hidden pitfalls.
[…]
Now from experience, I know there is a limit on the number of rules that can be loaded. This isn’t documented anywhere. You are just meant to know the limit. […] Unfortunately – and what isn’t documented anywhere – is that although you can load that many rules, you are unlikely to actually be able to do so. There is also a hard, undocumented, memory limit on the extension process that loads the rules. A memory limit that kills the extension and means the app doesn’t work if it’s exceeded. A memory limit that isn’t documented, isn’t defined and isn’t known until you spend weeks trying to determine why your app is not working. An undocumented memory limit that is also different across iOS and macOS.
He also talks about the annual release cycle and API churn. There are certainly other prioritization and management issues, e.g. with Radar, documentation, and the elevation of “security” over all else, but so many problems come down to the schedule. Apple is trying to do too much too quickly. Major changes are snuck in months after the beta cycle began. Remember when “beta” used to mean that it was feature-complete and had already been extensively tested internally? And, of course, they ship stuff that’s immature (doesn’t work, has bugs or obvious design flaws, isn’t documented, etc.).
In theory, the release interval is arbitrary and not determinative: an annual schedule could be fine if the releases were smaller. But this is not what Apple has been doing. And, recently, they’ve made it worse by announcing stuff that they know won’t ship in the 0.0 release. This is spun as clever planning to deliver new delights throughout the year. But it seems more like a cope for squeezing more into the major release than they should. And the reality is that it means introducing whole new APIs and breakage in the 0.4 release. We no longer get a stable version before the next cycle begins.
The outward manifestation of all this is reduced quality. What’s less seen is that this bad process ultimately wastes time for everyone involved. If Apple ships something with known issues or issues that could have been caught internally, that generates work for external developers. They have to test and file bugs and develop workarounds because there’s no longer an expectation that bugs will be fixed before release to customers. Apple then has to process these bug reports, which it clearly doesn’t have time to do before shipping. As a bug gets out to more people, customers encounter it, which wastes their time and generates more support load and bug reporting for developers and more bug reports and AppleCare calls for Apple. So much of this could have been eliminated by catching problems earlier in the process. But, hey, technically they did hit the schedule.
Ironically, Apple does understand this at the micro level. They continue to make improvements to Xcode’s automated testing support. And Swift is all about catching problems early. Before you get to runtime testing, let’s block you from even compiling code with these potential errors. Let’s restrict what you can do in the interest of being able to prove to the compiler that it’s correct. And if a bug does make it through testing and to a user’s device, fail fast. Yet at the macro level, Apple’s software strategy seems to be the opposite. Ship first, catch later, move fast and break things, just fix it in post (or not).
Scott:
Just had a thought: given rumored iPhone 17 designs which are—quite simply—not all that compelling, that the M4 has made it Mac-wide (excepting the Mac Pro), and the tariff situation, now would be a PERFECT TIME for Apple to announce a 1 year ‘pause’ (of sorts) on OSes, ‘SNOW’!
[…]
Could announce at WWDC that they’re extending development on i|PadOS 18 and macOS 15 another 12 months; squashing bugs, solidifying features, not dropping any additional Intel Macs or iPhones, and eventually, finally, really bringing promised Apple Intelligence/Siri features.
Previously:
App Store Apple Software Quality Documentation iOS iOS 18 Mac macOS 15 Sequoia Magic Lasso Adblock Programming Radar and Feedback Assistant Safari Extensions
Ian Hickson (2023, via Hacker News):
I feel very lucky to have experienced the early post-IPO Google; unlike most companies, and contrary to the popular narrative, Googlers, from the junior engineer all the way to the C-suite, were genuinely good people who cared very much about doing the right thing. The oft-mocked “don’t be evil“ truly was the guiding principle of the company at the time (largely a reaction to contemporaries like Microsoft whose operating procedures put profits far above the best interests of customers and humanity as a whole).
[…]
Early Google was also an excellent place to work. Executives gave frank answers on a weekly basis, or were candid about their inability to do so (e.g. for legal reasons or because some topic was too sensitive to discuss broadly). Eric Schmidt regularly walked the whole company through the discussions of the board. The successes and failures of various products were presented more or less objectively, with successes celebrated and failures examined critically with an eye to learning lessons rather than assigning blame. The company had a vision, and deviations from that vision were explained. Having experienced Dilbert-level management during my internship at Netscape five years earlier, the uniform competence of people at Google was very refreshing.
[…]
Flutter grew in a bubble, largely insulated from the changes Google was experiencing at the same time. Google’s culture eroded. Decisions went from being made for the benefit of users, to the benefit of Google, to the benefit of whoever was making the decision. Transparency evaporated. Where previously I would eagerly attend every company-wide meeting to learn what was happening, I found myself now able to predict the answers executives would give word for word. Today, I don’t know anyone at Google who could explain what Google’s vision is. Morale is at an all-time low. If you talk to therapists in the bay area, they will tell you all their Google clients are unhappy with Google.
Then Google had layoffs. The layoffs were an unforced error driven by a short-sighted drive to ensure the stock price would keep growing quarter-to-quarter, instead of following Google’s erstwhile strategy of prioritising long-term success even if that led to short-term losses (the very essence of “don’t be evil”).
Ben Collins-Sussman (2005, via Hacker News):
I sent this email to my wife and friends as I was wrapping up my first week of “noogler” orientation at Google’s headquarters in 2005. It’s a bit of a glimpse into Silicon Valley at the start of its peak ‘creative culture’ era.
Ben Collins-Sussman (2024, via Hacker News, Dan Luu):
When I was laid off from Google, I knew I’d be deluged with questions. I wrote this FAQ to share with friends and family, to prevent repeated explanation. But my other goal was to help so many of my co-workers process and understand the repeated waves of mass layoffs.
Collins-Sussman was a co-founder of both the Subversion project and Google’s Chicago office.
Ben Collins-Sussman (Hacker News):
Google is still a great place to work -- far better than most companies -- and still doing amazing things. My goal here is to call out a unique, beautiful thing that happened… put it out into the universe, with the hope that it can come back again someday, somewhere.
[…]
And so, when priorities would change, Google did not fire people,
but rather moved them carefully between projects. The unstated
cultural principle was: “products come and go, but we worked so hard
to get our employees… so we should preserve them at all costs. They
are our most precious resource.” And so a tremendous amount of energy
was put into high-touch resettlement of each employee into new
projects. They were generalists. We knew they’d thrive, and that
Google would continue to make use of their talent in new ways.
But things change. In my first month at Google, I remember a
co-worker whispering to me, “the day Google revenue stops growing
without bound, is also the day all of this will change.” The change
was very gradual for a long time -- but then things accelerated during
the pandemic. Revenue began to slow, and now, coming out of the
pandemic, we’re seeing waves of layoffs. Yes, we knew things would
change, but we didn’t expect it would accelerate this quickly, in
the span of just a couple of years. The academic founders are gone,
much of the C-suite is now former Wall Street execs; combine that with
revenue flattening toward a stable horizontal asymptote, and the
obvious, expected thing happens: the company suddenly moves from a
”culture of infinite abundance” to a standard “culture of limited
resources.” It’s a predictable regression toward becoming a ‘normal’
company.
Tim Bray (Hacker News, John Gruber):
On March 15, 2010, I
started a new job at Google. The fourteen years since that day feel like
a century.
The title of my announcement
was Now A No-Evil Zone and, OK, I can hear the laughing from ten timezones away. I tried, then, to be restrained,
but there are hardly words to describe how happy and excited I was. I had escaped from the accretion disk the former Sun
Microsystems was forming around Oracle, that blackest of holes. And Google, in 2010, was the coolest place in the world to
work.
[…]
This is in my mind these days as I’m on a retired-Googlers mailing list where the current round of layoffs is under
discussion and, well, it really seems like the joy has well and truly departed the Googleplex.
[…]
For my money, that was the center of Google’s problem. Larry and Sergey were smart guys who recognized they didn’t know shit
about corporateness and quickly got into a pattern of hiring and empowering psychotic pricks who were presumably “good at
business”. Not gonna talk about some of the things I saw because these
people are wealthy and litigious.
[…]
And now, in Anno Domini 2024, Google has lost its edge in search. There are plenty of things it can’t find. There are compelling alternatives. To me this feels like a big inflection point, because around the stumbling feet of the Big Tech dinosaurs, the Web’s mammals, agile and flexible, still scurry. They exhibit creative energy and strongly-flavored voices, and those voices still sometimes find and reinforce each other without being sock puppets of shareholder-value-focused private empires.
Previously:
Business Google Google Search Layoffs Programming Working
Tuesday, April 8, 2025
Chris McGee:
Today we’re delighted to introduce the first stable release of swiftly, a Swift version manager that takes the pain out of installing, managing and updating your Swift toolchain.
The latest version of Swift is bundled with Xcode for writing apps for Apple platforms. But perhaps you want to install Swift on a different platform like Linux, or use a different version of the toolchain for building services or command line tools. Downloading, extracting and installing a trusted build of Swift along with the relevant dependencies for your operating system can require quite a few manual and error-prone steps.
swiftly has been around for some years as a community-supported tool for Swift developers using Linux. With this release, we’re officially supporting it as part of the core Swift toolchain, including hosting it as part of the Swift GitHub organization. We’ve also added macOS support to make it easier to install Swift separately from Xcode.
Previously:
Compiler Developer Tool Linux Mac macOS 15 Sequoia Open Source Programming Swift Programming Language Xcode
Florian Albrecht:
[The ksdiff
] command (called ksp
in earlier versions) captures the output from any LLDB command and sends it to Kaleidoscope. Key features include:
- Designed for repeated use to compare debugger output over time
- Automatically groups related calls into a single Kaleidoscope window
- Separates output from different debug targets into distinct windows
[The kspo
] command offers enhanced visualization capabilities:
- It attempts to produce an object description similar to LLDB’s
po
command - For supported classes, it generates visual representations instead of just text
[…]
Rather than manually stopping execution and typing commands, you can set up breakpoints with automatic ksdiff
or kspo
actions.
This approach enables automated logging at specific execution points without interrupting your debug flow. Combined with automatic continuation, this technique dramatically streamlines debugging of complex behaviors by capturing state at critical moments without manual intervention.
Previously:
Debugging Developer Tool Kaleidoscope LLDB Mac Mac App macOS 15 Sequoia Programming Xcode
Dave DeLong:
In the past 24 hours I’ve heard of four different developers who have been entirely locked out of their Apple Developer accounts for seemingly no reason whatsoever, with no help from support and no apparent way to escalate.
No idea what’s going on, but this for sure does not seem good.
Janie Larson:
Last year I had my developer account labeled as inactive in spite of it being paid at the time. It wouldn’t give me the option to reactivate it because it was paid in full. I eventually just let it lapse and now I don’t publish anything on Apple platforms. 😅
Jonathan Gerlach:
I’m a developer who was locked out of my developer account, btw. I can’t log in or reset my password.
Stefan Arentz:
It happened to me last year. After a bunch of one way communication it was suddenly restored. No explanation.
Previously:
Update (2025-04-10): Dave DeLong:
I’m happy to report that everyone I’ve heard about has managed to regain access to their accounts. Kudos to the folks in WWDR who helped them through the hoops to make that happen. 👏
And shame on whatever caused this to happen on the first place.
Apple Developer Account Apple ID iOS Mac Programming
Cory Dransfeldt (via Paweł Grzybek, Hacker News):
They range from mediocre to outright unusable and none of them are reliable. I’ve written about Apple Music. That one launched and cost me a phone battery. Duplicate tracks, halting playback and heat.
[…]
I used iCloud Mail for a bit, configured rules, deleted the rules and — well — the rules kept on executing. Nothing in the UI, no user control and filter filter filter. I contacted support and they asked me to restart macOS’ Mail.app before asking me for a screenshot of the phantom rule firing.
[…]
Can’t sync bookmarks, can sync passwords. The last time I tried this and changed an email address on an entry, I got an extra entry with the new email.
[…]
[iCloud Drive] works until it doesn’t and when it doesn’t it locks your entire machine up. Slowly. How do you write the file system, the file system browser and the sync service and have the sync service freeze the whole damn thing? Not slow down, make it completely unusable.
He’s had a good experience with iMessage. I still find that it sometimes doesn’t deliver messages. Syncing and search mostly don’t work.
Previously:
App Store Apple Music Apple Services E-mail iCloud iCloud Drive iCloud Keychain iOS iOS 18 Mac macOS 15 Sequoia Reminders Safari Siri Syncing
Monday, April 7, 2025
Tim Hardwick:
In Apple’s iOS 18.4 software update, there’s a new Ambient Music feature available in the Control Center options on iPhone. It’s free to use, and does not require an Apple Music subscription. It’s also more customizable than most users probably realize.
This is accessed via Control Center and seems to be iOS-only, unlike the similar Background Sounds feature that still exists for iOS and Mac under Accessibility.
Previously:
Audio iOS iOS 18 Mac macOS 15 Sequoia Music
Joe Rossignol:
Apple today updated its iWork apps Keynote, Numbers, and Pages with new features that require iOS 18.4, iPadOS 18.4, or macOS 15.4.
For example, in the latest version of each app, you can now make text edits using Writing Tools directly in a presentation, spreadsheet, or document.
[…]
Each app also received a few other enhancements that are not tied to the latest software updates.
Reddit:
Perform complex calculations with over 30 new functions. For example, you can use a LAMBDA function to create and name custom functions, the SORT function to organize the contents of a range or array, or the LET function to perform calculations using defined variables. See the Formula and Functions user guide.
There’s a whole family of higher order functions: LAMBDA, LAMBDA.APPLY, BYCOL, BYROW, MAP, REDUCE, and SCAN (via Hacker News).
This is cool, but I’ve never really gotten into using Numbers, despite repeatedly trying. There are definitely some things that it does better than Excel, but others, like tables not expanding to fill the window, still feel weird to me after all these years. Anything with interactive collaboration I do with Google Sheets. Anything with manual collaboration I do with Excel. Any time I need to keep important records for a long time, I feel more comfortable with the Excel file format. Same with large data sets. That doesn’t leave much for Numbers, and I haven’t found anything that hooked me.
Previously:
Update (2025-04-08): Tom Harrington:
Apple Numbers is making a strong push for the most useless, incomprehensible error message of the year. It might as well say “Stuff might or might not be different, good luck finding the differences (if any)”
Dan Moren:
I get that maybe most people don’t get as excited about an update to Apple’s spreadsheets app, but I am, frankly, a Numbers enthusiast.
[…]
Fortunately, the addition of the FILTER function solves this problem by letting me simply ignore months that haven’t happened yet, and instead just run my calculations on the subset of applicable values. I was not only able to create a median measurement I never have to update, but I could also remove that hidden month field and replace the AVERAGEIF function with a simpler filtered version too. All of that saves time and means less manual tweaking of the sheet.
[…]
It’s true that Numbers still doesn’t let you include a link to a file, even though it has long had a HYPERLINK function that can make text into a clickable link.[…] However, it occurred to me that I could use a URL scheme to run a shortcut. And surely I could create a shortcut that could simply open a specific file?
While I didn’t, strictly speaking, need any of Numbers’s new powers to do this, the LET function ended up being a timesaver, since it let me avoid having to do lengthy operations either in a separate, hidden field, or repeated within in a single cell.
Update (2025-04-09): Dan Moren:
Fortunately reader Neil came to the rescue: using the Internet Archive’s Wayback machine, he retrieved an older version of Apple’s list of functions and compared it to the new version, thus isolating all the new functions.
I don’t know why Apple couldn’t just document which functions are new, but great work from Neil.
Apple Intelligence Documentation iOS iOS 18 iOS App Mac Mac App macOS 15 Sequoia Numbers.app Programming Spreadsheet
Bruce Schneier (March 31, Hacker News):
“I didn’t see this loser in the group,” Waltz told Fox News about Atlantic editor in chief Jeffrey Goldberg, whom Waltz invited to the chat. “Whether he did it deliberately or it happened in some other technical mean, is something we’re trying to figure out.”
Waltz’s implication that Goldberg may have hacked his way in was followed by a report from CBS News that the US National Security Agency (NSA) had sent out a bulletin to its employees last month warning them about a security “vulnerability” identified in Signal.
The truth, however, is much more interesting. If Signal has vulnerabilities, then China, Russia, and other US adversaries suddenly have a new incentive to discover them. At the same time, the NSA urgently needs to find and fix any vulnerabilities quickly as it can—and similarly, ensure that commercial smartphones are free of backdoors—access points that allow people other than a smartphone’s user to bypass the usual security authentication methods to access the device’s contents.
There’s a debate over whether the information shared constituted “war plans” and whether it was technically classified. But putting that aside, there are some interesting privacy and design questions here. Did they use Signal simply because it’s more convenient than the official government system? Because they didn’t trust the government system? Because they wanted to evade record-keeping requirements?
Did Waltz add Goldberg by mistake, e.g. picking the wrong name in auto-complete, in which case maybe there was someone intended to be in the chat who never actually got added? Did he add Goldberg on purpose, to sabotage, without knowing it would be traced back to him? If, as he insists, he never met or communicated with Goldberg, how did the number get into his phone? Can they really figure out whether Waltz did it and where the phone number came from?
It has always seemed to me that the privacy danger with systems like Signal and iMessage is not that someone would be able to decrypt the messages but that there would be a vulnerability that allows covert participants to be injected into the conversation, i.e. become part of the E2EE group. But if there is such a vulnerability in Signal, it’s hard to see why an adversary country or rogue elements within the NSA would want to waste it in this manner. It’s got to just be a mistake.
I was thinking about how this might have worked differently with iMessage. Would iOS ever look up Goldberg’s name or address or would he only show up as a phone number for participants who didn’t have him in their contacts?
The main issue with iMessage is that I don’t trust the device added to your account notifications. I get these all the time, and they’re seemingly unrelated to when I’m actually logging into iMessage or updating a device that uses it. Even assuming that there’s no way to add a device to an iMessage account without triggering this alert, device names can be spoofed and I don’t see how I would be able to detect if someone removed a device that I don’t frequently use and added a fake device with the same name. Without checking the serial number (which itself could perhaps be spoofed) or checking that the original device was still logged in, how do you know that the listed devices are what they claim to be? And how many people even check the device list every time this notification pops up?
Hugo Lowell (April 6, via Hacker News):
According to three people briefed on the internal investigation, Goldberg had emailed the campaign about a story that criticized Trump for his attitude towards wounded service members. To push back against the story, the campaign enlisted the help of Waltz, their national security surrogate.
Goldberg’s email was forwarded to then Trump spokesperson Brian Hughes, who then copied and pasted the content of the email – including the signature block with Goldberg’s phone number – into a text message that he sent to Waltz, so that he could be briefed on the forthcoming story.
Waltz did not ultimately call Goldberg, the people said, but in an extraordinary twist, inadvertently ended up saving Goldberg’s number in his iPhone – under the contact card for Hughes, now the spokesperson for the national security council.
[…]
According to the White House, the number was erroneously saved during a “contact suggestion update” by Waltz’s iPhone, which one person described as the function where an iPhone algorithm adds a previously unknown number to an existing contact that it detects may be related.
This seems plausible, though it’s unclear to me how they were able to track down this history with any certainty. I don’t think we can discount the possibility that Waltz really did know Goldberg. But the data detectors explanation does have the advantage of explaining both how Golberg’s number got into his phone and how he inadvertently added Goldberg to the conversation without realizing his mistake. His phone, I guess, would have shown Hughes’ name in the conversation.
Previously:
Update (2025-04-08): CM Harrington:
I still find the data detectors idea implausible. You can try and recreate that scenario, and it won’t work (admittedly, in my limited single test).
Also, how does signal do the rectifying between phone number and internal contacts (ie, in the app, not the initial contacts.app dump). If it doesn’t do any server lookup, it should still have Hughes’ name in the chat list. If it does server verification matching, you would see that immediately.
It doesn’t add up.
Nick Heer:
Presumably, this is related to Siri suggestions. This version of events sounds plausible to me, if a little too perfect, but stranger things have happened.
The distrustful and cynical voice deep inside me wants to think Waltz has been a source or contact for Goldberg, and that this is a neat way to keep that secret. There is no evidence for this.
Jason Snell:
I’ve seen a lot of people doubt this report and suggest that Waltz was secretly leaking stuff to Goldberg and that’s why he was in his iPhone to be added to the Signal chat, but the explanation that it was an unthinking “tap yes to add” tap that led to a ticking time bomb in Waltz’s contacts file rings true to me.
Adam Maxwell:
As a Mac user since the ’90s, it pretty sad that the explanation for this as a data detector failure is immediately believable to me, whereas it would have been part of a Switcher commercial in the early 00s.
Artificial Intelligence Contacts Design iMessage iOS iOS 18 iOS App National Security Agency (NSA) Privacy Signal
Friday, April 4, 2025
Riley Testut:
Some personal news: this month marks 10 years since I first started developing Delta!
So much has changed since then — when Delta launched it didn’t even support DS! — but I couldn’t be more thankful to still be working on it after all this time 💜
The first commit includes the obligatory .gitignore for .DS_Store.
Tim Hardwick:
The popular iOS game emulator Delta has received a major update that adds online multiplayer functionality for Nintendo DS games. Version 1.7 of the app now allows players to compete against each other in classic DS titles like Mario Kart DS, Bomberman, and Animal Crossing.
Nintendo officially shut down the original DS online services back in 2014, so Delta relies on alternative Nintendo Wi-Fi Connection servers maintained by the community.
Previously:
Anniversary Delta Emulator Game iOS iOS 18 iOS App Nintendo 3DS
Zelle (via Slashdot):
When Zelle first launched, we also created a standalone Zelle-branded app for consumers whose banks or credit unions had not yet joined the network. With the strong growth of adoption by banks and credit unions, we now see just ~2% of transactions on the standalone app.
As a result of our growth, and because most people are now using Zelle in their financial institution’s mobile app or website, we are making a change to the Zelle standalone app.
This all makes sense, I suppose. I never even knew that Zelle had an app; I just use it through my bank’s app. But I find it amusing that they won’t directly say they’re shutting down the app.
- “We’re evolving how consumers send money with Zelle®”
- “we are making a change to our Zelle standalone app”
- “we will be phasing out the ability to enroll and transact within the standalone app”
So then what can you still do with it? It’s being repurposed to display “consumer education about scams and fraud and provide a list of the more than 2,200 banks and credit unions that offer Zelle.”
Financial iOS iOS 18 iOS App Payments Sunset
Microsoft (via Will Dormann, Hacker News):
We’re removing the bypassnro.cmd script from the build to enhance security and user experience of Windows 11. This change ensures that all users exit setup with internet connectivity and a Microsoft Account.
Lawrence Abrams:
A previously unknown trick lets you easily bypass using a Microsoft Account in Windows 11, just as Microsoft tries to make it harder to use local accounts.
[…]
When installing Windows 11 and you reach the screen asking, “Let’s connect you to a network,” you can use the Shift+F10 keyboard combination to open a Windows command prompt.
At this prompt, type start ms-cxh:localonly
and press Enter on your keyboard to open a “Microsoft account” window where you can create a new local user for the Windows 11 install.
During my recent adventure reinstalling old versions of macOS, I found that it’s now commonly recommended that Mac users have an Internet connection when installing, even if they’ve made a full installer disk. Otherwise it may not succeed. I also found that, even when using a freshly downloaded .pkg of the latest version (of that cycle), the installer would often download what seemed like gigabytes of files. I have little confidence that Mac users still have control over reinstalling archived versions of the OS onto their own hardware without Apple’s verification/meddling. This seems to also be the case when restoring an IPSW file.
Previously:
Mac macOS 15 Sequoia Windows Windows 11
Howard Oakley:
Unlike Intel Macs (including those with T2 chips), all Apple silicon Macs always start their boot process from their internal SSD, even when they are set to start up from a bootable external disk. This ensures the security and integrity of that process and prevents an attacker from starting that Mac up without credentials.
However, this is a problem if the internal SSD isn’t working properly, as happened to me.
In addition to normal requirements for a macOS installation on an external disk to be able to boot a Mac, ownership of the boot volume group on that disk is required. This is normally performed when installing macOS on that disk, as explained here, and results in the ownership of that boot volume group by an authorised user of that Mac. This is incorporated into a LocalPolicy that is saved to the internal SSD of that Mac.
[…]
To accommodate the more advanced Secure Boot of Apple silicon Macs, their internal SSDs are divided into three partitions, with an extra six volumes beyond the boot volume group.
[…]
Because restoring in DFU mode erases the whole of the internal SSD, it also blows away all saved LocalPolicy for that Mac. Following the restore process, any bootable external disk used with that Mac will need to have its ownership re-established so that a new LocalPolicy can be created for it.
Howard Oakley:
It’s a common misunderstanding that trying to change Boot Security in Startup Security Utility can help solve Apple silicon boot problems, but if anything it only complicates them. Almost the only good reason for reducing boot security of an Apple silicon bootable system is when third-party kernel extensions are required. Otherwise don’t tamper with Startup Security Utility, as it will only confuse, as we’ll see later.
[…]
One important functional difference, which remains relevant to Big Sur boot disks, is that Apple silicon Macs don’t use the paired Recovery volume as their primary Recovery system: booting an Apple silicon Mac running Big Sur into Recovery should instead use the Recovery system installed in their internal SSD, in the Apple_APFS_Recovery partition. In subsequent versions of macOS, that’s used instead for secondary or Fallback Recovery. Thus Big Sur can be a problem when it comes to Recovery, and for this reason is best avoided on Apple silicon Macs. If it’s essential to install a copy of Big Sur, then be prepared for problems with Recovery mode.
[…]
Although APFS should be backward compatible, making it relatively safe to make changes to an older version of APFS from a newer system, forward compatibility is more limited. Using older versions of Disk Utility or tools like fsck
on newer versions of APFS risks errors, failure and at worst damage. The Appendix at the end of this article summarises version numbering in APFS and major changes to beware of.
Previously:
Apple File System (APFS) Backup Mac macOS 11.0 Big Sur macOS 15 Sequoia Solid-State Drive (SSD) Storage
Thursday, April 3, 2025
Bill Gates (via Slashdot):
It feels like just yesterday that Paul and I were hunched over the PDP-10 in Harvard’s computer lab, writing the code that would become the first product of our new company.
That code remains the coolest code I’ve ever written to this day—and you can see it for yourself at the bottom of this page.
[…]
Paul and I set out to create a BASIC interpreter, which would translate code into instructions the computer understood line by line as the program runs.
[…]
Paul and I decided to divide and conquer. We didn’t have the Intel 8080 chip that the Altair computer ran on, so Paul got to work writing a program that would simulate one on Harvard’s PDP-10 mainframe. This allowed us to test our software without needing an actual Altair. Meanwhile, I focused on writing the main code for the program while another friend, Monte Davidoff, worked on a portion called the math package. We coded day and night for the two months to create the software we had said already existed.
Richard Speed:
The source code is provided as a 157-page PDF [link] of scanned fan-fold paper rather than as source in a convenient repository. An annotated disassembly of Altair BASIC 3.2 can be found on GitHub.
Previously:
Update (2025-04-07): See also: Hacker News.
BASIC Bill Gates History Microsoft Open Source Programming
Reuters (PDF, Slashdot):
Apple was hit with a 150 million euro ($162.4 million) fine by French antitrust regulators on Monday for abusing its dominant position in mobile app advertising on its devices via a privacy control tool.
[…]
“While we are disappointed with today’s decision, the French Competition Authority has not required any specific changes to ATT,” Apple said in a statement.
Coeuré told reporters the regulator had not spelled out how Apple should change its app, but that it was up to the company to make sure it now complied with the ruling.
Ben Lovejoy:
Both advertisers and developers of free ad-funded apps complained loudly at the impact of ATT, as it was estimated that it would cost social media companies alone tens of billions of dollars.
Complaints were made in a number of countries – some arguing that it was unfair because Apple exempts its own apps (which are in reality subject to even tighter controls), others saying the loss of revenue forced developers to raise prices to compensate.
Jon Brodkin (Hacker News):
The intent of ATT “is not problematic in terms of the likely benefits for users as regards privacy protection,” but “how the framework is implemented is abusive within the meaning of competition law,” the agency said. Apple’s “implementation methods artificially complicate the use of third-party applications and distort the neutrality of the framework to the detriment of small publishers financed by advertising,” it said.
Third-party publishers “cannot rely on the ATT framework to comply with their legal obligations,” so they “must continue to use their own consent collection solution,” the French agency said. “The result is that multiple consent pop-ups are displayed, making the use of third-party applications in the iOS environment excessively complex.”
[…]
The agency said there is an “asymmetry” in which user consent for Apple’s own data collection is obtained with a single pop-up, but other publishers are “required to obtain double consent from users for tracking on third-party sites and applications.”
[…]
Apple said in a statement that the ATT “prompt is consistent for all developers, including Apple[…]”
Is this actually true? It sounds like when Tim Cook told Congress that Apple’s own apps have to follow the same guidelines as third-party apps. I don’t think I’ve ever seen an Apple app display the “Allow ‘App’ to track your activity across other companies’ apps and websites?” prompt. Apple has defined tracking in such a way that it doesn’t count if you own the app store, so why would they ever show that prompt? I have seen Apple apps show different prompts, and the French Competition Authority includes a screenshot of one.
Nick Heer:
Because the ATT prompt does not allow developers to specify which third-parties are receiving tracking data, developers must include a second opt-in screen that provides more details about how their data will be used. This is fairly granular — arguably too much — but Apple’s version lacks detail. If a user agrees to third-party tracking, is their consent fully informed if they do not know with which advertisers their information is being shared, or even how many? I am not sure they do.
They also seemed to disagree with how Apple defines tracking. German regulators are also interested in what amounts to self-preferencing, even if that is not Apple’s intent. The authority has not yet published the text of the decision, which will hopefully answer many of the questions I have.
One thing I am curious about is how the regulator reconciles Apple’s apparently “not problematic” attempts at improving user privacy with the callous disregard toward the same shown by ad tech companies. Trade groups representing those companies, including the French offices of the IAB and MMA, were among those who filed this complaint. Both trade groups are loathsome; their inability and failure to self-govern is one reason for this very privacy legislation. Yet Apple’s particular definition of “tracking” is something only relevant to very large platform operators like itself. There is very clearly a conflict of interest in Apple trying to apply these kinds of policies to competitors, especially as Apple expands its ads business.
John Gruber (Mastodon):
It’s ostensibly “not necessary” because French and EU privacy laws are supposedly enough, and all that’s needed. And it’s unfair because now, under ATT, third-party surveillance advertisers who seek to track users across apps on iOS need to ask permission twice — first through the clear-as-a-bell “Ask App Not to Track” / “Allow Tracking” prompt required by Apple, and again through the byzantine but ultimately toothless permission requirements of France and the EU. ATT has had measurable effects because users understand it, and they prefer not to be tracked. EU and French privacy laws are largely ineffective because, in practice, they bury users with confusion.
I’m not sure these last two sentences are really true, as Heer also discusses.
Previously:
Antitrust App Tracking Transparency France iOS iOS 18 Legal
Joe Mullin:
In a moment of clarity after initially moving forward a deeply flawed piece of legislation, the French National Assembly has done the right thing: it rejected a dangerous proposal that would have gutted end-to-end encryption in the name of fighting drug trafficking. Despite heavy pressure from the Interior Ministry, lawmakers voted Thursday night (article in French) to strike down a provision that would have forced messaging platforms like Signal and WhatsApp to allow hidden access to private conversations.
Via Irreal:
One of my favorite stories is the probably apocryphal story of some legislature trying to legislate the value of pi. The same mindset is in play with legislators who believe that they can simply will a secure backdoor into existence. The fact that experts everywhere say, “No you can’t.” makes no impression.
Alexander Martin (via Nick Heer):
The European Commission announced on Tuesday its intention to join the ongoing debate about lawful access to data and end-to-end encryption while unveiling a new internal security strategy aimed to address ongoing threats.
[…]
The aim is to “identify and assess technological solutions that would enable law enforcement authorities to access encrypted data in a lawful manner, safeguarding cybersecurity and fundamental rights,” said the Commission.
Previously:
France Legal Privacy Signal WhatsApp
Apple:
Starting today, with the availability of iOS 18.4, iPadOS 18.4, and macOS Sequoia 15.4, Apple Intelligence features are now available in many new languages, including French, German, Italian, Portuguese (Brazil), Spanish, Japanese, Korean, and Chinese (simplified) — as well as localized English for Singapore and India — and are accessible in nearly all regions around the world.
In addition, iPhone and iPad users in the EU have access to Apple Intelligence features for the first time[…]
I’m not sure why the Mac is absent from that list.
Norbert Heger:
Wasn’t macOS 15.4 supposed to bring support for additional languages like German to Apple Intelligence?
He has the system language set to English (which Apple Intelligence already supported) and is getting an error that Apple Intelligence is not available when Siri is set to German. But it works after changing the system language to German.
Nick Heer:
I remain skeptical that Apple Intelligence was ever “delayed” in the region. Until today, it was only available in variations of English. When Apple announced in November it would be bringing these features to the E.U., it sure seemed like it also needed the time to train its models on a range of new languages reflecting the regions where it would be used.
If Apple was so worried about the wrath of regulators, it could have made accessing Apple Intelligence in the E.U. as complicated as it does E.U.-specific features outside the region. But it did not.
Previously:
Update (2025-04-03): Steve Troughton-Smith:
[The] Mac doesn’t qualify as a VLOP, only iOS and iPadOS. Even if it did, though, it meets most if not all of the DMA requirements anyway, because it’s not locked down like iOS.
Apple Intelligence Digital Markets Act (DMA) European Union iOS iOS 18 Mac macOS 15 Sequoia Siri
Wednesday, April 2, 2025
Nick Lockwood:
Airdrop on macOS has this “great” feature where it displays receivers asynchronously as it finds them and they are sorted alphabetically, so the order shuffles randomly under the mouse as you are trying to click
Brought to you by the guy who sent a file to a random colleague when trying to share it between two machines 😩
Norbert Heger:
Hey Apple, I found a layout bug in Mail.app. The rightmost category button is always truncated…
I assume this is intentional because otherwise there would be no indication that you could scroll to find more buttons.
Mario Guzmán:
Lesson 1 in #UIUX… your buttons should not be moving targets. Especially if they’re toggles.
Look at how if I toggle on “Transactions” and then toggle it off, I am no longer in the bounds of that button. TF?!
I have a feeling this was designed for touch and touch only. It wouldn’t matter there because you lift your finger after tapping…
Previously:
AirDrop Apple Intelligence Apple Mail Design Mac macOS 15 Sequoia
Also new in Swift 6.1, ST-0006:
We offer three variants of #expect(throws:)
:
- One that takes an error type, and matches any error of the same type;
- One that takes an error instance (conforming to
Equatable
) and matches any
error that compares equal to it; and - One that takes a trailing closure and allows test authors to write arbitrary
validation logic.
The third overload has proven to be somewhat problematic. First, it yields the
error to its closure as an instance of any Error
, which typically forces the
developer to cast it before doing any useful comparisons. Second, the test
author must return true
to indicate the error matched and false
to indicate
it didn’t, which can be both logically confusing and difficult to express
concisely[…]
Note that, with Swift 6.0, only the third variant actually lets you access the thrown error. So that’s what I always used, but I found it awkward. I’d been using a helper method to make it a little better:
func expect<T, E>(sourceLocation: SourceLocation = #_sourceLocation,
_ performing: () throws -> T,
throws errorChecker: (E) -> Void) {
// @SwiftIssue: Must write this separately or it won't type-check.
func errorMatcher(_ e: any Error) throws -> Bool {
let error = try #require(e as? E, sourceLocation: sourceLocation)
errorChecker(error)
return true
}
#expect(sourceLocation: sourceLocation,
performing: performing,
throws: errorMatcher)
}
This would do the cast, but I think it was still not great:
expect {
try // something
} throws: { (error: MJTError) in
// check `error`
}
With Swift 6.1, the first two variants return the matched error, so I can just write:
let error = try #require(throws: MJTError.self) {
try // something
}
// check `error`
Much better! Note that I’ve switched from #expect
to #require
because it doesn’t really work to do:
if let error = #expect(throws: MJTError.self) // ...
The if
doesn’t interact well with the trailing closure syntax, so I think I would have to write it like:
let error = #expect(throws: MJTError.self) {
try // something
}
if let error {
// check `error`
}
if I really wanted to continue after the error didn’t match.
Note that if you don’t care what the error is but do want to look at it, you can pass (any Error).self
as the error type.
I was also wondering, now that we have typed throws
, why doesn’t it check at compile time that the test code throws the right type of error? The answer:
If we adopted typed throws in the signatures of these macros, it would force adoption of typed throws in the code under test even when it may not be appropriate. For example, if we adopted typed throws, the following code would not compile[…]
Previously:
Language Design Programming Swift Programming Language Testing
Ernie Smith (via Hacker News):
But it of course raises the question: Do they make Apple‘s shows on Macs? As the second season of Severance ended in dramatic fashion, Apple decided to answer that question, and the answer was … surprisingly confusing.
[…]
In the video Apple released, which highlights the Mac-driven editing process that Ben Stiller's team is using, something stood out to me: Wait, the video is super-jittery—this makes the Mac Mini look rough. What's going on?
Then, after about 10 minutes of watching, I saw it: The show’s lead editor, Geoffrey Richman, was working on a remote Mac through Jump Desktop, a screen sharing tool known for its high-speed “fluid remote desktop” feature.
[…]
To me, though, it highlights a huge issue with Apple’s current professional offerings. They are built to work on a single machine. At least for high-end use cases, the remote workflow threatens to cut them out of the equation entirely, as cloud devices with access to nearly unlimited resources gradually outpace individual machines. In fact, there is a version of the editor he was using, Avid Media Composer, that is cloud-based and built specifically for this very use case.
See also: John Gruber.
Previously:
Apple TV+ Avid Cloud Jump Desktop Mac macOS 15 Sequoia Screen Sharing TV Show Video
Makena Kelly (Hacker News):
The project is being organized by Elon Musk lieutenant Steve Davis, multiple sources who were not given permission to talk to the media tell WIRED, and aims to migrate all SSA systems off COBOL, one of the first common business-oriented programming languages, and onto a more modern replacement like Java within a scheduled tight timeframe of a few months.
[…]
This proposed migration isn’t the first time SSA has tried to move away from COBOL: In 2017, SSA announced a plan to receive hundreds of millions in funding to replace its core systems. The agency predicted that it would take around five years to modernize these systems. Because of the coronavirus pandemic in 2020, the agency pivoted away from this work to focus on more public-facing projects.
[…]
As recently as 2016, SSA’s infrastructure contained more than 60 million lines of code written in COBOL, with millions more written in other legacy coding languages, the agency’s Office of the Inspector General found. In fact, SSA’s core programmatic systems and architecture haven’t been “substantially” updated since the 1980s when the agency developed its own database system called MADAM, or the Master Data Access Method, which was written in COBOL and Assembler, according to SSA’s 2017 modernization plan.
When the original X.com merged with PayPal, Musk wanted to rewrite the code and switch everything from Unix to Windows. Part of the thinking, if I recall, was that it would be easier to hire Windows developers. The original PayPal engineering team rejected this and maneuvered to have him replaced as CEO.
It probably is a good idea to modernize old government systems and get them off COBOL, but Musk is not known for the careful approach that doing this properly would require. Still, it’s interesting to think about how this should be done. I wonder if they could run the new system in a sandbox for a year, feeding it all the same inputs, and see whether it generates the same outputs.
Note that the existing system is tested but not problem-free. It seems to be pretty reliable about dispensing payments, but there have been multiple multi-month periods where I was not able to log into my account or I could log in but it wasn’t functional.
Previously:
COBOL Elon Musk Financial PayPal Programming Software Rewrite Testing
Tuesday, April 1, 2025
Holly Borla:
Swift 6.1 enables custom Swift Testing traits to perform logic before or after tests run in order to share set-up or tear-down logic. If you write a custom trait type which conforms to the new TestScoping
protocol, you can implement a method to customize the scope in which each test or suite the trait is applied to will execute. For example, you could implement a trait which binds a task local value to a mocked resource:
struct MockAPICredentialsTrait: TestTrait, TestScoping {
func provideScope(for test: Test, testCase: Test.Case?, performing function: @Sendable () async throws -> Void) async throws {
let mockCredentials = APICredentials(apiKey: "fake")
try await APICredentials.$current.withValue(mockCredentials) {
try await function()
}
}
}
extension Trait where Self == MockAPICredentialsTrait {
static var mockAPICredentials: Self { Self() }
}
@Test(.mockAPICredentials)
func example() {
// Validate API usage, referencing `APICredentials.current`...
}
Because task locals cannot be separated into set-up and tear-down portions, they were previously only usable in Swift Testing if you repeated them within each test function. TestScoping
gets rid of the indentation that entails and can also be applied at the suite level, so you don’t have to repeat it for each test. It’s great to have this functionality, though I think the implementation via traits feels a bit convoluted compared with XCTest’s invokeTest()
.
ST-0007:
Some test authors have expressed interest in allowing custom traits to access
the instance of a suite type for @Test
instance methods, so the trait could
inspect or mutate the instance. Currently, only instance-level members of a
suite type (including init
, deinit
, and the test function itself) can access
self
, so this would grant traits applied to an instance test method access to
the instance as well. This is certainly interesting, but poses several technical
challenges that puts it out of scope of this proposal.
It seems like a major limitation that any code factored out in this way can’t access properties or helper functions in the type that contains the test.
Some reviewers of this proposal pointed out that the hypothetical usage example shown earlier involving setting a task local value while a test is executing will likely become a common use of these APIs. To streamline that pattern, it would be very natural to add a built-in trait type which facilitates this. I have prototyped this idea and plan to add it once this new trait functionality lands.
Previously:
Update (2025-04-02): Christian Tietze:
I really like how Swift Testing Traits turns into how Emacs Lisp implements function advising.
You basically decorate a function call with a macro.
Unlike (Emacs) Lisp, you can't fiddle with the context of the called function and pass data along.
Programming Swift Concurrency Swift Programming Language Testing
Apple (security, downloads):
Clang now defines TARGET_OS_*
conditionals as built-in macros based on the provided target triple.
[…]
Searching in the documentation viewer may start an indexing process which makes no progress. This may result in missing search results and increased CPU usage.
[…]
Fixed: Foundation encoders/decoders user info dictionaries now require Sendable
values. This may cause build errors even in the Swift 5 language mode in small edge cases where the userInfo property is set to a value like init(myCustomInitializer:)
where the initializer is defined in an extension on Dictionary
with a Value == Any
constraint.
[…]
Instruments 16.3 includes a new Processor Trace Instrument which uses hardware-supported, low-overhead CPU execution tracing to accurately reconstruct execution of the program.
[…]
In Xcode when you are in a test context you are now able to query for your test plan name and scheme name in the environment with the keys XCODE_TEST_PLAN_NAME
and XCODE_SCHEME_NAME
.
[…]
xcodebuild
supports constraining the tests run through tests actions by tags. Use -only-testing-tags
to include tests identified by a tags and -skip-testing-tags
to omit tests identified by tags.
There are also lots of C++ and Swift/C++ improvements. It does not look like the issues with linking to certain frameworks on older versions of macOS (FB14667312) or calling async functions bridged from Objective-C (134442168) have been fixed yet.
Xcode Releases:
It is identical to RC2 that came out a couple of days ago.
Matt Massicotte (via Christian Tietze):
No, dynamic isolation is not bad.
But, I think we can also agree that static isolation is preferable. If you find yourself using dynamic isolation solely because it is a familiar pattern, that’s something to think about more deeply. Static isolation is a safer, clearer way to express what you need. That doesn’t mean you can always or even should start with it. Adopting concurrency will be a long process. Dynamic isolation is a very handy tool for getting there, I just don’t think it should typically be an end-state.
Rob Napier:
I’m wondering if there are changes to how DynamicActorIsolation works in Xcode 16.3. I’m seeing crashes due to running on a background thread that I don’t have with 16.2. The closure in question isn’t intended to be MainActor even though it’s defined in a View. With DynamicActorIsolation turned on, it seems to be getting MainActor assertions added, even if I mark it Sendable.
Paul Hudson:
If you upgraded to Xcode 16.3, be warned: there appears to be a simulator bug that causes network access to fail regularly. It doesn’t affect devices, just the simulator. You can work around it by using URLSession(configuration: .ephemeral)
rather than URLSession.shared
.
Previously:
Update (2025-04-02): Sean Heber:
Xcode 16.3 is seemingly refusing to remember the width of the canvas panel where SwiftUI previews live between tab switches and it is driving me bonkers and I’ve only had this version of Xcode a few hours.
C++ Programming Language Instruments Mac macOS 15 Sequoia Programming Swift Concurrency Swift Programming Language Testing Xcode
SpamSieve 3.1.2 improves the filtering accuracy of my Mac e-mail spam filter, amongst other enhancements and fixes.
Some interesting issues were:
I made some more table view improvements enabled by the lazy Core Data collections mentioned in the previous release. Since it no longer loads the whole selection into RAM, it’s now possible to operate on any size of selection in the Log window. The collection also adjusts the fetch batch size and the relationship prefetching based on what type of work is being done. For example, if you’re just scrolling the window it fetches less data than before until you actually select something to view. If you’re copying to the clipboard or it’s exporting the log for a diagnostic report, it fetches more rows and more relationships to reduce the number of trips to the database.
SpamSieve’s launch agent detects when Mail or Outlook launches, and then it launches the main SpamSieve app in response so that it can start filtering. This has worked without issue until recently, but now it seems that sometimes, if the user has set an app like Mail or Outlook as a login item, it will get launched before background launch agents. The fix is for the launch agent to look at which apps are already running when it launches, rather than only observing subsequent launches and quits.
Apple Mail’s scripting interface can get confused if there are multiple accounts with the same name. What I learned this month is that an account that doesn’t even show up in Mail ‣ Settings ‣ Accounts, e.g. it’s only in System Settings ‣ Internet Accounts, can also cause conflicts.
In mapping characters to key codes, I’ve found that the common advice to build up a table is problematic because sometimes there’s more than one key that corresponds to a given character. For example, '0'
could map to either kVK_ANSI_0
or kVK_ANSI_Keypad0
. In some cases, maybe the app should be aware of this and handle both options. For now, I’m building up the table in reverse order so that the lower numbered key codes (e.g. not on the numeric keypad) have precedence.
I got a new Mac, but the Migration Assistant did not preserve the notarization credentials in the keychain. notarytool
started failing, which was detectable from looking at the logged output, but at first I didn’t realize it because part of my build script didn’t use set -e
and so it kept running after commands had that failed. The script now checks for errors, and I also made some tune-ups to my automated notarization checks (e.g. using the newer syspolicy_check
).
Previously:
Core Data Mac macOS 15 Sequoia Migration Assistant Notarization Optimization Programming SpamSieve Swift Programming Language
Elon Musk (Hacker News):
@xAI
has acquired
@X
in an all-stock transaction. The combination values xAI at $80 billion and X at $33 billion ($45B less $12B debt).
Since its founding two years ago, xAI has rapidly become one of the leading AI labs in the world, building models and data centers at unprecedented speed and scale.
X is the digital town square where more than 600M active users go to find the real-time source of ground truth and, in the last two years, has been transformed into one of the most efficient companies in the world, positioning it to deliver scalable future growth.
xAI and X’s futures are intertwined. Today, we officially take the step to combine the data, models, compute, distribution and talent. This combination will unlock immense potential by blending xAI’s advanced AI capability and expertise with X’s massive reach.
CNBC:
Musk launched xAI less than two years ago with a stated goal to “understand the true nature of the universe.” The startup has been trying to compete directly with OpenAI, the richly valued AI startup that Musk co-founded in 2015 as a non-profit research lab. He later left OpenAI and has recently been involved in a public relations and legal spat with the company and CEO Sam Altman over the direction that it’s taken.
[…]
X and xAI have already been intertwined, with xAI’s Grok chatbot available to users of the social media app.
It’s not clear to me whether this is essentially just a clever refinancing or whether something material has changed. On paper, Twitter is now profitable, and the business was sold for more than the original acquisition price. But the investors haven’t actually made a profit yet. They just own untradeable shares in a different private company. xAI, which seemed to come out of nowhere, is propped up by even more capital that it raised on the back of the AI boom, probably at more favorable terms. The ownership is now different, and perhaps the corporate structure and control are, too.
Richard Speed:
Looking into the future requires speculation. More Grok is likely, although Musk had already been heavily promoting xAI’s chatbot on X. As such, the service would have been further integrated regardless of the acquisition.
The main beneficiaries of the acquisition are X investors, who have endured years of turbulence since Musk acquired the platform. Owning shares in a growing AI startup is far more appealing than shares in a declining – though still significant – social media platform.
According to Gartner, worldwide generative AI spending is set to hit $644 billion in 2025, up 76.4 percent from 2024.
Previously:
Acquisition Artificial Intelligence Business Elon Musk Twitter Web
Monday, March 31, 2025
Juli Clover (release notes, security, enterprise, developer, full installer, IPSW):
With macOS 15.4, Apple is bringing Mail Categorization to the Mac. The Mail app features dedicated categories like transactions, updates, and promotions, with important emails organized into a primary section.
Apple News+ subscribers now have access to an Apple News Food section with recipes, food articles, and more. There’s a new Sketch style for Image Playground, Memory Movie support in the Photos app for custom slideshows, and new emoji characters.
See also: Mr. Macintosh and Howard Oakley.
Apple:
FSKit is now available, enabling delivery of user space file systems as Application Extensions. These file systems support integration with DiskArbitration.
[…]
To enable the new HTTP loading mode, set usesClassicLoadingMode
to false on URLSessionConfiguration
. The new loading mode will become the default in a future release.
[…]
Fixed: M4 Macs are unable to launch virtual machine, and attempts result in a system restart.
Khaos Tian:
FSKit on macOS 15.4 doesn’t seem to work without manually writing some files to a place where we shouldn’t… Did anyone at Apple tested this before shipping it 🫠
TIL they put this toggle under “General -> Login Items & Extensions -> File System Extensions”… macOS settings is a mess 😛
Quinn:
Historically the boundary was at the transport layer. When you enable the new loader, URLSession
uses Network framework’s HTTP implementation.
Jeff Johnson:
Incidentally, before updating my Mac mini, I got an “Upgrade to macOS Sequoia” notification even though the Mac was already running Sequoia (15.3.2).
[…]
After the updates, both my Mac mini and my iPad showed one of the most confusing “welcome” screens that I’ve ever seen. Indeed, they confused even me!
[…]
The two options given were “Continue” and “Only Download Automatically”. Which of those two did I want? Confused, I selected Continue.
I turns out that I wanted neither.
It looks like a dark pattern to encourage people to auto-update.
Rich Trouton:
I have not found a way to suppress this screen using a defaults command, but it is possible to suppress the Update Your Mac Automatically screen on macOS Sequoia using a configuration profile.
Paul Haddad:
Our long Apple Intelligence nightmare is over, I upgraded to 15.4 on two machines and neither turned that stuff back on! Still wasting several GB of storage, but it’s progress.
Marcin Krzyzanowski:
The release of macOS 15.4 builds is different from that of RC2. YET my computer does not update.
Rich Trouton:
Apple has added new management options for Apple Intelligence as part of the release of macOS Sequoia 15.4.
Marcin Krzyzanowski:
PSA: don’t upgrade macOS to 15.4 if you need to use Xcode 16.2 - the lldb debugger is crashing on start.
Previously:
Update (2025-04-01): Ric Ford:
Apple apparently has no interest in fixing its recurring bugs with home folder relocation, forcing security compromises in unacceptable workarounds. Lee Mendoza emailed us about his latest tests of the longstanding problem.
The issue with System Integrity Protection (SIP) preventing users whose home directories are not on the boot volume has not been resolved in the macOS Sequoia 15.4 release. This is a recurring issue that most recently started with macOS Sequoia 15.3 and has persisted in the 15.3.1, 15.3.2, and 15.4 releases.
Marcin Krzyzanowski:
damn it, the macOS 15.4 and iOS 18.4 may be the worst release for app developers so far. It is “just” a minor update, but it feels like if some major changed in the platform.
this time broken URLSession
Sebastiaan de With:
Things are super broken for me and users are seeing it too.
Marcel Weiher:
Anyone else encountering the problem with that Seqouia 15.4 update simply not installing?
For me it downloaded (I think, at least it was busy for a while), reboots as if applying the update (but that goes too quick) and then comes back as 15.3.2 with an update available.
[…]
It was insufficient disk space. No warning, no message. Just fails.
[…]
And why was there insufficient disk space? 100s of GBs of Xcode simulator detritus.
Update (2025-04-02): Paul Kafasis:
Though MacOS 15.3 didn’t include any known audio fixes, today’s update includes a key audio-related bug fix to the operating system.
Geoff Duncan:
So, macOS Sequoia 15.4 arbitrarily turned on automatic installation of operating system and security updates. These are things that are enabled by default on a new install—which I think is understandable. However, I had previously deliberately disabled automatic updates, and Apple decided to override my explicit actions.
[…]
I don’t have automatic software updates enabled because I’ve had Apple’s operating system updates effectively brick my machine. I do a lot of music/audio work, and there’s basically no telling when Apple is going to do something that will make the drivers for your music/audio hardware unusable.
Dr. Drang:
I updated my Mac to macOS 15.4 last night and after the reboot, my desktop was white. Pure white.
[…]
I opened System Settings, chose Wallpaper from the list along the right edge, and saw that although my custom color was displaying properly in the little box on the right, the miniature desktop on the left was white.
Ric Ford:
We encountered desktop background corruption and new crashes with third-party software after installing macOS 15.4.
[…]
Meanwhile, we and others see macOS 15.4 continuing to steal gigabytes of disk space for “Apple Intelligence” even if it is turned off.
Jeff Johnson:
The Music app now pinwheels for about 5 seconds every launch on macOS 15.4.
It doesn’t happen if my internet is disconnected.
It’s probably trying to load an ad for Apple Music.
Update (2025-04-03): Jeff Johnson:
Using Little Snitch, I discovered why Music app was pinwheeling for about 5 seconds every launch on macOS 15.4:
For some reason, it was waiting—on the main thread, naturally—for mobileactivationd to connect to humb.apple.com, which I was blocking in Little Snitch.
I allowed the connection once, and the problem is now solved, seemingly permanently.
According to Apple, humb.apple.com is used for “Device setup”.
Update (2025-04-07): Nicholas Riley:
Wow, macOS 15.4 is rough. Lost secondary click settings on my Magic Mouse, issues with App Store apps not recognizing prior purchases…
Ric Ford:
Adding one more problem to the list of issues with Apple’s latest software updates (with their critical security patches), Howard Oakley reports that the macOS 15.4 update fails when attempted in a virtual machine.
Nick Heer:
Used to be if you were running an x.4 release (or later) instead of the y.0, you could be confident you were running a stable OS even if you were missing out on new features. But there is no longer that stability plateau. The OS never matures.
Update (2025-04-08): Ric Ford:
A MacInTouch reader emailed us about a neat trick for disabling Apple Intelligence (which he also posted in an online forum), and we confirmed that it works on a Mac running macOS 15.4.
There is another ‘feature’ regarding Apple Intelligence: If the languages used for your Mac and Siri are not the same, there is no Apple Intelligence.
Howard Oakley:
Although the 15.4 update wasn’t quite as large as 11.3, at 6.2 GB for Apple silicon, it has comfortably surpassed it in the number of vulnerabilities fixed, 131 in all, and came close to the size of the 15.0 upgrade at 6.6 GB. What’s most disappointing is that, while the first release of Sequoia merited long and detailed accounts of much of what had changed, for 15.4 there’s precious little information beyond its lengthy security release notes.
Jeff Johnson (Mastodon):
More or less forever—I’ve tested all the way back to macOS High Sierra—the return value of the method [NSURLComponents string]
was https://example.org/
in this case. However, unfortunately, the return value is now https%3A//example.org/
in macOS 15.4. For some reason, the :
character has been percent-encoded. The new return value is not a valid URL, and thus Link Unshortener could not open it.
Apple Intelligence Apple Mail Dark Patterns Extensions FSKit Mac macOS 15 Sequoia macOS Release Music.app Networking Software Update System Integrity Protection URL Virtualization Wallpaper
macOS 14.7.5 (full installer, security):
This update provides important security fixes and is recommended for all users.
macOS 13.7.5 (full installer, security):
This update provides important security fixes and is recommended for all users.
Previously:
Mac macOS 13 Ventura macOS 14 Sonoma macOS Release
Juli Clover (no iOS/iPadOS release notes, security, enterprise, no developer):
iOS 18.4 adds Priority notifications for Apple Intelligence-capable devices, showing you your most notification first. There’s a dedicated Apple Vision Pro app for Vision Pro owners, and a new Apple News Food feature for Apple News+ subscribers.
There’s lots more quoted in her article, though they do not yet appear on Apple’s site.
See also: John Voorhees.
Keith Broni:
Today Apple has officially debuted 8 new emoji designs within iOS 18.4, bringing the likes of a paint splatter, a harp, and a face with bags under its eyes to iPhones, iPads, and all other Apple devices across the world. Plus, Genmoji in the EU and a redesigned Syrian flag emoji.
Previously:
Update (2025-04-01): Juli Clover:
With iOS 18.4, Apple made a small tweak to Safari that could be polarizing because it puts your search history front and center. When you open up a new Safari tab and then tap into the search field, Safari shows your recent search history.
Ryan Jones:
iOS 18.4 headlines: new style in image playground, recipes in News+, and organization in Photos….
Priority notifications must not work well. Photos redesign must be on hotseat. Apple must still think image playgrounds isn’t terrible.
Update (2025-04-02): Juli Clover:
This guide covers everything new in iOS 18.4.
Ric Ford:
And, two days later, Apple still hadn’t updated its web pages to acknowledge and document the iOS/iPadOS 18.4 updates.
Tim Hardwick:
Several Reddit threads (1,2,3,4) and posts on Apple’s Community Support pages over the last 24 hours are filled with reports from users who, after having updated to iOS 18.4, immediately discovered third-party apps and/or games installed on their device that were not there before.
Going on the reports, the iOS 18.4 update has manifested a bug that is causing apps to reappear – since in most cases it appears that the apps had been deleted by the users months or even years ago and long forgotten.
Previously:
Update (2025-04-07): neohoangokg (via Marcin Krzyzanowski):
UITextView crash when setting attributed text that contains substring ffi
and attributedText contains NSFontAttributeName, NSForegroundColorAttributeName
Ric Ford:
Along with its other quality problems, iOS 18.4 (with its critical security patches) is breaking CarPlay, according to a number of reports, with no easy solution and no acknowledgement or promise of a fix for Apple’s bug, apparently confirmed by at least one car company.
CarPlay Emoji iOS iOS 18 iOS Release iPadOS iPadOS 18 iPadOS Release Safari
Juli Clover (release notes, security, no developer):
Apple shares full release notes for tvOS in its tvOS support document, which is updated after each new version of tvOS comes out.
But all it says is “performance and stability improvements.”
Previously:
Update (2025-04-02): Ryan Christoffel:
At the top of the TV app’s interface, the featured carousel has three noteworthy changes:
- there’s a large plus button for easily adding titles to your Watchlist
- next to it is a big ‘i’ button for accessing a title’s information page
- finally, details on a show’s release schedule is now a lot more prominent
TV.app tvOS tvOS 18 tvOS Release
Ryan Christoffel (release notes, security, developer):
After initially listing watchOS 11.4 on its website as released, the site has since been updated to remove the update. It’s unknown when it will return.
Previously:
Update (2025-04-01): Juli Clover:
Apple today released watchOS 11.4[…] With watchOS 11.4, Apple has added an option for a Sleep Wake Up alarm to break through Silent Mode, so you can have your Apple Watch make a sound in addition to haptic tapping when a morning alarm goes off. There’s also support for Matter-compatible robot vacuum cleaners in the Home app.
watchOS watchOS 11 watchOS Release
Juli Clover (no release notes, security, developer, enterprise):
The visionOS 2.4 update brings Apple Intelligence to the Vision Pro for the first time, putting it on par with the iPhone, iPad, and Mac.
[…]
Along with Apple Intelligence, Apple added a Spatial Gallery app for the Vision Pro. The Spatial Gallery app offers a curated assortment of spatial videos, spatial photos, and panorama images from artists, filmmakers, and photographers. Apple plans to offer a range of content featuring sports, culture, arts, lifestyle, nature, travel, entertainment, and more.
Previously:
Apple Intelligence visionOS visionOS 2 visionOS Release
Apple:
This update includes performance and stability improvements.
Previously:
audioOS audioOS 18 audioOS Release
Friday, March 28, 2025
Patrick Wardle (tweet):
Since TCC is designed to protect these resources, it poses a challenge for malware that often tries to access them. Generally malware takes one of two approaches: exploiting TCC bugs, or obtaining explicit user permission access to the TCC protected item. The former is rather uncommon, while the latter is much more widespread as TCC can be trivially “circumvented” if the user acquiesces (sometimes as simply as clicking ‘Allow’ on a single TCC alert).
[…]
Since the majority of macOS malware circumvents TCC through explicit user approval, it would be incredibly helpful for any security tool to detect this — and possibly override the user’s risky decision. Until now the best (only?) option was to ingest log messages generated by the TCC subsystem.
[…]
In the macOS 15.4 SDK files, specifically EndpointSecurity/ESTypes.h
we find a brand new Endpoint Security event: ES_EVENT_TYPE_NOTIFY_TCC_MODIFY
[…]
This sounds good for anti-malware software, but I still think we need basic APIs for apps to query, request, and reset the permissions they need.
Previously:
Endpoint Security Mac macOS 15 Sequoia Malware Programming Transparency Consent and Control (TCC)
Jeff Johnson:
ChangeTheHeaders is a Safari extension for iOS, iPadOS, macOS, and visionOS that allows you to customize HTTP request headers such as Accept, Accept-Language, Cookie, and User-Agent. ChangeTheHeaders is available now in the App Store.
[…]
You might ask, why didn’t I just add this feature to StopTheMadness Pro? On macOS, StopTheMadness Pro is a Safari app extension, but the API to modify HTTP headers is available only to Safari web extensions, unfortunately. This is the same reason that StopTheMadness Pro doesn’t currently support Safari web apps.
[…]
What can you do with ChangeTheHeaders? I suspect the biggest selling point will be to spoof the User-Agent. The extension allows you to customize your User-Agent by URL domain. For example, you can make Safari pretend that it’s Chrome on Google web apps that give special treatment to Chrome. You can also customize the Accept-Language header if you don’t like the default language handling of some website, such as YouTube. (Why is the problem on the web always Google?) Or if you just want to deprioritize WebP images in Safari, you can do that, of course. It’s a simple matter of removing image/webp
from the list. You probably don’t want to stop WebP entirely, because it may be the only image type available on some websites, but if you remove image/webp
from the Accept header, then it no longer has the default quality value of 1. Instead, image/webp
would fall under the wildcard image/*;q=0.8
specification, with a lower priority than explicit image types such as image/png
. More information on how to configure ChangeTheHeaders is in the fine manual.
Previously:
ChangeTheHeaders iOS iOS 18 iOS App Mac Mac App macOS 15 Sequoia Safari Safari Extensions Web WebP
Howard Oakley:
LaunchServices compiles a large registry database of apps and their associations with and capabilities for handling different document types. Its records determine which app opens a document when you double-click on its icon in the Finder, and most prominently which are listed when you open the Open With… item in the Finder’s contextual menu. Apps are registered there automatically, and their details are updated each time they’re run. Although the user can’t interact directly with LaunchServices, there is a command tool that offers control over it, lsregister
, although it’s buried deep in the system frameworks, doesn’t have a man
page, and now works differently.
[…]
In the past, apps used to populate the LaunchServices registry were those located in the traditional Applications folders, but recent versions of macOS have extended that to cover almost any accessible folder. This has been explored by Jeff Johnson, who has shown that excluding folders and volumes from Spotlight indexing, by adding them to the list in Search Privacy… in Spotlight settings, will exclude those apps from LaunchServices’ list.
[…]
Running [lsregister -kill
] in recent versions of macOS including Sequoia is likely to wreak havoc, though. While this appears to be effective with the Open With… list, its effects on System Settings can be catastrophic. This can remove its entire contents, and even blow the wallpaper away. Normal function should start to return after restarting the Mac, but even then problems can persist.
See also: Oakley’s posts on Ventura and Sonoma.
Previously:
Update (2025-04-02): Howard Oakley:
Recognising that we often want to open a document using a different app rather than the default, the Finder’s contextual menu offers a list of suitable apps in its Open With command. That list is built and maintained by LaunchServices, and has changed in recent versions of macOS. Whereas those lists used to consist of apps installed in the traditional Application folders, LaunchServices now scours every accessible volume and folder using Spotlight’s indexes to build the biggest lists possible. If you happen to have an old copy of an app tucked away in a dusty corner, LaunchServices will find it and proudly display it alongside those in everyday use, like a game dog triumphantly presenting not one dead pheasant but every one from miles around.
[…]
Unfortunately, there’s no lasting way to block unwanted apps from being added to the list LaunchServices builds for this Open With feature. You can gain temporary relief by excluding them from Spotlight search, but should you ever open the folder they’re in using the Finder, those are all added back. This also afflicts apps in folders shared with a Virtual Machine, where the list includes App Store apps that can’t even be run from within that VM.
[…]
[Why] not empower me to determine which of those 70 apps should be offered in the Open With list? This is such a radical idea that it used to be possible with the lsregister
command that has become progressively impotent, as LaunchServices has cast its net further in quest of more apps to flood me with.
Launch Services Mac macOS 15 Sequoia Spotlight System Preferences
Timothy R. Butler (Hacker News, Slashdot):
The latest releases — MacOS Sequoia and iOS/iPadOS 18 — are screaming for such a reset. Yes, they work and are still smoother and less glitchy than Windows 11, but they feel like software developed by people who don’t actually use that software. In the 22 years since I became a “switcher”, this is the worst state I can remember Apple’s platforms being in.
Some bugs are inevitable with major releases, sure. The troubling aspect is that many are easily reproducible across devices and show up in high-traffic areas, not just forgotten nooks. How do Apple’s engineers not notice these problems?
[…]
A year focused on cleaning up these and a thousand similar issues big and small is the single step Apple could take that would most enhance its products.
Rui Carmo:
The whole situation shines a… Spotlight (ha!) into frustrations about a platform that seems to become more and more brittle to the point of actively neglecting the basics it rose to prominence on.
Yes, there will always be a bit of rose-tinted longing for the methodical, almost surgical improvements of the Jobs era. But I honestly have no idea how Apple can keep pushing AI features without cleaning house, and whatever they’re doing in the platform teams just isn’t working.
Nick Heer:
What I desperately miss is that period of stability after a few rounds of bug fixes. As I have previously complained about, my iMac cannot run any version of MacOS newer than Ventura, released in 2022. It is still getting bug and security fixes. In theory, this should mean I am running a solid operating system despite missing some features.
It is not. Apple’s engineering efforts quickly moved toward shipping MacOS Sonoma in 2023, and then Sequoia last year. It seems as though any bug fixes were folded into these new major versions and, even worse, new bugs were introduced late in the Ventura release cycle that have no hope of being fixed. My iMac seizes up when I try to view HDR media; because this Extended Dynamic Range is an undocumented enhancement, there is no preference to turn it off. Recent Safari releases have contained several bugs related to page rendering and scrolling. Weather sometimes does not display for my current location.
[…]
Ventura was by no means bug-free when it shipped, and I am disappointed even its final form remains a mess.
Matt Birchler:
Snow Leopard would receive 8 updates over the next 2 years before its successor (Lion) was released, and I think that Snow Leopard 10.6.8 is what most people have in their minds as what Snow Leopard was from the start. Imagine if Apple released an update and sent 2 years refining it over and over, instead of what feels like getting it out in the fall and then immediately shifting focus to the next year’s update. On the other hand, do you want the Mac to lag behind iOS in terms of features?
iOS could use a Snow Leopard, too.
Previously:
Apple Mail Apple Software Quality Mac Mac OS X 10.6 Snow Leopard macOS 15 Sequoia Messages.app
Thursday, March 27, 2025
Dave Nanian (Mastodon):
Since a given APFS container can hold multiple copies of the OS, Preboot and Recovery have folder structures that include UUIDs corresponding to the volume that “owns” that part of their shared volumes in the group. Inside that UUID-named folder are the files that “pair” with the system you’re trying to boot.
In Ventura and later, for some reason, one set of Cryptexes also appear outside this structure, at the top of Preboot.
[…]
On top of that, asr
didn’t (and doesn’t) copy the Cryptexes. So we thought “well, there’s got to be a reason for this; they’re probably generating and grafting the right folder during the boot process”. And, indeed, that’s what it does.
But only sometimes.
Those extensions are necessary for some things I run, but they seem to interfere with boot. On the “plain” systems, you don’t even need the “root level” Cryptexes folder and yet it boots (using, I assume, the existing Cryptexes inside the UUID-based folder). But on others, you absolutely do need them at the top of Preboot, or you get a kernel panic.
[…]
We’ve decided to not wait for asr
to be fixed by TBTB. […] Instead, to improve bootability, and save user’s time (not to mention sanity), we’re decided to copy over the Cryptexes to the root of Preboot.
Previously:
Update (2025-04-10): Dave Nanian:
People who are having trouble are typically using slow destination devices. If they're too slow, not only does the boot process take a very long time, it can fail due to kernel watchdog timeout errors. (It's quite clear that these watchdogs are expecting fast storage operation.)
Backup Bug Kernel Extensions Mac Mac App macOS 13 Ventura macOS 15 Sequoia SuperDuper
Andrew Liszewski:
Amazon has released a software update for the current-generation Colorsoft and Paperwhite that lets you double-tap on the sides or back of your Kindle to turn the page. The new feature, as spotted by The eBook Reader, is listed in the release notes for the 5.18.1 update and can be found in Settings > Device Options.
[…]
The feature works well using relatively light taps anywhere on the Colorsoft, and since it requires two taps in rapid succession, it’s not easy to trigger by mistake. Unfortunately, it’s limited to just one direction. You can either use it to jump to the next page, or scroll down a long list of books. Perhaps a future update will enable triple-taps as a way to scroll up or go back to a previous page.
Sounds like a great idea, but hopefully it works more reliably than iOS’s Back Tap.
Previously:
Kindle
Ben Schoon (via Hacker News):
The Android Open Source Project (AOSP) has left most of Google’s work in developing Android as an operating system visible to the public eye. But, starting next week, Google is moving that work behind closed doors.
Google confirmed to Android Authority that “all Android development will occur within Google’s internal branches,” the publication says. This is a shift from how Android has been developed for a very long time, but also aligns with more recent moves Google has been making.
Mishaal Rahman:
Because Google develops large portions of Android in its internal branch, the public AOSP branch often lags far behind what’s available privately. This difference is apparent when comparing feature and API availability between a clean AOSP build and Google’s latest Android 16 beta, which was built from its internal branch. While the shift to trunk-based development reduced this discrepancy, it persists and continues to pose challenges for Google.
This discrepancy forces Google to spend time and effort merging patches between the public AOSP branch and its internal branch. Due to how different the branches are, merge conflicts often arise.
[…]
External developers who enjoy reading or contributing to AOSP will likely be dismayed by this news, as it reduces their insight into Google’s development efforts. Without a GMS license, contributing to Android OS development becomes more challenging, as the available code will consistently lag behind by weeks or months. This news will also make it more challenging for some developers to keep up with new Android platform changes, as they’ll no longer be able to track changes in AOSP.
Android Google Open-source Software Programming
Wednesday, March 26, 2025
Kevin Perry:
It’s clear from community adoption and feedback that Codable
has had a lot of success in the years since it was added to Swift 4, but that it doesn’t satisfy some important needs. One of the foremost of those needs is performance more in line with programming environments that compete with Swift. As such, the main goal for this effort is to unlock higher levels of performance during both serialization and deserialization without sacrificing the ease of use that Codable
provides.
[…]
Even with all of its strengths, the existing API’s design has some unavoidable performance penalties. For instance, its use of existentials implies additional runtime and memory costs as existential values are boxed, unboxed, retained, released, and dynamic dispatch is performed.
Also, because a client can decode dictionary values in arbitrary orders, a KeyedDecodingContainer
is effectively required to proactively parse the payload into some kind of intermediate representation, necessitating allocations for internal temporary dictionaries, and String
values.
[…]
In Swift, when a client needs to do more than just alter the default CodingKey
representations, developers are often faced with a large cliff where they’re forced to manually replicate the whole Codable
implementation just to do so.
[…]
In this new design I aim to leverage Swift’s macro features to meet or exceed Serde’s level of support for customization of synthesized conformances. Moving code synthesis from the compiler to a macro will enable us to use attribute-like macros as targeted customization mechanisms, which was not something we could easily accomplish with the compiler-based Codable
synthesis.
[…]
There is no encode(_: Date)
function present in the Encoder
interface, which means PropertyListEncoder
has to attempt to dynamically cast every some Encodable
type it receives to Date
in order to handle these natively. This helps keep the Encodable
type format-agnostic, but it has a negative impact on performance, even if you never actually encode any Date
s.
I believe that fully and formally embracing format-specialization where appropriate is the best solution to this problem. Specifically, we should encourage each serialization format that has native support for data types that aren’t represented in the format-agnostic interface to produce its own protocol variant that includes explicit support for these types, e.g. JSONCodable
or PropertyListCodable
.
Dave DeLong (Mastodon):
One of the big flaws of Codable
is that it was built on the wrong abstraction. 99.9% of the time, developers who are interested in serializing a struct to data and back are doing so to a single, well-known format. However, the Codable
API was built so that the abstraction point is the encoder itself, under the assumption that you would want to serialize a type to multiple formats. This is not the case.
That design flaw has been the #1 source of Codable’s woes. It makes properly implementing custom coders almost impossible; no one implements superEncoder
properly, since most people don’t deal with inheritance of reference types, and some formats are fundamentally incompatible with the Encoder/Decoder APIs. (XML and CSV are two that spring to mind off the top of my head)
[…]
IMO we should be encouraging packages that provide format-specific coders (JSONCodable
, PlistCodable
, CSVCodable
, XMLCodable
, etc) so that each encoder and decoder can provide format-specific functionality. Then we should provide a system level API to ask types to encode into an opaque format (ie “please turn yourself into a Data
and back again”).
[…]
Foundation should provide an updated replacement for NSCoding
and leave the type-specific encoders to type-specific packages to implement.
Kevin Perry:
JSONCodable
, PlistCodable
, etc. should have full freedom to craft their interface around each format’s individuals needs and specialities.
At one stage, the “format specialized” protocols was the entirety of the design. However, while looking at adoption scenarios, I realized that this design presented a problem with “currency” types that are owned by frameworks/libraries, but used by application-level serializable types.
[…]
Hence the introduction of the format-agnostic protocols in parallel with the format-specialized ones. Range
and CGRect
can, in similar fashion to Codable
, describe their serializable members abstractly, allowing a specific encoder/decoder to interpret those instructions. The difference from Codable
being that we avoid all the OTHER downsides of Codable
the OP describes.
Dave DeLong:
That’s why I’m suggesting that we split the API to support the cases separately. We have one API that can be very general and support the whole “A type can be serialized to an opaque format” use-case, and then packages to support particular formats and all of their respective idiosyncrasies. I think we’d be repeating past mistakes to try and make those two use cases be the same API again.
Lincoln Wu:
I think there’s one common use case which is not covered by the current Codable
design: heterogeneous/dynamic decoding/encoding.
Many times in my developing, I wanted to decode part of a json into an intermediate representation, and later further decode that thing into a specific type.
Matt Gallagher:
The problem with Codable
– and what I think you’re getting at when you suggest we need JSONCodable
/PlistCodable
– is there’s no sane custom implementation of init(from:)
and encode(to:)
without being archive-specific. These functions are generally a mashup of two different ideas:
- migration and versioning
- archive-specific choices like which fields to include and what order
But moreover, while you might make archive-specific choices, you don’t always have archive-specific knowledge.
[…]
We have no lookahead. We can’t peek to see if the next char is a double-quote, a digit or a bracket. Without overloading the Decoder
to emit lookahead metadata as decodable types, you simply need to try each possibility, in turn, incurring the overhead and disruption of thrown errors.
Kevin Perry:
This design does not include support for encoding and decoding cyclical objects graphs. Relatedly, there’s still no intention to include encoding of runtime type information in serialization formats for any purpose—all concrete types must be specified by the client doing the encoding or decoding.
Nick Lockwood:
I was really disappointed to see this, because these are probably my two major pain points with Codable
.
If we are going to the trouble of making a brand new, backwards-incompatible replacement for Codable
then it should try to correct all the major deficiencies of the existing design, not just performance.
NSCoding
(for all its faults) supports both or heterogeneous data and cyclical references. If this new system doesn’t support those then we are saying from the outset that it is still isn’t going to be capable of dealing with a lot of real-world use-cases.
[…]
Also (related) some kind of built-in support for schema updates and migrations (similar to CoreData/SwiftData) would be a great feature, as this is another pain point in Codable.
Even just a way to specify a default value for new non-optional properties would reduce a lot of the need for adding manual decoder implementations to apps in post-1.0 releases.
Helge Heß:
NSCoder
/NSArchiver
was actually pretty good for what it was intended for, archiving object graphs. How can I do that today? SwiftData? 🙈
Nick Lockwood:
Another issue I’ve run into with Codable
is that a given object may have more than one serialized representation in a given application.
Zev Eisenberg:
I’d like to put in a request to please consider error handling. A common source of grief for beginners is difficulty in reading the error messages thrown by Codable. Some information is missing, and it’s formatted such that you really have to do some digging to understand it.
Helge Heß:
It seems the new macro based approach will solve some major performance problems 👍 But it doesn’t seem to address what makes serialisation actually hard: different formats, mappings, versioning and preservation. It still seems to be bonusware, w/ “now it does the demos fast”, not something addressing actual serialisation issues.
Think Protobuf, that does.
Previously:
Cocoa JSON Language Design Macros Optimization Swift Codable Swift Programming Language
Ryan Christoffel:
Wayne Ma writes today at The Information about the state of Apple TV+ as a business, analyzing where the streamer stands in terms of revenue and subscribers after five years.
In the heavily-paywalled article, Ma reports that Apple’s losses on TV+ amount to over $1 billion per year. While it’s long been known that the streamer was not yet profitable, this is the first time I can recall that we’ve had a solid number to quantify the losses.
The report also claims Apple TV+ had 45 million subscribers last year.
Kontra:
Co-CEO of Netflix and Spotify board member Ted Sarandos on Apple TV+:
“I don’t understand it beyond a marketing play, but they’re really smart people. Maybe they see something we don’t.”
John Gruber (Mastodon):
But is it a loss when Apple expected the business to be unprofitable for a decade or more?
[…]
The insinuation here is that Apple’s pissing this money away and doesn’t know what they’re doing. Maybe they are! But if so it was exactly Eddy Cue and Tim Cook’s strategy to piss this money away. If Apple had expected TV+ to be profitable or break-even in 2024, then a $1 billion operating loss would be a story. But as it stands it’s just a cost.
John Gruber:
One interesting nugget is this chart, which suggests that subscriptions to TV+ have boomed since Apple and Amazon worked out a deal to sell TV+ subscriptions through Amazon Channels in Prime Video at the end of last year. That deal has, seemingly, moved the needle. Another interesting nugget is that TV+ seems to suffer from a higher churn rate than other streaming services. Said Belloni’s Puck colleague Julia Alexander, “Fewer than 35 percent of all subscribers keep the service for longer than six months.”
M.G. Siegler:
I mean, my god could you imagine if Apple had bought Netflix? Who knows if they even would have been allowed to from a regulatory perspective, or if Netflix would have sold, but if it’s true that Cue argued against it simply because he viewed their business as being bolstered by borrowing (financing content spend through debt) that’s a huge strategic blunder. Yes, this was the common criticism of Netflix at the time, though – with the benefit of hindsight – it clearly misunderstood what would happen if and when Netflix reached escape velocity with regard to scale.
[…]
Why would the availability of an Apple TV+ show on a Samsung TV prompt a person to buy Apple hardware? Just halo effect stuff? The argument for making these shows widely available is to sell Apple TV+ subscriptions and spread the cost (and content) far beyond the Apple ecosystem base, not the other way around.
[…]
Apple thought that creating great Apple TV+ shows would lead people to buy Apple TV set top boxes. That didn’t happen. Instead, they just kept their Rokus and stayed happy with Netflix and Prime Video and Disney+ and didn’t think much about Apple TV+.
[…]
Apple just needs to make the content side of the equation actually work, strategically. I don’t care how much it costs, necessarily. It’s more that those costs – in particular those losses not going down over time – actually indicated that they’re strategy was broken.
Previously:
Update (2025-04-01): Benjamin Mayo:
It may be starting from a small base, but TV+ does have upward trajectory. Frankly, on most metrics aside from the bottom line, the Apple TV+ plan is working. Apple is making a lot of good shows that people like, and is garnering millions of subscribers with ever-increasing viewership (given the increasing frequency of appearances of Apple shows on the Nielsen streaming charts). Over time, I see Apple TV+ as a big asset of the Apple One bundle.
[…]
Alongside reducing churn, the ongoing brand prestige and self-aggrandising awards recognition is also an added bonus for the company. If it really has accrued 45 million subscribers to date with a catalog of just ~280 originals, it doesn’t seem too far-fetched that they could eventually break even on the effort.
John Gruber:
The Studio is, thus far, engaging, surprising, funny, gorgeous, clever, and cinematically ambitious. It’s really quite a thing. I have no idea what’s coming in episodes 3–10, so maybe this piece will look a bit premature, if not foolish, in two months. But if the rest of season one is anything like the first two episodes, The Studio is a classic in the making.
The thought also occurs to me that this might be the don’t-over-think-it answer to just what the hell Apple is doing making original shows and movies in the first place. Perhaps Apple’s leadership simply believes, as I do, that cinema is the grandest and greatest form of art the world has ever seen — one that encompasses acting, writing, photography and/or illustration, and music — and but that great cinema is expensive and delicate and needs, from deep-pocketed studios and their deeper-pocketed corporate parents, more than patrons, but champions. And that in a media landscape where such champions of cinema-as-art and art-as-an-essential-public-good are fewer and fewer, it is Apple’s not just opportunity but obligation to step up to the plate.
It’s a pity that they don’t see it as their obligation to champion the art of software, e.g. by ensuring that individuals can build and distribute their creations without interference.
Apple Apple TV Apple TV+ Business Eddy Cue Netflix