Archive for April 30, 2024

Tuesday, April 30, 2024

Ive Drives Icons

Louie Mantia (Mastodon):

It’s been 15 years since the original and 12 years since the sequel. Volume 3 contains a staggering 125 hard drive icons, comprising of 25 metal colors (most—if not all—of Apple’s modern product colors), with 5 varieties of each.

Beautiful external drive icons up to 1,024×1,024.

I’m not sure whether there’s a better way, but if you open the .icns file in Preview, you can Select All and Copy. Then if you Get Info on the drive and Paste it seems to apply all the image representations to the .VolumeIcon.icns file that it creates.

iPadOS Also a Digital Gatekeeper in EU

Tim Hardwick (Hacker News):

EU antitrust officials on Monday identified iPadOS, Apple’s operating system for iPads, as a significant digital gatekeeper under the EU’s new tech regulations, which carry strict requirements that aim to promote fair competition and expand options for consumers.

[…]

“Apple’s business user numbers exceeded the quantitative threshold elevenfold, while its end user numbers were close to the threshold and are predicted to rise in the near future.”

[…]

The Commission has now given Apple a six-month deadline to fully comply with the obligations set by the Digital Markets Act (DMA), which means we should expect enforced changes in iOS like alternative app marketplaces, web distribution, and alternative browsers to come to iPadOS as well in a forthcoming update.

John Gruber:

The “lock-in” is basically just features exclusive to Apple’s own platforms. I’m not even sure how Apple could possibly create a platform without “lock-in”.

On the other hand, iPadOS is clearly more of a marketing distinction than a technical one. It’s iOS under the hood, so I doubt it’ll be much trouble for Apple to apply its DMA compliance features from iOS to iPadOS. I would have been surprised if the EC had not decided to designate iPadOS a “gatekeeping” platform, and I’m guessing Apple itself is unsurprised as well.

See also: Jeff Johnson.

Previously:

Swift Proposal: Synchronous Mutual Exclusion Lock

SE-0433:

Not all code may be able (or want) to adopt actors. Reasons for this can be very varied, for example code may have to execute synchronously without any potential for other tasks interleaving with it. Or the async effect introduced on methods may prevent legacy code which cannot use Swift Concurrency from interacting with the protected state.

[…]

We propose a new type in the Standard Library Synchronization module: Mutex. This type will be a wrapper over a platform-specific mutex primitive, along with a user-defined mutable state to protect.

[…]

Mutex will be decorated with the @_staticExclusiveOnly attribute, meaning you will not be able to declare a variable of type Mutex as var. These are the same restrictions imposed on the recently accepted Atomic and AtomicLazyReference types. […] We do not want to introduce dynamic exclusivity checking when accessing a value of Mutex as a class stored property for instance.

[…]

Mutex is unconditionally Sendable regardless of the value it's protecting. We can ensure the safetyness of this value due to the transferring marked parameters of both the initializer and the closure inout argument.

On Apple platforms, this is based on os_unfair_lock, which is a bit tricky to directly use from Swift because you have to manage the memory for the lock yourself to prevent Swift from moving it. macOS 13 brought OSAllocatedUnfairLock, which is Apple’s implementation that handles this for you. Mutex is better still because it doesn’t need to allocate a separate block of memory for the lock.

Gwendal Roué:

My experience with Swift Concurrency might be somewhat particular.

[…]

And I’m not sure I’ll replace DispatchQueues with any Swift concurrency constructs any time soon, because a demanding user of SQLite won’t accept to be limited to strictly serialized accesses. SQLite supports concurrent database accesses, including parallel reads and writes. Indeed databases support concurrency in a way that is almost never found in any memory-based synchronization primitive: actors, mutexes, read-write locks are all too limited.

Final nail in the coffin: a demanding SQLite user expects to be able to perform synchronous database accesses at will (i.e. when needed) – just like the regular C API – without any risk of concurrency bugs. There’s currently no Swift concurrency construct that allows both sync and async accesses.

Kyle Howells:

I can’t help feeling Swift’s async, Actor, isolation system is a mistake.

Rather than making the safe thing the default, even if a bit slow, and making a slightly awkward API for a “fast mode” it makes most code think about async isolation most of the time.

Previously:

Losing Screen Time Settings

Craig Grannell:

Needed to turn off Screen Time temporarily. Apple: “bollocks to you, then”. Infers the set-up is wiped and has me start from scratch. I go through the set-up, and it merges the new one with what was already there. But the block set-ups have been randomly wiped.

