Archive for April 2025
Wednesday, April 23, 2025
Foo Yun Chee and Jan Strupczewski (European Commission, MacRumors, Hacker News):
Apple was fined 500 million euros ($570 million) on Wednesday and Meta 200 million euros, as European Union antitrust regulators handed out the first sanctions under landmark legislation aimed at curbing the power of Big Tech.
[…]
The EU competition watchdog said Apple must remove technical and commercial restrictions that prevent app developers from steering users to cheaper deals outside the App Store.
[…]
Apple avoided a fine in a separate investigation into its browser options on iPhones after making changes that allow users to switch to a rival browser or search engine more easily. Regulators said these comply with the DMA and closed the investigation on Wednesday.
[…]
The iPhone maker was still charged with breaching DMA rules on the grounds it hindered users from sideloading, a practice that involves downloading alternative app stores and apps from the web.
Jacob Parry (Hacker News):
In addition to the fine, Apple has been issued with a cease-and-desist order requiring it to make further product changes by late June. If the firm fails to comply, the Commission can fine it for every additional day it is in breach of the law.
[…]
Finally, the Commission opted to escalate its enforcement effort against Apple’s app store, issuing the iPhone-maker with a charge sheet concerning its dealings with alternative app marketplaces. These preliminary findings still need to be investigated further but could mean more DMA fines for Apple down the line.
John Gruber:
Apple booked about $184B in profit last year, so this fine is about 0.3% of that. Maybe Apple just considers this the new cost of doing business in the EU? […] Something, not nothing, but definitely not a big deal. Teresa Ribera, the EC competition chief, is clearly trying to thread a political needle here.
Previously:
Antitrust App Marketplaces App Store Apple Digital Markets Act (DMA) European Union Lawsuit Legal Meta Sideloading
David McCabe (PDF, via Hacker News):
Judge Leonie Brinkema of the U.S. District Court for the Eastern District of Virginia said in aruling that Google had broken the law to build its dominance over the largely invisible system of technology that places advertisements on pages across the web. The Justice Department and a group of states had sued Google, arguing that its monopoly in ad technology allowed the company to charge higher prices and take a bigger portion of each sale.
Remedies have not been announced yet.
Juli Clover:
Publishers that wanted to use Google’s ad exchange were also required to use its ad server, which disadvantaged competing platforms. Google’s “First Look” feature gave its ad exchange the first right of refusal for impressions, and “Last Look” let its platform assess bids from competitors before making its own bid.
Google later rolled out Unified Pricing Rules limiting the pricing strategies that publishers used to reduce dependence on Google ads and screen out low-quality content, which the court says favored Google’s ad tech growth while harming rival ad tech products.
Juli Clover:
OpenAI would consider purchasing the Chrome browser if Google is forced to sell it as a remedy for anticompetitive search practices, ChatGPT product lead Nick Turley said today.
Previously:
Advertising AdWords Antitrust Business Department of Justice (DOJ) Google Google Chrome Lawsuit Legal OpenAI
Tuesday, April 22, 2025
Nora Deligter:
It was around this time when streaming platforms like Netflix, HBO Max, Amazon Prime, and the Criterion Channel imposed a quiet embargo on the screenshot. At first, there were workarounds: users could continue to screenshot by using the browser Brave or by downloading extensions or third-party tools like Fireshot. But gradually, the digital-rights-management tech adapted and became more sophisticated. Today, it is nearly impossible to take a screenshot from the most popular streaming services, at least not on a Macintosh computer.
The shift occurred without remark or notice to subscribers, and there’s no clear explanation as to why or what spurred the change. When asked to comment for this article, HBO claimed never to have supported the taking of screenshots and denied there had been a recent shift, while Criterion declined to comment entirely. This obfuscation raises many questions. On the one hand, if we were never entitled to screenshot, why did we have tacit permission for so long? And what do the consequences of such a policy shift look like legally, culturally, and emotionally?
[…]
The ability to reappropriate an image (and then distribute it) has long been a topic of fervent debate in the art world, surfacing again and again as a question of controversy and litigation. One such case, Andy Warhol Foundation v. Goldsmith, recently made its way to the Supreme Court. The photographer Lynn Goldsmith sued the Warhol Foundation for reappropriating an image she’d taken of the musician Prince in 1981. The Warhol Foundation argued that the resulting image was transformative rather than derivative, ill-defined terms in the fair-use doctrine that compels judges to rule subjectively on what can and should be considered art and what can’t and shouldn’t be. In the course of this case, the very definition of fair use was reconsidered. Last week, the Supreme Court concluded the case with a 7-2 decision in favor of Goldsmith, ruling that Warhol’s prints were in fact an infringement of the photographer’s copyright. Justice Elena Kagen, a member of the minority, voiced her dissent: “It will stifle creativity of every sort. It will impede new art and music and literature. It will thwart the expression of new ideas and the attainment of new knowledge. It will make our world poorer.”
But, reappropriation aside, we’ve also lost the ability to take screenshots and not distribute them. Surely that’s fair use. And, anyway, it shouldn’t be for the platform vendor to determine. This is the equivalent of preventing you from selecting potentially copyrighted text and copying it to the clipboard, which works pretty much everywhere except in the Mac App Store.
Via John Gruber (Hacker News):
I’m not entirely sure what the technical answer to this is, but on MacOS, it seemingly involves the GPU and video decoding hardware. These DRM blackouts happen at such a low level that no high-level software — any sort of utility you might install — can route around them. I think Windows still offers easy screenshotting of frames from DRM video not because the streaming services somehow don’t care about what Windows users do (which, when you think about it, would be a weird thing not to care about, given Windows’s market share), but because Windows uses a less sophisticated imaging pipeline. Or perhaps rather than less sophisticated, it’s more accurate to say less integrated. These DRM blackouts on Apple devices (you can’t capture screenshots from DRM video on iPhones or iPads either) are enabled through the deep integration between the OS and the hardware, thus enabling the blackouts to be imposed at the hardware level. And I don’t think the streaming services opt into this screenshot prohibition other than by “protecting” their video with DRM in the first place. If a video is DRM-protected, you can’t screenshot it; if it’s not, you can.
[…]
What I don’t understand is why Apple bothered supporting this in the first place for hardware-accelerated video (which is all video on iOS platforms — there is no workaround like using Chrome with hardware acceleration disabled on iPhone or iPad). No one is going to create bootleg copies of DRM-protected video one screenshotted still frame at a time — and even if they tried, they’d be capturing only the images, not the sound. And it’s not like this “feature” in MacOS and iOS has put an end to bootlegging DRM-protected video content. This “feature” accomplishes nothing of value for anyone, including the streaming services, but imposes a massive (and for most people, confusing and frustrating) hindrance on honest people[…]
Copyright DRM iOS iOS 18 Mac Mac App Store macOS 15 Sequoia Screenshots Video
Matthias Gansrigler:
I have a new app out that lets you sweep things under the rug – virtually: DeskMat for Mac.
With DeskMat, you cover the mess of files and folders on your Desktop with a single click – and show them again in just the same way.
It makes for clean streams, screen sharing, and distraction-free work!
Matthias Gansrigler:
By default, it shows a button on your screens’ Desktops that you can click to toggle the Desktop cover. But you can also move it to your menu bar, use a keyboard shortcut, or have it trigger automatically.
[…]
DeskMat can automatically cover your Desktops when specific apps are running, or come to the foreground.
[…]
DeskMat can automatically cover your Desktops when you activate specific Focus modes.
Matthias Gansrigler:
This is a little behind-the-scenes recap of the app’s inception.
[…]
Now, there’s this “neat” API on macOS that, on first glance, appears to be made for this: NSWorkspace.shared.desktopImageURL(for: )
.
But it’s completely useless.
Maybe it actually worked for a short while after its introduction with macOS 10.6, but it’s obvious nobody at Apple ever took another glance at it again after that, ever.
Instead of returning the URL to the currently used wallpaper image file, it sometimes returns the wrong image file, or a URL to the folder containing the image file… I just couldn’t get it to work reliably – especially when a dynamic wallpaper, or a shuffling wallpaper is set, it just straight out poops its pants.
Cocoa DeskMat Focus Mac Mac App macOS 15 Sequoia Screenshots
Jason Snell:
Some people, whether you’re in the media or software development or technical support, take and publish a lot of device screenshots. And while an image straight from an iPhone or Apple Watch looks fine, it often looks much better to be put in context by including the device it’s running on as a frame.
I think this is way overdone, but it does make sense when mixing screenshots from different types of devices.
Apple Frames is great, but it ran into a lot of limitations simply because it was a shortcut and not a full app. Fortunately, two new standalone apps take what Apple Frames accomplished to the next level. Framous is a Mac app from the developer of Dark Noise, and ShareShot is a Mac/iPad/iPhone/visionOS app from Montana Floss Co. Both apps let you control which device (right down to the color) is used as a frame, and each have their strengths and weaknesses.
[…]
Framous is much more limited—it only outputs on a transparent background and it only runs on the Mac—but it can compose multiple screenshots into a single image. I was able to drag in screen shots from an iPhone, iPad, and Apple Watch into a single canvas, and Framous automatically detected the device and added a proper frame to each one.
John Gruber:
I love it. So many little details. You can just drop a screenshot in and copy a framed version out with zero fuss, but there are also all sorts of tweaks and adjustments you can make, right down to choosing which shade of titanium to color your specific iPhone Pro model.
Framous Mac Mac App macOS 15 Sequoia Screenshots Shareshot
Jesse Squires:
Meeting the requirements for screenshots is a frustrating experience. On iOS, tooling like SimulatorStatusMagic, Nine41, and fastlane snapshot help make the process easier. However, on macOS there is much less support (and, sadly, demand) for automated tooling — so you are kind of on your own to figure it out. I spent some time recently solving this process for myself. I want to share how I have managed to automate perfect screenshots for the Mac App Store.
[…]
As of Xcode 9, Xcode UITest allows you to capture screenshots during tests. This is the API that fastlane uses under-the-hood for iOS. Again, because fastlane is not an option for macOS, you can implement this yourself. Xcode makes this process rather simple and easy. Here’s a helper method that saves a screenshot.
[…]
The screenshots from XCUITest have ugly artifacts in the window corners. They are not correctly cropped and clipped with a transparent background, like when you take a screenshot via the built-in functionality in macOS.
[…]
Using Retrobatch, I created a workflow to round the corners. Through trial and error, I arrived at a corner radius of 24 points.
Mac Mac App Store macOS 15 Sequoia Retrobatch Screenshots Xcode
Monday, April 21, 2025
Juli Clover (release notes, security, enterprise, no developer, full installer, IPSW):
According to Apple’s release notes, macOS Sequoia 15.4.1 includes important bug fixes and security updates, and is recommended for all users.
The enterprise release notes include the tantalizing line, “Improves reliability when installing macOS updates,” but it’s not clear whether that refers to any of the recent issues I’ve had.
See also: Mr. Macintosh and Howard Oakley.
Lee Mendoza:
macOS 15.4.1 does not resolve the issue preventing users with home directories that are not on the boot volume from logging in when System Integrity Protection (SIP) is enabled.
Ric Ford:
The macOS 15.4.1 update enabled automatic updates without notification or permission here, so you may have to manually disable it again in Settings > General > Software Update > Automatic Updates if that’s your personal preference, too.
It did not do this on my Mac.
Francisco Tolmasky:
You know what I never want? For macOS to FUCK WITH MY SETTINGS on point updates. STOP TURNING ON MY BLUETOOTH AND WIFI FOR YOUR BRAINDEAD POINT UPDATES.
Previously:
Bluetooth Dark Patterns Mac macOS 15 Sequoia macOS Release Software Update Wi-Fi
Juli Clover (iOS/iPadOS release notes, security, no enterprise, no developer):
There have been complaints about issues with CarPlay and deleted apps being restored, and iOS 18.4.1 includes several bug fixes. According to Apple’s release notes, the update includes bug fixes and security updates.
Juli Clover:
According to Apple, it is aware of reports that these vulnerabilities may have been actively exploited in the wild. Apple says that the security flaws were potentially used in an “extremely sophisticated attack against specific targeted individuals.”
One of the issues impacts CoreAudio, and involves a maliciously crafted audio file. Processing the audio stream in the media file could result in code execution. Apple fixed the memory corruption issue with improved bounds checking.
The other vulnerability affected pointer authentication code, and an attacker with arbitrary read and write capability could bypass the Pointer Authentication features that prevent memory from being tampered with. Apple removed the vulnerable code to prevent the exploit from working.
CVE-2025-31201 sounds like a different PAC issue than the one I mentioned last week.
Joe Rossignol:
If you have been experiencing issues with wireless CarPlay in your vehicle lately, it was likely due to a software bug that has now been fixed.
Previously:
CarPlay iOS iOS 18 iOS Release iPadOS iPadOS 18 iPadOS Release
Juli Clover (release notes, security, no developer):
Apple today released tvOS 18.4.1, a minor update to the tvOS 18 operating system that came out last September.
It fixes the same security bugs as iOS 18.4.1.
Previously:
tvOS tvOS 18 tvOS Release
Apple:
This update includes performance and stability improvements.
Previously:
audioOS audioOS 18 audioOS Release
Juli Clover (release notes, security, no developer, no enterprise):
According to Apple’s release notes, visionOS 2.4.1 includes bug fixes and security updates, and the software is recommended for all users.
Previously:
visionOS visionOS 2 visionOS Release
Friday, April 18, 2025
Randy Parker (via TidBITS-Talk):
For longer replies in Messages, I would often compose my message on my computer, email it to myself, and then copy and paste it from the Mail app on my iPhone into the Messages app.
As a Windows user, I’d have to live with this frustration indefinitely unless I considered one of the following options[…]
[…]
While looking for Mac video tutorials, I discovered another invaluable resource: Gary Rosenzweig’s MacMost YouTube channel. Rosenzweig’s polished and professional tutorials cover topics from the most basic to the most obscure (not only about macOS but also about iOS and more).
[…]
Much as I feared, the [Photoshop Elements] data migration didn’t go smoothly. The program’s backup and restore method failed. Instead, I had to experiment with manually copying over my catalog and photos and then converting the catalog format from 2022 to 2025. Eventually, I stumbled on a sequence of steps where everything migrated correctly.
[…]
I have absolutely no regrets about finally making the switch back to Mac. In fact, I quickly came to prefer the macOS user experience over Windows.
One big reason: the user interface congruity between macOS, iOS, and iPadOS.
Previously:
BusyCal ChatGPT Mac macOS 15 Sequoia Messages.app Moom Photoshop Elements Windows
Jeffrey Starr (via Stephen Hackett):
One of two launch applications for the Apple Macintosh in 1984, MacPaint is emblematic of the Macintosh’s early quirky revolutionary branding, focus on ease of use, and appeal to artistic customers. Using the source code, we examine the design and implementation of the application. We find that the buffer management and bucket filling algorithms demonstrate mechanical empathy with the 68k platform and leverage the limitations of the domain as a means to improve performance. We also find positive and negative aspects in the code style and architecture and its pliability for change. Finally, we dispute some claimed novel aspects of the program while also arguing for its significance and impact on the development of digital graphic systems.
[…]
Atkinson took Polaroids of the user interface as it evolved and drove into work to share them with the team. Fortunately for posterity, Atkinson saved the Polaroids and we have a detailed visual history of the evolution of the Lisa interface and QuickDraw capabilities as shown in the 2022 CHM interview below.
[…]
The Macintosh team used the ‘Monkey’ as a durability and robustness test mechanism. Developed by Steve Capps, the Monkey would randomly type keys, move objects, and interact with menus (Atkinson 2010, pg 14-15). The team used a computer running in Monkey mode to effectively stress-test an application. MacPaint was able to survive two weeks without crashing.
[…]
Performance-critical code, such as that which manipulates the buffers directly, is in assembly. User interface control logic is in Pascal, as well as code that handles initial setup or rare operations. Operating system calls, such as checking the amount of spare space in the disk drive or invoking the system beep, are in assembly.
Bill Atkinson:
I am asking friends and well-wishers to pray for me.
I believe that group intention can actually make a difference.
On October first, I was diagnosed with pancreatic cancer. Because of vascular involvement, surgery is not possible. I am taking weekly chemo treatments to shrink the tumor before surgical resection.
Previously:
Assembly Language Bill Atkinson History Mac MacPaint Pascal Programming QuickDraw
Doug Brown (via Uli Kusterer):
This is the story of how Apple made a mistake in the ROM of the Macintosh Classic II that probably should have prevented it from booting, but instead, miraculously, its Motorola MC68030 CPU accidentally prevented a crash and saved the day by executing an undefined instruction.
[…]
I didn’t get very far while testing the command+power shortcut in MAME’s emulated Classic II, because I observed something very odd. It booted up totally fine in 24-bit addressing mode, but I could not get it to boot at all if I enabled 32-bit addressing, which I needed in order for MacsBug to load. It would just pop up a Sad Mac, complete with the Chimes of Death.
[…]
This meant the bus error handler was at 0x40A026F0, which is also known as GenExcps in the ROM map. I performed a hard reset of the emulated machine, set a breakpoint on that address, and then waited until it hit the breakpoint. It looks like GenExcps is a big list of BSR instructions that all jump to 0x40A026A0, which is common error handling code identified in the ROM map as ToDeepShit. Nice name, Apple!
[…]
If you look closely at the table of branches below the JMP instruction at 0x40A43B6E, there are only 16 entries in the table, corresponding to BoxFlags 0 through 15. The Classic II is BoxFlag 17!
So it jumped into the middle of an instruction.
The MAME-emulated Classic II was crashing because A1 didn’t change, so it still contained an invalid address. On hardware, this weird instruction, which several disassemblers refused to touch, and wasn’t even intended to be jumped to because it starts in the middle of an actual valid instruction, was changing A1 to a new value that was a good address. Was this crazy instruction accidentally fixing A1 and thus hiding a bug from Apple’s ROM developers in the early 1990s?
This is just an amazing story and writeup.
680x0 Assembly Language Debugging Emulator Mac
Thursday, April 17, 2025
Samuel Giddins:
After months of painstaking work, we’ve got our apps building, and most of our tests building,
and almost most of them passing.
Except for some tests that use test fixtures. And assert that those test fixtures get deallocated.
And they passed in Xcode. And failed when run via Bazel.
[…]
However, due to the way the stack protector works (by adding instructions at the start and end of function), they can interfere with a call to objc_autoreleaseReturnValue
being able to see it’s matching call to objc_retainAutoreleaseReturnValue
, and then [object autorelease]
will actually have to do an autorelease. Which means that the object will go into the autoreleasepool. And it won’t be deallocated until that pool drains. And XCTestCase
’s -setUp
and -tearDown
methods happen inside the same autoreleasepool.
[…]
What made this bug so fun (and infuriating) to investigate was that it sat at the intersection of a bunch of different moving pieces.
Our code was technically wrong (relying on performance optimizations in the runtime isn’t especially safe).
Bazel did something incredibly unexpected (passing -fstack-protector
when I didn’t ask it to).
The Objective-C runtime has a performance optimization that does more than optimize (this is valid code under ARC, and yet it’s behavior is different from what ARC’s semantics say it should be).
And, finally, clang allows me to pass a compiler option that changes observable behavior, without documenting that it can do more than catch a small set of bugs.
Previously:
Automatic Reference Counting (ARC) Bug Compiler Memory Management Objective-C Objective-C Runtime Optimization Programming Testing
Nelson Elhage (via Hacker News):
Unfortunately, as I will document in this post, these impressive performance gains turned out to be primarily due to inadvertently working around a regression in LLVM 19. When benchmarked against a better baseline (such GCC, clang-18, or LLVM 19 with certain tuning flags), the performance gain drops to 1-5% or so depending on the exact setup.
[…]
Historically, the optimization of replicating the bytecode dispatch into each opcode has been cited to speed up interpreters anywhere from 20% to 100%. However, on modern processors with improved branch predictors, more recent work finds a much smaller speedup, on the order of 2-4%.
[…]
Still, nix
was clearly enormously helpful here, and on net it definitely made this kind of multi-version exploration and debugging much saner than any other approach I can imagine.
Bug Compiler LLVM Optimization Programming Python
Jeff Johnson:
As far as I can tell, the confusingly named Aurora PostgreSQL is not actually PostgreSQL but rather an Amazon-specific database designed with one overriding goal: to be infinitely more expensive than PostgreSQL, which is free. In any case, the AWS Free Tier details give the impression to unsuspecting new users that PostgreSQL is free, without making an explicit distinction between true PostgreSQL and Amazon’s faux PostgreSQL.
The worst part is that when you enable Aurora PostgreSQL on the free tier, which I apparently did without knowing exactly what Aurora meant, Amazon does not warn you that you’re about to be charged an obscene amount of money. And I didn’t even use the database, as far as I know.
[…]
The AWS documentation is, in a word, massive, just as AWS itself is massive. I would also suggest that there’s something very wrong with an internet service if you have to wade through the fine print of the service’s massive documentation just to discover that you can suddenly and silently incur a cost of hundreds of dollars per month for a feature on a specific tier advertised by the service as free.
This post is from last year, but I came across it while going through some old drafts, and it still sounds like something to be aware of.
Previously:
Amazon Web Services Dark Patterns Database Documentation PostgreSQL Web Web API
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:
Update (2025-04-22): Rosyna Keller:
Except images. They still can’t beat ChatGPT’s new image generation tool. Especially when it comes to text.
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:
Update (2025-04-22): Emma Roth:
Google appears to have faked AI output in a commercial set to run during the Super Bowl. The ad shows a business owner using Gemini to write a website description, but the text portrayed as generated by AI has been available on the business’s website since at least August 2020, as shown on this archived webpage.
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:
Update (2025-04-21): Atilla:
The screensaver is currently unavailable.
Since it’s based on the Max Bill watch dial, I’ve taken it offline to clarify design rights and avoid any IP issues.
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.
Update (2025-04-22): Majid Jabrayilov:
In our example, we run the performing function inside the closure that overrides the task local value and set the environment to the mocked instance. This technique allows us to run the test suite or test function and provide it with a mocked environment.
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.
Update (2025-04-21): Tom Lokhorst (Mastodon):
When switching from Xcode 16.2 (Swift 6.0) to Xcode 16.3 (Swift 6.1), I suddenly got a bunch of crashes in a Mac app.
It’s related to try await as [Any?]
.
Update (2025-04-22): Foxy:
Xcode 16.3 has some serious issues with the Preview.
When it actually works, it doesn’t remember the Preview window/pane’s size. So you have to reset it all day long.”
But half the time Preview fails anyway, on even the simplest “Hello World” example.
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