[…]

It’s astonishing that this is the way things work. Because you cannot sign out a child’s device from iCloud without first disabling Screen Time. Which means when you sign that device back in, Screen Time is off and you have to set it up again.

That’s mad. It also suggests sufficiently senior people at Apple don’t have kids, don’t look after their kids, or don’t care about how much screen time their kids have on Apple devices.

And, kids aside, it’s sometimes necessary to sign out of iCloud for troubleshooting purposes. This should not discard any data.

My understanding is that the Mac version of Screen Time still counts time for apps that are in the background. I guess that makes sense in that otherwise it would be trivial to work around the limits for certain apps. But it makes the reports not very informative. Were you spending hours texting? Or did you leave a Messages window open because interacting with Messages notifications doesn’t work very well and you don’t want to keep quitting and relaunching the app?

Previously:

Update (2024-05-01): Kaveh:

Screen Time, and especially the use case of Screen Time with your kids, is woefully inadequate and buggy to boot. So much light needs to be shined on this spot because I’m convinced that Apple doesn’t care enough to fix it.

Simple use case: block an app with a time limit of 0 minutes (so you can unlock it for kid later). Most Apple reps intuitively tell me you can and proceed to try to show me how to do it, only to remove their own foot from their mouth in about 10 minutes.

Table-stakes type parental controls just aren’t well thought out nor are they robust.

Jesse Squires:

this happened to me when upgrading to a new iPhone. I did the direct device-to-device transfer. For some reason ScreenTime settings were lost.

It took me weeks to notice, and then I learned that app time limits really do help me limit my time.

Update (2024-05-03): Cory Birdsong:

it’s also incredible that Screen Time just straight up doesn’t exist on tvOS.

Craig Grannell:

Too often, the result is a stalemate, with me wanting my kid to stop on the iPad nicely (or risk not having it the next day), and her figuring out the absolute limit of what she can get away with. (For the record: she is a fantastic kid and very well behaved on the whole, but she is also a kid. Any parent reading will know exactly what I mean.) And there have been times when I’ve just had to yank the iPad away.

A lot of this could be resolved with a remote off switch that can be activated immediately, when a line is crossed. Ideally, this would be presented in Screen Time as a massive red button. The Nintendo Switch has this (well, the remote off switch – not the red button), but Apple has determined one is not needed. It really is.

Update (2024-05-07): Josh Hrach:

Screen Time is terrible. I have it enabled to keep my kids safe. But it also ignores the actual settings, especially to allow my son to play multiplayer games. So he can’t even play games with our family because the content restrictions are broken. Been dealing with this for 3 years (with multiple radars filed and hours spent talking to senior advisors).

Hearing for Apple Violating Epic’s Injunction

games fray (PDF, via Michael Love):

Judge Yvonne Gonzalez Rogers of the United States District Court for the Northern District of California, who presided over the 2021 Epic v. Apple trial and made the ruling in question, has now reached the preliminary conclusion that Apple is presently out of compliance with the injunction, which could (if not resolved) result in contempt-of-court sanctions. Instead of holding only a short hearing on the matter which was scheduled for April 30, 2024, Judge Gonzalez Rogers has now scheduled a three-day evidentiary hearing for May 8, 10 and 17 in Oakland, California.

[…]

The hearing will serve the purpose of looking at what requirements Apple imposes on app makers, such as by looking at the sequence and appearance of on-screen messages and required user interface actions, and to discuss the commission Apple imposes on purchases made within seven days of clicking on an in-app link. It is possible that Apple will make some adjustments, but at this point the most likely next step is that Judge Gonzalez Rogers will, with or without further measures taken by Apple, hold Apple in civil contempt, and Apple will appeal her decision to the Ninth Circuit.

[…]

“[…] the Court FINDS that Epic Games has made a sufficient preliminary showing that, viewed holistically, Apple’s practice changes undermine the spirit of the injunction by limiting competition, impeding the free flow of information, and constraining user choice.”

Previously:

Update (2024-05-08): Michael Love:

Apple has gotten a total of 38 applications for external link entitlements since January.

[…]

Some pushback from judge on the fact that this is a hyperlink with a website URL and Apple is nevertheless insisting on putting up an alert about it.

[…]

Apple also insisting that nobody reading the screen is going to think that Apple is warning that outside purchases are less safe, which the judge is exceedingly skeptical of.

[…]

And now we’re juxtaposing the Apple HIGs with the requirement that the external purchase link be a meek little un-bordered button, which is great fun.

Judge asking for a logical reason why external purchase link buttons should be less prominent and App Store head can’t think of one.

Also, she keeps asking about discussions and he has to ‘not remember’ because he can’t admit that he was sitting in a meeting where they decided to do this deliberately and yet also is steering clear of perjuring himself.

Update (2024-05-10): Sarah Jeong (Hacker News):

But this interjection, from Judge Rogers, doesn’t look good for Apple:

I can’t imagine a logical reason why Apple would demand that of competitor apps. What’s a logical competitive reason, not for suggesting it, but demanding it? … Other than to stifle competition, I see no other answer. Can you give me one?

Update (2024-05-15): Matt Stoller:

This twitter thread has some of the blow-by-blows, but the gist is that Apple executives sat in court and pretty much told the judge that they were trying to flout her order and maintain their business model. And she wasn’t having it. For instance, at one point she asked a key Apple witness, “Where in the injunction did I say you could add all sorts of requirements?” At other points she near accused Apple witnesses of lying, and said a number of times that if a witness couldn’t explain why Apple was doing what it was doing, she would assume it was to prevent or minimize competition.

That said, it’s not clear what she’s going to do. She could rule for Apple, which seems unlikely. She could rule for Epic Games, but allow Apple to continue charging 27%, which would be a win for Apple. Or she could say that Apple doesn’t get to charge and has to allow links without encumbrances. That would be a multi-billion dollar annual loss of revenue, largely due to arrogance.

Google Lays Off Python Team

Sarah Perez (Reddit):

Ahead of Google’s annual I/O developer conference in May, the tech giant has laid off staff across key teams like Flutter, Dart, Python and others, according to reports from affected employees shared on social media.

zem:

in addition to contributing to upstream python, we

  • maintained a stable version of python within google, and made sure that everything in the monorepo worked with it. in my time on the team we moved from 2.7 to 3.6, then incrementally to 3.11, each update taking months to over a year because the rule at google is if you check any code in, you are responsible for every single breakage it causes
  • maintained tools to keep thousands of third party packages constantly updated from their open source versions, with patch queues for the ones that needed google-specific changes
  • had highly customised versions of tools like pylint and black, targeted to google’s style guide and overall codebase

[…]

we also acted as a help desk of sorts for python users at google, helping troubleshoot tricky issues, and point newcomers in the right direction. plus we worked with a lot of other teams, including the machine learning and AI teams, the colaboratory and IDE teams, teams like protobuf that integrated with and generated python bindings, teams like google cloud who wanted to offer python runtimes to their customers, teams like youtube who had an unusually large system built in python and needed to do extraordinary things to keep it performant and maintainable.

It seems like important work and that this team’s experience will be hard to replace.

HT News Desk (via Hacker News):

The company plans to set up a new team in Munich, Germany which would act as “cheaper” labour, the report claimed.

[…]

The US Python team reportedly had less than ten members and managed most parts of Google’s Python ecosystem, stability of Python at Google, updated with thousands of third-party packages and developed a type-checker.

Thomas Wouters (via Hacker News):

It’s a tough day when everyone you work with directly, including your manager, is laid off -- excuse me, “had their roles reduced”, and you’re asked to onboard their replacements, people told to take those very same roles just in a different country who are not any happier about it.

Previously:

Update (2024-05-03): Jennifer Elias (via Hacker News):

Just ahead of its blowout first-quarter earnings report on April 25, Google laid off at least 200 employees from its “Core” teams, in a reorganization that will include moving some roles to India and Mexico, CNBC has learned.

The Core unit is responsible for building the technical foundation behind the company’s flagship products and for protecting users’ online safety, according to Google’s website. Core teams include key technical units from information technology, its Python developer team, technical infrastructure, security foundation, app platforms, core developers, and various engineering roles.

Dare Obasanjo:

Treating core IT infrastructure teams as a cost center you outsource to cheaper countries is what you expect from IBM or a dying bricks and mortar business not a big tech that made $23.6 billion in profit last quarter

John Nack:

That was the final resting place of the staff of Nik Software, a $200m+ acquisition of world-class imaging talent that Google relocated (specifically to induce attrition) and then reassigned to <checks notes> Roomcycler. 😑🔫