Archive for February 2024

Thursday, February 29, 2024

FineWoven iPhone Cases and Watch Bands

Stephen Robles:

Hands-on with Apple’s new FineWoven iPhone 15 Pro Max case in Taupe and Cypress Green Silicone Case! Apple’s announced at the Wonderlust event that it will no longer make any leather products, with FineWoven replacing the higher end material.

John Gruber:

I spent time in the hands-on area playing with both the new phone cases and watch straps, and I like the FineWoven material. The keynote emphasized only the ethical angles, vis-à-vis leather: carbon impact and animal rights. But for the iPhone cases at least, I think FineWoven is just plain nicer than the old leather ones. I personally like nice leather goods, but I always felt like the leather Apple used to produce iPhone cases was, at best, OK. In particular I don’t think it weathered well, and I have never been a heavy user of iPhone cases, generally carrying mine un-cased. Put all the ethical issues aside and pretend that Apple were still selling leather iPhone cases alongside these new FineWoven ones, and I’d rather buy a FineWoven one. I’m not entirely sold on the FineWoven Apple Watch straps based on my hands-on experience, but at worst, they seem pretty nice.

[…]

Pre-orders for the new cases have already begun arriving, and reactions to the new material are mixed. I’m curious how it’s going to weather over time, especially the watch straps, but my first impression is that this is a quality upgrade over Apple’s leather products, not just an ethical one. I don’t think the FineWoven material is nicer than fine leather, but I do think it’s nicer than the leather iPhone cases Apple made, and perhaps on par with their own previous leather watch straps. And one thing that it’s not is faux leather. As Jony Ive might describe it if he were still at Apple, it’s unapologetically fabric.

Allison Johnson:

Folks, what you’ve heard so far is true. Apple’s new FineWoven iPhone cases and accessories are bad. Like, really bad. I’ve been puzzling over them for the past week, looking at them from different angles. Picking them up, setting them down, petting them. Seven days later, I still can’t make sense of them and have no other choice but to say it out loud: FineWoven is very bad.

[…]

FineWoven is very much not the premium material that leather is. When I popped the MagSafe wallet out of its box, I could clearly see some places where it was already showing wear along the edges. Little bits of lint immediately caught on the fabric, too. And then there’s the fingernail test.

John Gruber:

One fingernail scratched across one of Apple’s leather cases or wallets will leave a permanent mark too. Perhaps it’s the case that such wear looks good on leather but bad on FineWoven.

Judging from my inbox, third-party leather case makers are very excited about Apple’s decision no longer to use it.

Eric Schwarz:

I think Apple needs to be called out for these, not because some folks preferred leather, but because these cases aren’t going to hold up. I ordered one alongside a new iPhone and the case arrived Monday. While I kind of liked the feel of it, just removing it from the box led to a permanent scratch on the inside from the cardboard. I initiated the return process almost immediately, giving that the record of the shortest time I had an Apple product in my possession.

Matt Birchler:

To each their own, but I find this change to be quite un-Apple-like. Usually when Apple makes a change for moral or legal reasons, they come out with something better than before and make it look like an upgrade that just made sense.

Tim Hardwick:

The quality of the iPhone cases in particular seems to have riled some customers, with several MacRumors forum members stating they have returned the cases. “After holding it in person”, said poster inducecurrent, “it feels more like a $10 cheapo case from Amazon rather than Apple-quality, especially at this price point.”

“Received and returned,” said another forum member. “Felt cheap almost like cardboard.” EvanEiga replied: “The case itself is nice IMO, but I’m not sure if the premium cost is worth it. Leather cases felt so much nicer. I am all for mother nature but when it comes to bang for the buck, FineWoven case is just subpar.” Most respondents to a MacRumors forum poll thus far seemed to agree.

Positive customer reactions are just as hard to find on Twitter (X). “I’ve been using Apple’s cases for my phones since the iPhone 7,” said X user @eggbutspam, “but I’ve never returned a case so fast like I did with the FineWoven case I preordered last Friday. FineWoven looks like absolute trash.”

Juli Clover:

Given the criticism of the FineWoven case, teardown site iFixit obtained one of the accessories and decided to take it apart to get a closer look.

Using a digital microscope, iFixit viewed the FineWoven fabric at 52x and 490x magnification, confirming that it is indeed made up of bundles of tightly woven fibers. Each fiber is much smaller than a strand of hair, measuring in at about six microns thick.

Groups of the individual fibers make up threads that are around 150 microns thick, and iFixit says the microtwill material that Apple is using is not too far off from high-end jackets from companies like Patagonia and Arc’teryx.

When the FineWoven fabric is scratched, the fibers don’t break, but the scratch does cause the affected fibers to reflect light irregularly, which means there’s a visual mark. The softness of the material also means that items in the pocket with the case can leave an indentation.

Joe Rossignol:

In a 512 Pixels blog post on Sunday, Relay FM co-founder Stephen Hackett shared a photo of his FineWoven case with a misaligned USB-C port cutout, resulting in the pentalobe screw on the right side of the USB-C port being partially exposed.

[…]

In addition, Parker Ortolani and MacRumors editor Hartley Charlton shared photos of FineWoven cases with visible damage on display at Apple Stores. An anonymous, alleged Apple Store employee mentioned likewise in a post on X, formerly Twitter.

Chance Miller:

Apple’s new FineWoven cases for iPhone 15 are a huge swing and miss. They suck. Apple should remove them from sale and refund everyone who’s already bought one. You could pretty much stop reading the story at this point, but I’ll offer a few pieces of supporting evidence for my claims.

Basic Apple Guy:

The $59 price tag (equal to Apple’s leather cases) was also scorned. Leather is a known quantity, and Apple’s leather cases were generally well regarded for their quality. FineWoven isn’t striking people for being as premium as leather, yet Apple is pricing it as a premium case. It feels something akin to high-grade paper or soft denim. Some people disliked the edges’ feel, which looks plastic but is a modified compressed FineWoven texture.

Basic Apple Guy:

I don’t care for it as much as I did Apple’s leather cases, but I also don’t think it deserved the full force of the vitriol it received. Here’s my argument for why the FineWoven case is fine.

[…]

But here we are, a month since Apple’s FineWoven cases first debuted, and honestly, it has been weeks since I have heard about these cases. A Google Trends graph supports this, with FineWoven searches now being down to a tenth of their peak volume in mid-September. We’ve moved on, some to other cases, others to different topics, but some of us learned that FineWoven wasn’t as bad as the outrage made it seem.

[…]

I have been fine with this case’s durability and cosmetic quality. As okay as I am with the FineWoven case, I still prefer a leather option from an aesthetic, tactile, and perceived value standpoint.

John Gruber:

I actually like Apple’s FineWoven cases. I spent a week vacationing in Florida with my iPhone 15 Pro in one. (I go caseless most of the time, but like using a case while traveling, when I’m more likely to be taking a lot of pictures with my phone. An encased iPhone feels more like a camera to me, with better grippiness.) The dealbreaker for me is not the FineWoven material, which I actually kind of like. Rather, it’s the bottom lip. If Apple’s FineWoven cases had a cutout along the bottom, that would probably be the only case I’d use.

M.G. Siegler:

Look, the world doesn’t need yet another post piling on to the new iPhone 15 leather-replacement cases. But here I am anyway. I just can’t help myself. My initial gut reaction upon receiving the case a couple weeks ago still stands. The “FineWoven” cases are bad. Well, that’s not fair. They’re not bad bad, but they are bad relative to expectations for Apple products. And they’re worse than both the leather cases that preceded them and the silicone variety which not only still exist, but are cheaper. What was Apple thinking here?

Rui Carmo:

As someone who has used leather covers for two iPhones now (both of which are still perfectly usable and actually look better slightly worn out), the prospect of paying for a premium case that stains this easily isn’t appealing at all. I wonder why they didn’t explore actual leather substitutes instead of overcharging for this porous polyester crap.

Zac Hall:

The one exception to the third-party-retailers-don’t-want-to-deal-with-FineWoven rule is the AirTag key ring. Perhaps that’s the finest FineWoven product of them all. The one nice thing about third-party retailers at least selling FineWoven accessories online? The reviews. See those for an idea of why brick-and-mortar stores are steering clear of the replacement for leather cases.

NickyValentine:

So yea this is normal use after two months and this is how it looks?

Aaron Pearce:

My FineWoven case is seemingly staining my Belkin MagSafe charger… awesome.

Aaron Pearce:

Have to wonder with how the response is to Finewoven… did it really benefit the environment? Seemingly a lot of people are just going to buy one, be disappointed then get a second case, probably leather anyway.

I’m now looking to get a Leather case myself. Finewoven is too slippery in my hands. I can see myself dropping my phone even more than I do now.

Joanna Stern:

There it is, everyone. My iPhone 15 Pro Max’s FineWoven case after five months of use. The edges are peeling, the fabric is scratched up like an old CD and it’s browning like a rotten banana. I’ve been waiting for the CDC to show up at my house to declare it a biomedical concern.

[…]

The company does provide advice for cleaning the FineWoven material with laundry detergent and water. It did help but the thing is still scratched and peeling.

John Gruber (Mastodon):

But it really does seem, five months in, that FineWoven is a failure, durability-wise, compared to Apple’s previous leather cases. And I am repulsed by Apple’s FineWoven Apple Watch straps — I wish I’d bought a spare leather Magnetic Link strap while they sold them.

Ben Lovejoy:

The combined results of three social media polls show that 53% describe the case as “a piece of junk,” while only 21% considered it has held up well …

Tim Hardwick:

Despite the continued bad publicity almost six months on from the cases’ debut, Apple still appears unwilling to admit that its leather alternative material is a letdown. But in the court of public opinion, all the evidence suggests this is an open and shut case: FineWoven is just bad.

Fortunately, the iPhone 15 Pro works great caseless.

Previously:

Update (2024-03-01): Christina Warren:

But what gets me legit angry is that this solipsistic decision to eschew leather for a less-durable material means that it’s almost impossible to buy a legit Apple-made leather watch band that isn’t a counterfeit. Because if the phone cases look this bad, the $150 watch bands are going to be worse

[…]

Recycled plastic, but plastic that won’t ever biodegrade nonetheless. That’s why I call it solipsistic.

Chance Miller:

It turns out they are so bad that Amazon had to add a warning label to FineWoven accessories to caution buyers that they are “frequently returned.”

Why Quora Isn’t Useful Anymore

Nitish Pahwa (via Hacker News):

Today’s Quora, however, hardly meshes with those utopian aims. The once-beloved forum is now home to a never-ending avalanche of meaningless, repetitive sludge, filled with bizarre, nonsensical, straight-up hateful, and A.I.–generated entries along with a slurry of all-caps non-questions like “OMG! KING CHARLES SHOCK the WORLD with ROYAL BAN ON PRINCE HARRY AND MEGHAN MARKLE. SAD?”

[…]

First, an anonymous former Quoran told me, the site started “shortening the length of questions.” The professed reason was to increase Quora’s visibility on Google, but that brevity came with a cost: It also made it difficult for users to ask the types of complex questions that could be addressed by specialists, including extremely specific business-related queries of the type Hanks would answer.

[…]

When Quora started putting ads on the site in 2016, Williams and other Top Writers suggested that there be some sort of creator revenue-sharing program, she told me. As a result, higher-ups created “the Quora partner program, which I joined myself,” Williams said. But that “was all about trying to come up with questions that would draw in more views and more people,” she said—not about incentivizing high-quality answers. It was all about adding webpages of individual questions, for SEO purposes.

[…]

To top it all off, after Quora began using A.I. to “generate machine answers on a number of selected question pages,” the site made clear the possibility that human-crafted answers could be used for training A.I.

Tyler Glaiel:

this is actually hilarious. Quora SEO’d themselves to the top of every search result, and is now serving chatGPT answers on their page, so that’s propagating to the answers google gives

[…]

its not fixed if you search “can you melt eggs” instead of “can you melt an egg”

Previously:

Tumblr and WordPress to Sell Users’ Data to Train AI Tools

Samantha Cole (tweet, Slashdot):

Tumblr and WordPress.com are preparing to sell user data to Midjourney and OpenAI, according to a source with internal knowledge about the deals and internal documentation referring to the deals.

[…]

The internal documentation details a messy and controversial process within Tumblr itself. One internal post made by Cyle Gage, a product manager at Tumblr, states that a query made to prepare data for OpenAI and Midjourney compiled a huge number of user posts that it wasn’t supposed to. It is not clear from Gage’s post whether this data has already been sent to OpenAI and Midjourney, or whether Gage was detailing a process for scrubbing the data before it was to be sent.

[…]

  • private posts on public blogs
  • posts on deleted or suspended blogs
  • unanswered asks (normally these are not public until they’re answered)
  • private answers (these only show up to the receiver and are not public)

Jason Koebler:

here’s a podcast where we discuss what’s happening and why

Dare Obasanjo:

Access to training data & GPUs is going to be key in AI wars.

The key question is how startups can compete against big tech since both the ability to pay for access to data or model training costs aren’t cheap. This battle favors incumbents.

Previously:

Update (2024-03-01): Tumblr (via Mike Rockwell):

Proposed regulations around the world, like the European Union’s AI Act, would give individuals more control over whether and how their content is utilized by this emerging technology. We support this right regardless of geographic location, so we’re releasing a toggle to opt out of sharing content from your public blogs with third parties, including AI platforms that use this content for model training. We’re also working with partners to ensure you have as much control as possible regarding what content is used.

Update (2024-03-06): Jason Koebler and Samantha Cole (tweet):

In September 2023, WordPress.com quietly changed the language of a developer page explaining how to access a “Firehose” of roughly a million daily WordPress posts to add that the feeds are “intended for partners like search engines, artificial intelligence (AI) products and market intelligence providers who would like to ingest a real-time stream of new content from a wide spectrum of publishers.” Before then, this page did not note the AI use case.

[…]

The truth is that Automattic has been selling access to this “firehose” of posts for years, for a variety of purposes.

[…]

This firehose appears to be distinct from any direct data sharing deal with Midjourney and OpenAI, in part because the documentation makes clear that data being sold via this firehose is not limited only to posts on WordPress.com, but also can include posts on self-hosted WordPress.org websites that use Jetpack, a wildly popular plugin that millions of sites use and that users are encouraged to install when setting up a WordPress site.

[…]

After this article was published, Automattic told 404 Media that it is “deprecating” the Firehose: “SocialGist is rolling off as a firehose customer this month and the remaining customers are winding down in the coming months[…]

Nick Heer:

I am not particularly surprised to learn that public posts on WordPress.com blogs are part of a massive feed, but I am shocked it is not as obvious that self-hosted WordPress sites with Jetpack installed are automatically opted into it as well.

[…]

The New York Times comprehensively blocks known machine learning crawlers, which you can verify by viewing its robots.txt file; the crawlers we are interested in are listed near the bottom, just above all the sitemaps. That is also true for Tumblr. But when I checked a bunch of WordPress.com sites at random — by searching “site:wordpress.com inurl:2024” — I found much shorter automatically generated robots.txt files, similar to WordPress’ own. I am not sure why I could not find a single WordPress.com blog with the same opt-out signal.

Wednesday, February 28, 2024

Making Friends With AttributeGraph

Saagar Jha:

If you’ve used SwiftUI for long enough, you’ve probably noticed that the public Swift APIs it provides are really only half the story. Normally inconspicuous unless something goes exceedingly wrong, the private framework called AttributeGraph tracks almost every single aspect of your app from behind the scenes to make decisions on when things need to be updated. It would not be much of an exaggeration to suggest that this C++ library is actually what runs the show, with SwiftUI just being a thin veneer on top to draw some platform-appropriate controls and provide a stable interface to program against. True to its name, AttributeGraph provides the foundation of what a declarative UI framework needs: a graph of attributes that tracks data dependencies.

Mastering how these dependencies work is crucial to writing advanced SwiftUI code. Unfortunately, being a private implementation detail of a closed-source framework means that searching for AttributeGraph online usually only yields results from people desperate for help with their crashes.

[…]

Shortly before a view’s body is computed, it goes through and sets the _location on all relevant State variables, so that they are ready for dependency tracking. Typically, a property wrapper does not have the ability to grab context from outside of itself (for example, by looking up who owns it). SwiftUI can use reflection much like we did to discover State members that it needs to install _location on, sidestepping this issue. To discover State in nested types, it needs a little bit of help: this is why we had to add a DynamicProperty conformance earlier. In that case, it uses reflection to look for DynamicProperty members instead and then does a search for State inside of those.

Previously:

Apple Cancels Car Project

Juli Clover (Mark Gurman, Hacker News, Slashdot):

Apple has canceled all plans to release an autonomous, electric vehicle, reports Bloomberg. Apple has been working on an Apple Car for more than a decade and invested millions of dollars into development before deciding it was not a viable project.

Apple’s Chief Operating Officer Jeff Williams today told approximately 2,000 employees working on the Apple Car that the project was canceled, and the information reportedly came as a surprise.

Apple surely spent billions on it, not millions.

John Gruber (Mastodon):

Kevin Lynch took over leadership of Project Titan back in September 2021, but remained in charge of Apple Watch, too. In hindsight that makes me wonder if Lynch’s mission wasn’t to ship a car, but more to assess what technologies the group had created could be used to create other products. Whatever progress Apple has made with “autonomy” ought to be applicable to robots, for example. Making intelligent robots feels more like something Apple should be doing than making cars.

Hartley Charlton:

Founder and chairman Lei Jun today posted on Weibo that he was “very shocked” by the news of Apple’s decision to cancel its EV. He added that he “knows deeply how difficult it is to make cars,” but Xiaomi has made an “unshakeable strategic choice” to move into EVs. He Xiaopeng, chairman of Chinese EV maker Xpeng, expressed similar disbelief that Apple is abandoning its car plans.

Adam Engst:

Perhaps the most interesting part of Gurman’s piece is the claim that many of the Project Titan employees will be shifted to Apple’s artificial intelligence division to focus on generative AI projects. Siri could use the help.

Mr. Macintosh:

The rumored Apple Car was one of most embarrassing projects in Apple’s history.

NO ONE WANTED AN APPLE CAR!!!!!

Imagine if all the wasted billions of dollars was instead put into the Siri team!🤦‍♂️

Benjamin Mayo:

Self-driving or nothing has been the Apple Car mission since the beginning. It seems they finally resigned themselves to the former not being possible.

Kontra (Mastodon):

Apple’s problem with Titan was not complicated, almost singular: like everyone else, they found out L5 was/is not achievable and there really was no point introducing a car without it in mid-2020s.

Eric Schwarz:

Over the last couple of years, it has started to feel like Apple is spread too thin at times and while the employees working on the car won’t jump over to go fix That Bug You Hate™ in iOS now, I think it removes a notable distraction for the company.

Demetrio:

They couldn’t afford to develop a bog standard calculator app, they were busy not making a car.

Jeff Johnson:

But I so wanted a car that demanded 30% of every shopping trip and refused to travel to destinations unapproved by the manufacturer.

Joanna Stern:

I was actually really looking forward to what they were going to do in this space—and flipping my car over to charge it.

Whole Mars Catalog:

It pains me to announce that I was fired from Apple today.

I was the engineer responsible for designing the charge port at the bottom of the Apple car.

Brandon Butch:

Was looking forward to the Apple iLift for making charging easier

Tony Fadell:

Apple doesn’t have any real technology or UI advantage in autos (& TVs).

That’s why Apple doesn’t make TVs (only AppleTV) & it’s same reason it shouldn’t make typical cars/EVs (iPhones + CarPlay is fine enough)

Florian Mueller:

Instead of making a car, Apple will just leverage its platform power to tax car makers and their customers.

Previously:

Update (2024-03-01): Juli Clover:

Apple spent more than $10 billion working on the Apple Car over the last decade, according to a report from The New York Times that details the issues the project faced during development. Apple first launched the project in 2014 and let it flounder for more than a decade before calling it off earlier this week.

Money was spent on research and development, along with the thousands of Apple engineers and car experts that worked on the project. Some employees within Apple are said to have suspected that the endeavor was likely to fail from the beginning, and they referred to the car as “the Titanic disaster” instead of its “Project Titan” codename.

Brian X. Chen and Tripp Mickle (Hacker News):

It had just finished the Apple Watch, and many engineers were restless to begin work on something new. Tim Cook, Apple’s chief executive, approved the project in part to prevent an exodus of engineers to Tesla.

[…]

Despite having a vote of confidence from Apple’s chief executive, members of the team knew they were working against harsh realities, according to the six employees familiar with the project. If it ever came to market, an Apple car was likely to cost at least $100,000 and still generate razor-thin profit compared with smartphones and earbuds. It would also arrive years after Tesla had dominated the market.

[…]

The group developed an array of new technologies, including a windshield that could display turn-by-turn directions and a sunroof that would feature special polymer to reduce heat from the sun.

[…]

One day, in the fall of 2015, Mr. Ive and Mr. Cook met at the project’s headquarters in Sunnyvale, Calif., for a demonstration of how the car might work. The two men sank into the seats of a cabinlike interior. Outside, a voice actor read from a script of what Siri would say as the men zoomed down the road in the imaginary car.

The article has a “struggled to develop new products in the years since Steve Jobs’s death” angle, which I disagree with with.

Juli Clover:

The Apple Car is one of the longest running rumors that we’ve been reporting on without a product materializing, so we thought we’d take a look back at some of the key moments in the Apple Car ‘s history to provide some insight into what went wrong.

dagw:

I knew a few people who worked for one the traditional car manufacturers back when Apple made the first big car announcement and apparently 'everybody' there sent in their CVs to Apple. The only people who heard back were the people from either design departments or who worked with electronics or software. People who actually work with engineering and building the actual cars, as in chassis, suspension, engines and other stuff made out of metal heard nothing. That was when it became clear to me that Apple had no real interest in ever actually building a car.

Bloomberg (2017, via Kontra):

Cook Says Apple Is Focusing on Autonomous Car Systems

Nick Heer:

Much reporting during its development was similarly bizarre due to the nature of the project. Instead of leaks from within the technology industry, sources were found in auto manufacturing. Public records requests were used by reporters at the Guardian, IEEE Spectrum, and Business Insider — among others — to get a peek at its development in a way that is not possible for most of Apple’s projects. I think the unusual nature of it has broken some brains, though, and we can see that in coverage of its apparent cancellation.

Steve Troughton-Smith:

The Apple Car project is something the company can come back to in the future; right now, there is an AI sea change happening that could obviate whole categories of technology, and it seems like it's worth playing that out before trying to return to autonomous vehicles. The artificial driver of the future may be sparked by advancements completely out of left field that don't come directly from traditional or legacy machine learning

See also: Dithering.

Update (2024-03-07): Mark Gurman and Drake Bennett (MacRumors, Hacker News):

Most important, the Bread Loaf would have what’s known in the industry as Level 5 autonomy, driving entirely on its own using a revolutionary onboard computer, a new operating system and cloud software developed in-house. There would be no steering wheel and no pedals, just a video-game-style controller or iPhone app for driving at low speed as a backup. Alternately, if the car found itself in a situation that it was unable to navigate, passengers would phone in to an Apple command center and ask to be driven remotely.

[…]

Field, who’d been hired away from Tesla Inc. to oversee the project, proposed scaling back the self-driving goals to Level 3, which requires a human driver to be ready to take over at a moment’s notice, not watching TV or FaceTiming in a backward-facing seat. But Field’s bosses wanted Level 5.

[…]

The front and the back were identical, and the only windows were on the sides, a design choice with potentially dire consequences in the event that a human needed to do any driving.

[…]

Within the company, it was difficult to find spare engineering talent, with attention focused on preparing for the upcoming Apple Watch release and, later, the iPhone X, but Riccio managed nonetheless to poach several dozen engineers from other projects. […] The infighting began almost immediately. Maestri, the CFO, remained a skeptic, as did Craig Federighi, Apple’s software engineering chief, who had to donate personnel to what he considered a vanity project.

[…]

For Field, Mansfield and others on the team, Cook’s indecision was frustrating. “If Bob or Doug ever had a reasonable set of objectives, they could have shipped a car,” says someone who was deeply involved in the project. “They’d ask to take the next step, and Tim would frequently say, ‘Get me more data, and let me think about it.’”

Jason Snell:

Sounds like a lot of people inside Apple knew this project was a disaster, and that Tim Cook failed to provide a vision and decisive leadership. Though I do appreciate the internal argument about why to start the project in the first place: “Would you rather compete against Samsung or General Motors?”

Update (2024-03-11): Marcin Krzyzanowski:

7 years ago Apple contacted me because somebody noticed my past experience work at Nissan Automotive 🚙. They didn’t want to say the exact team they’re recruiting to. After 7 months long interview process (rly, 13 rounds) I’ve got ghosted eventually.

Today I think that was Apple Car

Mark Gurman:

The Apple car’s circa-2020 design resembled the Canoo Lifestyle Vehicle — a futuristic van with rounded edges — but it had dark black windows with an adjustable tint. There was all-glass sunroof, a pure white exterior and whitewall tires with a black center. The front and back were identical, so it would always look like you were driving forward. It looked like no other mass-produced vehicle — and was optimized for full, Level 5 self-driving.

[…]

The car’s last major design — still a variation on the original Bread Loaf idea — traded in a sliding van door for gull-wing doors like on a Tesla Model X. Even more so than with prior iterations, it wasn’t designed for a traditional driver: The vehicle featured a front and back with such dramatic pinched curves that there was little room for front or rear windows. When Apple ultimately decided to switch from Level 5 autonomy to something around Level 2, the company needed to add back a steering wheel and pedals, as well as front and back windows. By the end, the car had two seats facing forward that could swivel.

Update (2024-04-08): Juli Clover:

Apple this week filed a required notice with the state of California, confirming plans to permanently lay off more than 600 employees.

FastScripts 3.3

Red Sweater:

This update includes a major new premium scripting addition, facilitating mouse automation by providing a variety of new scripting commands, including a powerhouse for synthesizing clicks and drags[…]

[…]

When automating mouse events, the clicks, drags, and releases can happen so fast that it confuses or overwhelms some interface components. For this reason, FastScripts imposes a short delay between the generation and delivery of each individual event that makes up a requested automation command. I’m calling this delay the event cadence, and it can be overridden with a longer or shorter cadence by supplying a parameter to the click mouse command, or for the duration of a whole script by setting this property[…]

[…]

Finally, there are two new properties for querying the state of the mouse and keyboard:

  • current mouse position
  • current keyboard modifiers

See also: PreFab Player.

Previously:

Tuesday, February 27, 2024

The “everything” NPM Package

Feross Aboukhadijeh (Hacker News):

Just when we thought we’d seen it all, an npm user named PatrickJS, aka gdi2290, threw us a curveball. He (along with a group of contributors) kicked off the year with a bang, launching a troll campaign that uploaded an npm package aptly named everything. This package, true to its name, depends on every other public npm package, creating millions of transitive dependencies.

[…]

The “everything” package, with its 5 sub-packages and thousands of dependencies, has essentially locked down the ability for authors to unpublish their packages. This situation is due to npm’s policy shift following the infamous “left-pad” incident in 2016, where a popular package left-pad was removed, grinding development to a halt across much of the developer world. In response, npm tightened its rules around unpublishing, specifically preventing the unpublishing of any package that is used by another package.

Ironically, this policy trapped PatrickJS in his own web. Upon realizing the impact of his prank, he attempted to remove the everything package but was unable to do so. He reached out to the npm support team for help, but the damage was done.

Previously:

Reddit AI Training Data and IPO

Ben Lovejoy:

It’s being reported that a deal has been struck to allow an unnamed large AI company to use Reddit user content for training purposes …

The deal is said to be worth around $60M per year, and comes at a time when the company is seeking to maximize its value in the run-up to an IPO.

Emma Roth:

Google is getting AI training data from Reddit as part of a new partnership between the two companies. In an update on Thursday, Reddit announced it will start providing Google “more efficient ways to train models.”

[…]

The partnership will give Reddit access to Vertex AI as well, Google’s AI-powered service that’s supposed to help companies improve their search results. Reddit says the change doesn’t affect the company’s data API terms, which prevent developers or companies from accessing it for commercial purposes without approval.

Dare Obasanjo:

Called it. Only question is whether the deal is exclusive or if there’s an option to make it exclusive since $60M is relatively low for exclusivity.

Jonathan Vanian:

Social media company Reddit filed its IPO prospectus with the Securities and Exchange Commission on Thursday after a yearslong run-up. The company plans to trade on the New York Stock Exchange under the ticker symbol “RDDT.”

[…]

Reddit said it had $804 million in annual sales for 2023, up 20% from the $666.7 million it brought in the previous year, according to the filing. The social networking company’s core business is reliant on online advertising sales stemming from its website and mobile app.

Via Dare Obasanjo:

It was valued at $10B in its last funding round and Sam Altman owns an 8.7% stake.

A few surprises in Reddit’s financials are that it’s still unprofitable in its nineteenth year of existence and if it does list at $5B as rumored then it will be a down round relative to its series F funding round.

Emma Roth (via Matthew Cassinelli):

In an unusual twist, Reddit is also giving an unspecified number of its top users, including moderators and those with high karma scores, the chance to buy shares in its IPO. That’s a privilege usually reserved for professional investors who want to buy stock at a theoretically lower price before everyone else gets to purchase it on the public market.

Previously:

Update (2024-03-11): Amy Or, Priya Anand, and Ryan Gould (via Hacker News):

Reddit Inc. disclosed further details of what is set to be one of the year’s biggest initial public offerings, with the company and some existing shareholders seeking to raise as much as $748 million.

Update (2024-03-20): Brandon Vigliarolo (Hacker News):

Ahead of its stock market debut, Reddit has said it’s going to make it easier for advertisers to craft normal user posts and run them as ads on the social network.

Called “free-form ads,” Reddit claimed in a statement this week that the “all-new, completely unique ad format” is designed to improve click-through rates and upvotes – by making adverts look as much like user posts as possible.

To be clear, we understand these free-form ads will be labeled as promoted posts.

Update (2024-03-22): Paul Graham (via Hacker News):

I met the Reddits before we even started Y Combinator. In fact they were one of the reasons we started it.

[…]

I don’t think the startup sense of the word “pivot” had been invented yet, but we wanted to fund Steve and Alexis, so if their idea was bad, they’d have to work on something else.

[…]

Reddit the site (and now app) is such a fundamentally useful thing that it’s almost unkillable.

Ianna Rosa Royle (via Hacker News):

While Reddit’s CEO Steve Huffman has been given a $193 million compensation package, the moderators on the platform are unpaid—and the disparity has not gone unnoticed. Since word got out about Huffman’s pay, users on Quora, Reddit, and X have been ripping into the package.

Laura Bratton:

The staggering figure was included in the company’s U.S. Securities and Exchange Commission (SEC) filing on Feb. 22 as it prepares to launch an initial public offering this week. Huffman defended his compensation in a video on his social media platform this week. Quartz calculates that it’s more than the pay packages for the CEOs of Pinterest, Snap, and Meta — combined.

Ines Ferré:

The stock closed at $50.44 on Thursday, up 48% from the IPO price and giving the company a market cap just north of $8 billion.

Slow Swift Macro Compilation

Vatsal Manot:

Folks, if you’re also frustrated with the state of Swift Macros (w.r.t. compile times), please engage on the forums thread here.

I can’t think of any other language where such a fundamental feature is dependent on a heavy source package that needs to be recompiled every clean build.

John Bushnell:

Prior to adding macros one xcframework takes 257.7 seconds (4.3 minutes) to build. After adding macros it takes 2004.5 seconds (33.4 minutes). This is a 7.76x increase. This is with one macro implemented in one location in code, so it’s not related to how many times the macro is used.

This speed decrease makes the macros support currently unusable for us.

[…]

There’s also a secondary issue, which because of the speed issue I don’t really need to take it further at this point, but it’s that tests do not support these macros for some reason when run from the command line.

Wade Tregaskis:

Same story as everyone else, in a nutshell - I saw some nice-looking package (swift-foundation-extensions, in this instance), added it to my project, and then saw my builds suddenly taking way longer. Then noticed the dreaded “SwiftSyntax” named in the build logs.

What was a clean build time of about fifteen seconds became several minutes.

(“how often do you do clean builds, though, really?” - ugh, a lot. I’m using Xcode and it’s got some bugs regarding detecting changed sources, not to mention its infamous bugginess regarding stale compiler errors)

John McCall:

The LSG is aware that there are build-system issues causing a lot of pain for macro adopters and their downstreams. From an abstract language perspective, I don’t think any of those problems are particularly challenging to the point of requiring an overall design change to macros; the project just needs to put in the work to fix them. I can’t tell you when that will happen, though, which I know is not a satisfying answer.

Vatsal Manot:

Be aware of the fact that you’re adding ~38,000 LoC of Swift source code to your project. This cost is forwarded to anyone consuming your Swift packages.

Be aware of the fact that SPM currently fetches the entire git history of the SwiftSyntax repo. This is a separate but, in my view, not unrelated issue as it directly factors into the cost of adopting macros.

Just adding SwiftSyntax can potentially add up to 12 minutes to your build time on Xcode Cloud as noted by @Ignacio_Soto.

It’s peculiar enough that a core language feature is tied to a still-maturing package manager riddled with performance/build-systems issues, but what I find extremely disappointing is that these issues aren’t mentioned anywhere in any official documentation/release notes.

Previously:

Update (2024-02-28): Martin Pilkington:

A clean build of my CoppiceCore framework & tests now takes 2m36s, only about 10s of which is my code

Apple really needs to switch to Macros linking against a pre-build version included in Swift distributions if they want Macros to be a feature many people use

Update (2024-03-01): alloca:

I feel like I’ve seen clean build times increase by maybe 30-60 seconds on my M1 Pro when adding macros. Am I missing something? How are people getting several minute increases?

Stephen Celis (via Helge Heß):

Introducing SwiftSyntax to a project immediately incurs an additional 20 second debug build cost to a project, which may not seem like much, but that’s an extra minute for every 3 cleans. Things get much slower when building for release with whole module optimization: over 4 minutes just for SwiftSyntax. This issue from January highlights the problem, but there isn’t a lot of discussion around how it might be addressed.

[…]

Beyond build times, SwiftSyntax is a complex project to depend on, and it’s unclear how to version a project that depends on it. I started this discussion a few days ago and was hoping for guidance there, but I’ll restate the problem here. Because SwiftSyntax is a moving target and versioned alongside Swift releases, how can a library adopt macros and be compatible with multiple Swift versions at the same time?

Update (2024-03-11): Vatsal Manot:

Friendly reminder that there’s still no ETA on when the massive compilation time issue for Swift Macros will be fixed.

I’d personally recommend holding off on adoption until there’s an official update from the team on this.

Saagar Jha:

As I watch complaints mount about swift-syntax compile times, I wonder if Apple remembers the time when them ignoring the concerns of impatient developers led to the infection of hundreds of millions of iOS devices in one of the most successful supply-chain backdoor attacks ever

Nobody’s going to do the whole Reflections on Trusting Trust thing but the longer it takes for your project to build the easier it gets for me to offer you my precompiled binaries instead. And interestingly enough these binaries happen to have direct control of code generation…

Monday, February 26, 2024

Avast Fined for Selling Browsing Data

FTC (via Lina Khan):

The Federal Trade Commission will require software provider Avast to pay $16.5 million and prohibit the company from selling or licensing any web browsing data for advertising purposes to settle charges that the company and its subsidiaries sold such information to third parties after promising that its products would protect consumers from online tracking.

In its complaint, the FTC says that Avast Limited, based in the United Kingdom, through its Czech subsidiary, unfairly collected consumers’ browsing information through the company’s browser extensions and antivirus software, stored it indefinitely, and sold it without adequate notice and without consumer consent. The FTC also charges that Avast deceived users by claiming that the software would protect consumers’ privacy by blocking third party tracking, but failed to adequately inform consumers that it would sell their detailed, re-identifiable browsing data. The FTC alleged Avast sold that data to more than 100 third parties through its subsidiary, Jumpshot.

Emma Roth:

A joint investigation from Motherboard and PCMag first brought attention to Avast’s data privacy practices in 2020. Avast shut down its data harvesting arm, called Jumpshot, shortly after the reports emerged. Although Avast said it removed identifying information before selling user data, the FTC found it “failed to sufficiently anonymize consumers’ browsing information.” Instead, it sold data with unique identifiers for each browser, revealing websites visited, timestamps, the type of device and browser used, and location.

[…]

The FTC has been cracking down on poor data privacy practices in recent weeks. In January, the FTC reached a settlement with Outlogic (formerly X-Mode Social) that prevents the data broker from selling information that can be used to track users’ locations. It banned InMarket from selling precise user locations as well.

Previously:

Update (2024-02-28): Nick Heer:

What people with Big Business Brains often like to argue about the unethical but wildly successful ad tech industry is that it is not as bad as it looks because your individual data does not have any real use or value. Ad tech vendors would not bother retaining such granular details because it is beneficial, they say, only in a more aggregated and generalized form.

The problem with this argument is that it keeps getting blown up by their demonstrable behaviour.

[…]

Avast paid a $16.5 million penalty and said it would not use any of the data it collected “for advertising purposes”. The caveat makes this settlement feel a little incomplete to me.

Apple Arcade’s Uncertain Future

Neil Long (2023, Slashdot, MacDailyNews):

In the 15 years since it launched the App Store, Apple has proved again and again that it cares very little about games – though it is happy to make billions from them. I should know: I was an App Store games editor for seven years.

[…]

The woefully understaffed team of app reviewers couldn’t handle the volume of games coming through – and seemingly still can’t today.

[…]

Meanwhile, some brazen clone sails through the app review process no sweat. It’s been happening for years. In 2016, a hilariously fake “Minecraft 2” was approved for sale by the App Review team and made it all the way into the Top 10 chart before it was pulled from sale. Brazen Pokémon rip-offs make it through surprisingly often too.

[…]

So perhaps, once those huge App Store profits are under genuine threat, we’ll see Apple start to take its role as a mobile game platform more seriously. It has the excellent Apple Arcade subscription service, sure, but it’ll take more than that to help rescue mobile gaming’s reputation.

Neil Long (MacRumors, AppleInsider, The Verge, Hacker News):

Multiple mobilegamer.biz sources have voiced their concern for Apple Arcade’s future, citing a glut of cancelled projects and ever-declining developer payouts.

[…]

Payouts for titles on Apple Arcade have been falling for years, our sources said, and following a shift in strategy very few original games are being greenlit unless they are attached to a big family-friendly IP.

Apple is often aloof or difficult to work with too – though as one developer noted, “that’s nothing new”. While some described their relationship with Apple as very positive (and lucrative), others said that Apple is “famously vindictive” and “spiteful” in its dealings with developers – especially once the tech giant discovers that you have signed a deal with Netflix’s rival service.

[…]

One studio boss told us that after months of glowing feedback on one particular game, the Arcade team suddenly withdrew its interest in the title, citing a change in strategy. When the developer asked for feedback and offered to reduce the budget and re-tool the game to better fit Apple’s needs, the Arcade team simply stopped responding to their emails.

Previously:

Update (2024-03-01): John Voorhees (Mastodon):

The details of mobilegamer.biz’s story that I think are most interesting are the ones about the business terms Apple has struck with game developers. Those are details that developers seem to be contractually prohibited from talking about. I know because I’ve asked developers about how it works before. However, according to mobilegamer.biz, Arcade developers are paid an up-front fee and from a ‘bonus pool’ based on something called ‘qualifying sessions’[…]

Brendon Bigley:

it is SO wild to me that apple has such strong leverage here that they can get developers to commit to payout deals that are this opaque

Jack Wellborn:

My sense on Arcade is that while it does address the casinofication of iOS games, it doesn’t really address the fundamental problem -- that mobile games aren’t considered worth paying for. My thinking is that Apple should create a whole new category just for premium games at premium prices, regardless of whether its pay once or a subscription fee.

Craig Grannell:

Sad but unsurprising given that Apple doesn’t have gaming baked into its DNA and at some level thinks they are unserious (unless wheeling a AAA title out for a tech demo).

Brendon Bigley (via John Voorhees):

Arcade was phenomenal in its launch window, with titles like Sayonara Wild Hearts and Fantasian immediately hitting all-timer status in my eyes, but I’ve noticed a waning faith in the player end of things as much as Long also outlines the developer discontent. Take this post on Reddit, for example, filled with subscribers lamenting the loss of Cozy Grove, a game notably making its way to Netflix Games and whose lineup includes a treasure trove of “best of” indie titles from the past decade. This internal strategy pivot towards more family-friendly games feels like a clear play for the iPad-kid market, but how valuable that ends up being long-term is unclear and in the short-term is clearly hurting both player and developer relations.

[…]

I think it would be an unfortunate pivot, as Arcade has brought me a huge amount of joy via inventive titles from smaller teams, but you can practically see the boardroom conversations that would lead to such a decision.

Eric Schwarz:

While Arcade has plenty of excellent titles, it never clicked with me to keep it beyond any trial (I have a handful of purchased favorite iOS games and even those don’t get played that often). It reminds me a lot of Apple News, a great idea on paper, but the execution has been lacking.

[…]

Unfortunately, unless they continue to add excellent games through cultivating great developer relationships, everyone doing worthwhile stuff will walk away, leaving buggy or lazy ports, along with derivative franchise releases as the main options on the service.

Steve Troughton-Smith:

Apple is optimizing its developer base for ‘people who only care about money’ and I’m sure that’s not going to come back to bite them at all 😛

Update (2024-03-05): Craig Grannell (Mastodon):

[While] I thought it was a weird decision, I’m nonetheless glad it exists. Because it’s objectively good. Sure, people who claim the only ‘real games’ are AAA (and who even attempt to dismiss the Switch, let alone mobiles) won’t give it a chance. But there are loads of fun titles, even if much of the service’s strength now lies in ‘+’ fare (existing App Store releases minus ads/IAP) rather than exclusives. It’s superb for kids who like mobile games (again: no ads; no IAP). And there are still interesting new things to play. (I mean, Arcade added a pinball game at one point. And pinball is pretty niche!)

For me, the main error Apple Arcade made was during its launch. It offered too much, too soon. It was simultaneously overwhelming and somehow yet made people think they could blaze through everything and instantly demand more. And more didn’t come for a long while, and so users felt they weren’t getting good value, even though Arcade at the time cost only five bucks per month.

Might Have Been

Ben Lovejoy:

Jony Ive tried to persuade Apple to cease making the MacBook Air, leaving a redesigned MacBook Pro as the only portable Mac.

[…]

Mossberg’s source said this led to a huge battle between Ive’s design team and the product managers, and was only finally resolved in 2018, when the product team got their way.

It’s a big claim to base on a single source, even coming from Mossberg. There are some reasons to give it credence. It’s undeniable that the MacBook Air spent some years in the wilderness, seemingly neglected by Apple before the 2018 model. It’s also notable that this model, while a big upgrade technically, didn’t get a redesign.

Joe Rossignol:

The name AirPods Extreme was floated by at least one member of Apple’s leadership team, but the company ultimately decided to move forward with AirPods Pro branding after many employees objected to the change, we have learned.

Joe Rossignol:

Before the Dynamic Island, Apple explored a popover menu on the right side of the screen that would have provided users with quick access to the time, cellular signal and Wi-Fi strength, display brightness, volume, and battery charge level. The menu essentially looks like a second notch, and it would disappear when not in use.

Another idea that Apple considered was hiding the notch with an all-black status bar area at the top of the screen.

Apple initially made the Dynamic Island permanently elongated across the top of the screen, before deciding that it would be less intrusive if it changed size as necessary. Apple also considered showing volume and a full row of system shortcuts in the Dynamic Island, tested a never-used layout for ongoing phone calls, and more.

Previously:

Update (2024-02-27): Chance Miller (via Hacker News):

According to Google’s filings, Microsoft pitched Apple on making Bing the default search engine in Safari on at least seven different occasions: 2009, 2013, 2015, 2016, 2018, and 2020. Each time, Google says that Apple passed on the opportunity due to search quality.

[…]

Also in the filing, Google wrote that Microsoft approached Apple in 2018 to tout improvements it had made to Bing’s search quality. Microsoft’s goal was to either “sell Bing to Apple or establish a Bing-related joint venture.”

John Gruber:

Calling these small earbuds “Extreme” would make no sense side-by-side with AirPods Max. To me, at least, “AirPods Extreme” would be the name for over-the-ear headphones even better than AirPods Max.

Previously:

A Complete Guide to Bluesky

Kuba Suder:

For the past 10 months, I’ve been a pretty active user of Bluesky. I enjoy it a lot, and I’ve managed to learn a lot about how it works, what works well and what doesn’t, and also what’s likely coming next.

I’ve decided to write down some of the tips & tricks that I often give to friends when I send them an invite code, or the advice and answers that I sometimes give to people that I find in some feed asking about things.

Steve Klabnik:

One of the reasons I am enthusiastic about BlueSky is because of the way that it works. So in this post, I am going to lay out some of the design and the principles behind this design, as I understand them.

Bluesky (Hacker News):

Today, we’re excited to announce that the Bluesky network is federating and opening up in a way that allows you to host your own data.

[…]

Mastodon is another federated social network built on a protocol called ActivityPub. While Bluesky — built on a protocol called the AT Protocol (atproto) — shares the term “federation” with other networks, the way it works is very different.

On Bluesky, server choice doesn’t affect what content you see. Servers are only one piece of the protocol — when you browse Bluesky, you see posts that are pulled together from many different servers. This is why you can change your server after signing up without losing your username, friends, or posts.

Craig Grannell:

Not terribly impressed by the answers to the third questions in the #Bluesky ‘open social web’ post, which spends an awful lot of time talking about Mastodon in a manner people on Mastodon wouldn’t recognise.

If you’re going to write about a rival service, not misrepresenting it is a better way to engender trust. Spin, not so much.

It’s not clear to me what Bluesky misrepresented.

Previously:

Friday, February 23, 2024

Vice and Engadget “Content”

Bruce Dixon:

We create and produce outstanding original content true to the Vice brand. However, it is no longer cost-effective for us to distribute our digital content the way we have done previously. Moving forward, we will look to partner with established media companies to distribute our digital content, including news, on their global platforms, as we fully transition to a studio model. As part of this shift, we will no longer publish content on vice.com, instead putting more emphasis on our social channels as we accelerate our discussions with partners to take our content to where it will be viewed most broadly.

Via Nick Heer:

The way Vice has “distributed [its] digital content […] previously” is by having a website. That it is not “cost-effective” to run a website is creating rumours that it is about to be shuttered without any real effort at preservation.

This is a real shame; Vice had some of the best privacy and security coverage in the industry.

Lorenzo Franceschi-Bicchierai:

There will never be a website like Motherboard.

A product of a time and place that will never be replicated. And for all its faults (and there were millions of them), Vice was smart enough to let us thrive on our own.

Brian Merchant:

Just incredible. The CEO of VICE is giving up on one of the most popular global media brands, firing its journalists and shutting down Vice.com in order to “transition to a studio model” which means… what? Posting brand stuff to Instagram?

VICE has always been a mess, but this is such a sad and ignominious end to a place that for all its many faults, produced some excellent work and a very talented stable of journalists who deserve a hell of a lot better than this.

Ernie Smith (via Hacker News):

It’s confirmed. The Vice website is shutting down.

See also: Samantha Cole.

Mia Sato (via John Gruber):

The nearly 20-year-old tech publication Engadget is laying off staff and restructuring editorial teams today with a new focus around traffic and revenue growth. The changes are designed to give the outlet a stronger emphasis on commerce revenue, while removing key editorial leaders from its newsroom, including its editor-in-chief.

Engadget, which is operated by Yahoo, will lay off 10 employees, according to people with knowledge of the situation who say staff were “blindsided” by the decision. In addition to cutting staff, the editorial team will split into two sections: “news and features” and “reviews and buying advice.” The news teams will focus on traffic growth, while the reviews teams will report to commerce leaders.

Via John Gruber:

The sort of executive who calls what their own publication creates “content” is exactly the sort of asshole who thinks talented editors and writers can be laid off while increasing “velocity” and the quality of the work.

Previously:

Apple Sports

Apple (MacRumors):

Apple today introduced Apple Sports, a free app for iPhone that gives sports fans access to real-time scores, stats, and more. Designed for speed and simplicity, the app’s personalized experience puts users’ favorite leagues and teams front and center, featuring an easy-to-use interface designed by Apple. Apple Sports is available to download now in the App Store in the U.S., the U.K. and Canada.

John Gruber:

Apple Sports is indeed incredibly fast to load and update. Nearly instantaneous. You might think, “So what, it’s just loading scores and stats, of course it’s fast”, but the truth is ad tech, combined with poor programming, has made most sports apps slow to load. Most apps, period, really. Just being very fast to load ought not be a hugely differentiating factor in 2024, but it is.

[…]

Sports doesn’t — yet — offer any Home Screen widgets.

[…]

There’s no compatible version for Mac, Vision, TV, or Watch. […] But on iPad, it just runs in an iPhone layout.

John Gruber:

A bunch of readers emailed to ask how to get Live Activities from Sports. Turns out, it’s not the new Sports app that provides them, it’s the existing TV app[…]

Jason Snell:

And it has led to a lot of confusion about what the Apple Sports app does and doesn’t do, which highlights just how scattered Apple’s current effort to bring information to sports fans really is. I imagine that it wasn’t planned to work this way, and I wouldn’t be surprised if Apple connects all of its disparate sports pieces eventually, but in the meantime things are a little confusing.

[…]

On the iPhone, at least in the U.S. (I’m told this isn’t the case in the UK?!) the TV app has the ability to place the scores of your favorite teams in a Live Activity on your lock screen and in the Dynamic Island. In fact, it’s more than that: you can place any game in a Live Activity by tapping on it in the TV app and tapping Follow Live.

[…]

This is the conundrum of the Apple Sports app: It avoids the complexity of adding a News tab and a TV tab and focuses on scores, which is good. But if you want to start a Live Activity or jump to watch the game, it’s at least one app and several taps away.

Basic Apple Guy:

I love the app idea. It’s a fast, simple, clean, ad-free, and uncluttered way to access sports scores and basic game analytics for the games I care about. For a short while, Apple has had an anemic sports-type section inside the News app that showed game scores, so I’m excited to see this next push toward a more comprehensive & dedicated sports app.

Francisco Tolmasky:

People who say that Apple is anti-web have no idea what they’re talking about. Just this week they released the Apple Sports app specifically to showcase why Web Apps are so often a better choice than native apps. It’s a masterful proof by example. By stripping what could have been a fun app down to its barest components, a flat list of scores with no design whatsoever, they can focus on demonstrating how these “list apps” are usually just the thinnest of wrappers around a JSON API.

I really have to commend them for resisting the temptation to ship a really great iPad experience. This does an excellent job of showing how even the simplest CSS framework would have probably given you a better iPad experience than what you get by default from UIKit/SwiftUI/etc.

[…]

Most people might think this is an odd omission, that a Sports Widget actually makes even more sense than a Sports App, that the whole point of a Sports App might be to deliver a Sports Widget. But here Apple is showing us that mere existence of native-only features in no way guarantees that developers will bother actually taking advantage of them.

Previously:

Update (2024-02-28): Sam Henri Gold (tweet):

We do internal design critiques quite often, but we noticed a few things worth mentioning for designers and developers thinking about modern iOS design practices.

[…]

Apple has been playing with navigation bars a lot recently. We could probably write a whole thread about just the nav bar. Take a look at how it stretches during over-scroll and transitions to a squished state when collapsed.

Gradients are used a LOT in this app. This nav bar gradient effect is becoming pretty common throughout first-party apps as well — first with the iOS 17 Health app, then Journal, and now Sports. watchOS 10 is full of gradients. (Actually, the Journal app is entirely gradients!)

Take a look at the “Yesterday / Today / Upcoming” picker right above the list. This is functionally a segmented control, but they did not opt to use the stock style.

[…]

Finally (and this is a big one): motion backgrounds.

Josh Renaud:

I’m so disappointed in the design of the new Apple Sports app, which does not degrade gracefully on smaller screen sizes, like my iPhone SE2.

Apple used to get this stuff right.

Apple is still selling phones with that screen size.

Update (2024-03-28): See also: Sam Gold.

Update (2024-04-08): Kontra:

I’m giving up on Apple Sports.

Besides the ridiculously long post-game Standings updates, interns-all-the-way level of incompetence: last night NBA Standings was showing only the Western Conference. How does one ship such a thing!

Update (2024-04-26): Dr. Drang (Mastodon):

But scores are only part of what a good sports app is about. Sports apps are used not only when you can’t watch a game and want to be kept plugged in, they’re also used—even more often used, I think—to give you background information on the game you’re currently watching. Announcements during a broadcast are ephemeral, but a sports app can tell you how many fouls Nikola Jokić has at any time. And this is where Sports falls down.

In basketball, for example, the box score statistics are thin. There’s no info on free throws, steals, blocks, turnovers, or personal fouls. League standings are missing common stats like the home/away record, record over the last 10 games, and win/loss streaks, These are things fans want and that other sports apps provide. No amount of beautiful presentation is going to make up for missing data.

And, weirdly for an Apple app, the presentation isn’t beautiful—it’s actually awful.

IAP Required for Insight Timer Tips

Sarah Perez:

The CEO of meditation app Insight Timer, Christopher Plowman, is frustrated. He doesn’t think the teachers who leverage his app’s marketplace to reach their students should have to share 30% of their income with Apple — its commission on in-app purchases — and for the past 12 months, Apple had also agreed. After Apple loosened its rules around in-app donations in 2022, Insight Timer took advantage of the option to adjust a digital donations feature that allowed Insight Timers’ teachers to collect “tips” from their user profiles and during live events. Apple reviewed the app and approved its release on the App Store. Now the tech giant has changed its mind — it wants to collect a commission from this content, and Insight Timer had no choice but to comply or have its iOS business shut down, Plowman says.

[…]

Like many App Store businesses, Insight Timer generates revenue by selling subscriptions. In 2023, it earned around $20 million in subscription revenue, with a third of that (30%) paid to Apple, per its commission guidelines.

However, the company also offers a donation feature that allows customers to tip their favorite meditation teachers to thank them for their time and effort.

Chance Miller (Hacker News):

The change apparently comes after Apple allowed the app to use its own Stripe-based in-app purchase system for over a year.

Juli Clover:

Apple approved 47 Insight Timer updates that had the tipping functionality, but late last year, Apple’s review team decided that these payments weren’t considered tips, but digital goods purchases, which subjected them to the App Store in-app purchase fee.

App Store rule 3.2.1 vii says that apps can allow users to give a gift to another individual without using in-app purchase, so long as the gift is an optional choice and 100 percent of the funds go to the receiver of the gift. This was the case with Insight Timer, as it was not taking a cut of tips, but the individual to individual wording is what became murky, as well as an addendum to that rule that says a gift “connected to or associated at any point in time with receiving digital content” requires in-app purchases.

Christopher Plowman:

Just as homeowners don’t pay 30% of their Airbnb income to Apple - imagine the outrage - teachers shouldn’t have to pay Apple 30% of their donation income either. Many Insight Timer teachers are doctors, nurses and educators who return home from their day jobs to work in the evenings on Insight Timer for critical supplemental income. They give up their personal time recording audio replies to classroom questions, responding to user reviews, hosting live events, writing music, creating guided meditations and leading discussion groups. There’s nothing ‘digital’ about these experiences no matter how much the definition is contorted. The more teachers work, the more they earn. The correlation is obvious and the term ‘digital content’ simply does not apply.

Everything rests on Apple’s interpretation of the words “digital content”. When Apple wrote clause 3.1.1 it was most probably intended for Apple’s gaming developers. These companies make billions selling virtual items like ammunition upgrades, sharper swords, bigger shields, extra lives, golden coins and cooler Fortnite skins. These items are ‘digital content’ because they have no inherent value and cost nothing for gaming developers to digitally replicate. If Apple wants to take their 30% cut, fair enough. But virtual coins and ammunition upgrades are light years from the time spent by teachers working to engage with Insight Timer’s community. No reasonable person could miss the difference here.

Plowman’s argument makes sense to me, but Apple’s position seems to be consistent with their handling of events and classes facilitated with an app, which they temporarily changed during COVID-19. Then Apple announced that as of June 2022 it would be collecting the fees again. So why are we just hearing about this Insight Timer issue now, nearly two years later? Have they been getting an exemption all this time? Plowman says the dispute has only been going on for “months.” Was there a guidelines change in late 2023 that I missed? Or did Apple just suddenly decide to interpret the rules differently, as they did with WordPress?

Previously:

Swift Scripts Importing Cocoa Frameworks Broken on macOS 14

Jesse Squires:

On macOS 14 Sonoma there is a regression in Swift 5.9 which causes Swift scripts that import Cocoa frameworks to fail.

[…]

The current workaround (also posted by @rdj) is to update the shebang, #!/usr/bin/swift, by replacing it with the following:

#!/usr/bin/env DYLD_FRAMEWORK_PATH=/System/Library/Frameworks /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift

Previously:

Thursday, February 22, 2024

MacSymbolicator 2.6

Mahdi Bchatnia (via Daniel Jalkut):

A simple Mac app for symbolicating macOS/iOS crash reports.

Supports symbolicating:

  • .crash and .ips crash reports
  • sample and spindump reports

Muse Retrospective

Adam Wiggins (via Peter Steinberger):

You’ve probably seen the meme about product distribution, and I went into this venture knowing that productivity software is particularly difficult to market.

[…]

I’m deeply grateful to the folks inside the App Store editorial team who were rooting for us from the beginning. Getting featured here really is a game-changer. […] Also, leads that came via the App Store were very low quality. People would rarely see our website, or even read much on the App Store listing page. They would just think “oh cool a new whiteboard app, I’ll try it” and then immediately bounce out at the first moment of confusion or friction inside the app. Often coupled with a one-star review!

[…]

But we were often running up against a problem: many people followed our work via Twitter and the podcast but would say: “Love what you’re doing, but I don’t use an iPad.”

[…]

But a Mac app alone wouldn’t be enough. We needed your Muse boards to be available on both devices. After extensive experiments with iCloud (slow, unreliable, impossible to debug) and Firebase (better but not really suitable for the large data sizes our best customers had) we decided to import another piece of bleeding-edge research technology from Ink & Switch. Namely: local-first sync with CRDTs.

[…]

Apple platforms are great, but you have to be on the web. In terms of development speed, quality of the resulting product, hardware integration, and a million other things: native app development wins. But ultimately your product does have to have some web presence. My biggest regret is not building a simple share-to-web function early on, which could have created some virality and a great deal of utility for users as well.

Previously:

2023 Six Colors Apple Report Card

Jason Snell (Hacker News):

John Gruber wrote: “By the end of the year, every single Mac in the lineup, save one [the Mac Pro], is arguably in the best shape that model has ever been.

[…]

Matt Deatherage wrote: “It’s difficult to ding Apple’s Mac performance. With Apple Silicon leading the way, the Mac hardware seems to be hitting all the sweet spots, and even the iMac finally got an M3 upgrade after 2 1/2 years. But they might as well have named the Mac Pro the ‘Mac Elite,’ priced way out of range for most professionals in most jobs. macOS security features that were individually good ideas have become a tangle of dozens of dialog boxes that simultaneously demand immediate attention and won’t respond because other dialogs are popping up.

“Apple pours its Mac resources into technologies we now know are critical to Apple Vision (VRKit, ARKit, Metal). Meanwhile, critical systems like Mail lose old plug-in functionality in favor of extensions that lack key features (and don’t implement their documented features thanks to bugs that go unfixed for years). Even using newer replacements for older kernel extensions (like Rogue Amoeba) still requires kernel access, a security setting that requires two reboots and disables Apple Pay. It’d be nice if 2024 Macs weren’t missing productivity features from 2008 Macs.”

[…]

[John Siracusa:] “Apple’s pricing for Mac storage and RAM upgrades has been absurd for decades, but the lack of most other forms of configurability in recent years has really highlighted this problem. Apple seems to be carrying all of its (considerable) Mac profit margins on the backs of these two options, leading to upgrade prices that are often four times higher than market prices for the same amounts of storage and memory.

[…]

David Sparks wrote: “The iPad, to me, remains a disappointment not because of what it is but because of what it could be. I use mine often, but also often set it down because the next thing I need to do is too difficult (or impossible) on iPad. When the iPad launched (in 2010), I expected it would be much more than it is now in 2024. It may be unfair to judge a product against expectations, yet I feel, at this point, it is justified.”

[…]

Alex Lindsay wrote: “I hate the silver controller and greatly dislike the evolution of the Apple TV interface. It really seems like Apple has given up the simplicity that made the Apple TV great and are slowly falling back to what everyone else does. As someone that has bought every Apple TV since v1 and uses it as my sole entertainment device, it find these developments frustrating.”

[…]

[Josh Centers:] “Apple’s developer relations have never been worse and it would take years to repair the damage, assuming Apple even cares.”

Note that the developer relations comments were made before the recent developments with external links, the DMA and marketplaces, and PWAs.

Nick Heer:

My expectations are not that high. I only wish MacOS, in particular, would not feel as though it was rusting beneath the surface.

I’m shocked that the software quality ratings are as high as they are (an all-time high of 3.6/5), with some people even writing 5/5. iOS certainly has fewer issues than macOS, but even there I’m constantly running into bugs as well as well as missing features like reordering Lock Screen widgets that feel like bugs.

Steve Troughton-Smith:

Pundit opinion of iPad is in a nosedive, in a year where even ports of Final Cut and Logic couldn’t save it.

iPad is scoring lower than the Mac did in 2016 with the butterfly keyboard debacle, and iPad doesn't even have a debacle to blame.

Here are my responses:

Mac: 3 Mac hardware is in a great place except for the lack of options for displays larger than the iMac. SSD pricing is looking even more unreasonable. It’s a shame that the Magic peripherals still use Lightning. The software side is still a mess, both in terms of reliability and design. I like Safari profiles.

iPhone: 4 The iPhone 15 Pro is great, though I’m not totally happy with the camera processing and depth of field. The iPhone 15 is way too slippery. I still wish for a smaller phone. iOS 17 is fine, though not very exciting.

iPad: 3 No new hardware except for the USB-C Pencil and minimal software improvements. The lineup remains confusing. I still haven’t really found what iPad is good for. It can do a lot, but any given task is almost always better on either my Mac, my iPhone, or my Kindle.

Apple Watch: 4, Wearables: 4 Apple Watch hardware continues to improve, though the software, particularly complications, continues to be a bit buggy. Why can’t on-device Siri do more? Not much happened with AirPods this year. Most models still use Lightning, but they work well.

Apple TV: 2 The hardware and remote haven’t improved. The software is poorly designed and increasingly unreliable.

Services: 1 I continue to have reliability problems with iMessage, and this year it lost several months of conversations. There was also a widespread bug where editing related names in Contacts would delete them from all devices. Siri is still slow and unreliable. The services apps are just not good.

HomeKit/Home Automation: 2 I got my first HomePod. The hardware is good, but I was shocked that there’s a bug where it can’t actually see many of the albums I’ve purchased from the iTunes Store. The automation features are more clunky and limited than I expected given how long the’ve been around.

Hardware Reliability: 5 All my hardware has been working well this year.

Software Quality: 1 Everything on macOS, and to a lesser extent iOS, still feels buggy: the same old bugs that never get fixed, plus some new ones. Bug reports are ignored. macOS Sonoma replaced Mail plug-ins with Mail extensions, but even after three major releases the API still doesn’t work properly. Sometimes Gatekeeper erroneously reports that apps downloaded from outside the Mac App Store are damaged and refuses to open them, with no way to override this except using Terminal—the worst possible first launch experience. Xcode 15 shipped with known bugs that prevented building apps for older versions of macOS, and it took three months for these to be fixed. It has now been almost ten years since Swift was released, and the compiler is still buggy and slow. SwiftData shipped this year in an immature state.

Developer Relations: 2 The same old issues with the App Store, documentation, and communication. Nothing seems to be getting better. Apple does not act as though it really cares about developers or their success, and developers see Apple as more an impediment than a help in building, maintaining, and distributing their products.

Social/Societal Impact: No vote [This is such a sprawling category that I never know how to boil it down to a number.]

See also:

Previously:

Update (2024-02-23): See also: Upgrade.

Update (2024-03-20): John Gruber (Mastodon):

I’m publishing my full remarks and grades here.

2023 Apple Vision Accessibility Report Card

AppleVis (via Shelly Brisbin):

The 2023 Apple Vision Accessibility Report Card reveals slightly decreasing satisfaction with VoiceOver features and user experience across iOS, iPadOS and macOS compared to 2022, contrasted by mostly improved ratings for braille and low vision capabilities. While reactions to new 2023 vision accessibility features were moderately more positive with a 3.7 average rating compared to 3.5 in 2022, Apple’s performance in addressing critical bugs remains low at 3.0. Overall the latest report card points to regressions in the VoiceOver experience but progress expanding support for braille and low vision users, tempered by persistent dissatisfaction regarding bug fixes.

[…]

Jimmy wrote: It feels like Mac OS Voice Over has been left abandoned, and fallen behind its iOS version very far by now. There are so many helpful features offered on iOS that the Mac version does not. Examples include the ability to leave out unnecessary voice off of rotor selection, ability to customise Voice Over’s default keyboard commands or shortcuts, and the AI-powered screen recognition and image description features (not that although the option does exist on Mac, but its practical capacity is far inferior).

[…]

Bruce Harrell wrote: Apple takes entirely too long to fix serious bugs, such as safari not responding and voiceover focus. I no longer upgrade MacOS until the following August on the theory it will take Apple until August to correct MacOS accessibility bugs as much as they will, and I am very reluctant to upgrade IOS for the same reason.

[…]

In one question, we ask about the new accessibility features introduced in 2023. To help you answer this question, we recommend taking a look at the preview of these features and Scott Davert’s blog post discussing what’s new in iOS 17 accessibility for blind and deaf-blind users.

Previously:

Wednesday, February 21, 2024

iMessage With PQ3

Apple (via Ivan Krstić, because there is no RSS feed, Hacker News, MacRumors):

Today we are announcing the most significant cryptographic security upgrade in iMessage history with the introduction of PQ3, a groundbreaking post-quantum cryptographic protocol that advances the state of the art of end-to-end secure messaging. With compromise-resilient encryption and extensive defenses against even highly sophisticated quantum attacks, PQ3 is the first messaging protocol to reach what we call Level 3 security — providing protocol protections that surpass those in all other widely deployed messaging apps. To our knowledge, PQ3 has the strongest security properties of any at-scale messaging protocol in the world.

[…]

To mitigate risks from future quantum computers, the cryptographic community has been working on post-quantum cryptography (PQC): new public key algorithms that provide the building blocks for quantum-secure protocols but don’t require a quantum computer to run — that is, protocols that can run on the classical, non-quantum computers we’re all using today, but that will remain secure from known threats posed by future quantum computers.

[…]

To best protect end-to-end encrypted messaging, the post-quantum keys need to change on an ongoing basis to place an upper bound on how much of a conversation can be exposed by any single, point-in-time key compromise — both now and with future quantum computers. Therefore, we believe messaging protocols should go even further and attain Level 3 security, where post-quantum cryptography is used to secure both the initial key establishment and the ongoing message exchange, with the ability to rapidly and automatically restore the cryptographic security of a conversation even if a given key becomes compromised.

[…]

Support for PQ3 will start to roll out with the public releases of iOS 17.4, iPadOS 17.4, macOS 14.4, and watchOS 10.4, and is already in the corresponding developer preview and beta releases. iMessage conversations between devices that support PQ3 are automatically ramping up to the post-quantum encryption protocol.

The obvious question is, but what about iCloud backups? Advanced Data Protection is off by default, and most users leave it off, so most messages are not truly end-to-end encrypted, and this won’t change that. Jason Snell implies that iCloud backup with Advanced Data Protection does support PQ3, but Apple’s blog post doesn’t mention backups or ADP at all.

Steve Troughton-Smith:

Apple’s encryption may be quantum-computer-proof, but it’s not lawmaker-proof. And that’s a weak link that absolutely will be exploited, someday. E2EE is a luxury that can be snatched away in an instant, a false sense of security in an increasingly dangerous world.

Previously:

Update (2024-02-23): Nick Heer:

Apple says this protocol will begin rolling out with the public releases of iOS 17.4, iPadOS 17.4, MacOS 14.4, and WatchOS 10.4 — missing from that list is VisionOS, though I am not sure I should read anything into that — but it is not clear to me if these operating systems are required for PQ3 encryption. In other words, if a device has not been updated or cannot be updated to these software versions, does that preclude messages from being encrypted using this protocol? If so, that might be true of all iMessage contacts, and it does not appear there is any way of knowing which encryption protocol is being used.

[…]

These are among the many questions I have for Apple, and I expect to hear more as this update approaches its release. However, I do not think I will get an answer to the thing I am most curious about: is a protocol similar to PQ3 going to be used by Apple to secure other end-to-end encrypted data against future threats? It would make sense.

Update (2024-02-27): Bill Toulas:

A significant innovation within PQ3 is its periodic post-quantum rekeying mechanism, a first of its kind for large-scale cryptographic messaging protocols.

This mechanism frequently regenerates new quantum-resistant keys, ensuring maximum security balanced with low impact on user experience.

[…]

Signal’s president Meredith Whittaker stated that they too considered a similar feature, but decided against implementing it until a more mature solution is devised.

John Gruber:

One hole in iMessage’s security story is old devices — those that can’t be upgraded to the latest OS. It’s great that Apple devices tend to be useful for years after they’re no longer capable of running the current OS, but that means that iMessage communication is only as secure as the oldest device in the chat.

[…]

Another hole remains iCloud backups, which, by default, continue to include iMessage message history using keys that Apple controls — which in turn means keys that Apple can, and does, use to turn over data to law enforcement when issued a warrant.

[…]

And even if you have Advanced Data Protection enabled, there’s no way for you to know whether the people you communicate with using iMessage have it enabled.

Bruce Schneier:

I am of two minds about this. On the one hand, it’s probably premature to switch to any particular post-quantum algorithms. The mathematics of cryptanalysis for these lattice and other systems is still rapidly evolving, and we’re likely to break more of them—and learn a lot in the process—over the coming few years. But if you’re going to make the switch, this is an excellent choice. And Apple’s ability to do this so efficiently speaks well about its algorithmic agility, which is probably more important than its particular cryptographic design. And it is probably about the right time to worry about, and defend against, attackers who are storing encrypted messages in hopes of breaking them later on future quantum computers.

See also: Douglas Stebila.

Signal Usernames

Randall Sarafa (Mastodon, Hacker News):

If you use Signal, your phone number will no longer be visible to everyone you chat with by default.

[…]

If you don’t want to hand out your phone number to chat with someone on Signal, you can now create a unique username that you can use instead (you will still need a phone number to sign up for Signal). Note that a username is not the profile name that’s displayed in chats, it’s not a permanent handle, and not visible to the people you are chatting with in Signal. A username is simply a way to initiate contact on Signal without sharing your phone number.

[…]

If you don’t want people to be able to find you by searching for your phone number on Signal, you can now enable a new, optional privacy setting. This means that unless people have your exact unique username, they won’t be able to start a conversation, or even know that you have a Signal account – even if they have your phone number.

Tjaden Hess:

How does this work under the hood? Let’s take a look!

Previously:

Update (2024-03-11): Devin Coldewey (via Hacker News):

“Let me start by kind of explaining that with an example. In India recently, it has become a requirement, in order to obtain a SIM card, to submit to a biometric facial recognition scan. That is not just happening in India, we’re seeing a number of jurisdictions where to obtain a phone number, you are required to provide more and more personal information. Some, in some places like Taiwan, that is linked to government ID databases that often get breached and cause a lot of problems,” she said.

[…]

It’s a problem that far larger organizations have trouble addressing, as millions or billions of users register and change names that could in themselves be rules violations — a name is just a short string, and can as easily be “RainbowBubbles” as it can be “Kill_all_[insert slur here].” Impersonation, scams, all kinds of issues are equally possible in username fields as they are in posts or profile fields.

Signal’s solution to this is, basically, to eliminate the ways these methods cause harm at scale, rather than trying to prevent them altogether.

Kaleidoscope 4.3.1

Florian Albrecht:

Now I have several pieces of text in Kaleidoscope, each represented by an entry in the File Shelf. In this case, we can see that “files” in File Shelf can also be temporary clipboard content. Further on in this post, we will also see that they can be the results of Unix pipes or Git revisions of a file.

Most of the time, it’s much quicker to take parts from two different versions that I like. But even then, I tend to change a few bits.

To solve that puzzle, we need a slightly different approach. First, I make sure that the two best versions are selected as A and B. Then I select Merge > New Merge from Comparison from the menu. This opens a new merge document with the two previously selected results as A and B and a merged version in the middle. Now I can copy from A and B to the result as I like, and I can also freely edit the merged result.

Florian Albrecht:

It’s not uncommon that files will be moved or renamed over time in a Git repository. Kaleidoscope can now track those changes. It shows the entire history of a file, across name and path changes. The commit details popover informs about any change in files name or location for that commit. The filter at the bottom of the File History allows searching for all past names of a file.

[…]

Kaleidoscope 4.3 looks at the remote of a Git repository. When it detects a common one, such as a GitHub, GitLab or Bitbucket URL, it tries to be smart and automatically offers links to tickets, commits, and branches.

[…]

The beauty with Kaleidoscope 4.3 is that this Markdown content is now being rendered properly, making digging into past work on a file much easier and more fun.

Previously:

VirnetX v. Apple Over Because VPN Patents Invalidated

Juli Clover (2023):

Apple has been embroiled in a patent dispute with VirnetX for well over a decade, and the company today won an appeals verdict that could ultimately save it from having to pay VirnetX $502.8 million in patent infringement fees.

[…]

Apple in 2020 was ordered to pay VirnetX $503 million for infringing on VPN patents owned by VirnetX with the iPhone’s VPN on demand feature. The two patents that have been invalidated were involved in that lawsuit, and now Apple might get the entire judgment vacated.

[…]

Regardless of how this case plays out, Apple was forced to pay VirnetX $440 million for violating VirnetX’s communications security patents with the FaceTime and iMessage features.

Juli Clover:

The United States Supreme Court today said that it will not hear the VirnetX vs. Apple patent case, putting an end to a 14-year-long legal battle and ultimately saving Apple $502.8 million.

[…]

After Apple appealed the initial 2020 ruling, it was able to point to the invalidation of the patents and get the initial award vacated by the federal appeals court. VirnetX attempted to escalate the patent invalidation case to the Supreme Court, but has been denied.

Previously:

Tuesday, February 20, 2024

1Password Acquires Kolide

Jeff Shiner:

Why would 1Password acquire a device health and contextual access management solution? The reality is that access isn’t secure if the device doing the access isn’t secure. This is part of the complexity of the modern way we work. Every device, regardless of location, must be secure – just as every log-in, regardless of location, employee, or type of device used, must be secure.

This is where Kolide fits into the 1Password story. Kolide is a leader in device health and contextual access management, and companies need a way to ensure that both the device used and every access request are secure. What also makes Kolide particularly compelling is how the company has taken a similar approach to 1Password and works to enlist employees to deliver better security. This is only possible by providing employees with tools that make security easy to use and adopt, enable them to secure their own activities, and provide them with the context to make the right decisions at the right time.

Kolide:

Kolide is a powerful tool to help your company reach its compliance goals through the power of end-user self-remediation. We leverage the principles of Zero Trust to block a device from accessing your company’s SaaS apps and other resources if it isn’t running the Kolide agent or passing specific requirements.

Jason Meller:

Kolide’s product isn’t going anywhere. More importantly, we (the humans of Kolide) aren’t going anywhere. As part of 1Password, we expect our roadmap to both accelerate and become more ambitious. As a fully intact team, we are continuing to build, iterate, support, and sell Kolide within 1Password.

[…]

It’s been clear since the launch of Device Trust that we need to get these capabilities into everyone’s hands. 1Password shares the same spirit and heart that made it possible for us to create a product like Kolide in the first place. Together, we can get the best way to secure devices and apps into everyone’s hands, no matter who you are.

[…]

We will continue to support and sell the Okta integration to existing and new customers. We have no plans to stop offering Device Trust via Okta, only to grow and expand it, including adding support for Okta’s newly released features.

Epic Gets New Developer Account

Juli Clover:

Epic Games today announced plans to bring the Epic Games Store to iOS in the European Union, with Apple reinstating the company’s developer account.

[…]

The Epic Games Store will launch on iOS in the EU at some point in 2024, and it will provide a way for Epic Games to bring a Fortnite app to iOS once again.

[…]

While working to implement the Epic Games Store on iOS, Epic also plans to continue to “argue to the courts and regulators that Apple is breaking the law.”

Tim Sweeney:

I’ll be the first to acknowledge a good faith move by Apple amidst our cataclysmic antitrust battle, in granting Epic Games Sweden AB a developer account for operating Epic Games Store and Fortnite in Europe under the Digital Markets Act.

It sounds like their developer account was not reinstated, but rather they got a new account for a different legal entity that operates in Europe. It does not sound like they will be using this account to bring back Fortnite for Mac.

Tim Sweeney:

We never understood why Apple killed Fortnite for Mac. Fortnite was never on the Mac App Store and broke no Mac App Store rules. Perhaps someday Apple will explain why they killed Fortnite for iOS while not enforcing the same rules against Facebook, Roblox, and others.

Recall that the account used for the Mac version of Fortnite was associated with the separate Epic International entity that did not violate the App Store guidelines.

John Gruber:

Apple plays hardball, for sure. And Apple has a long institutional memory and knows how to hold a grudge. But Apple is not a spiteful company. Apple likes its corporate nose right where it is — on its face. They play hardball strategically — to their own advantage first, to their users’ advantage second. That’s something Apple’s most vehement critics just don’t get. Setting up Epic to be a winner under their DMA compliance also sets Apple up to be a winner.

It does seem spiteful that Apple didn’t restore Epic’s main developer account, or the Unreal Engine account, even after publicly stating that they would do so. Epic had wanted to bring back Fortnite in South Korea after the Telecommunications Business Act required Apple to allow external purchases there.

It would be quite the public relations coup for Apple to get Epic and Tim Sweeney on their side. And game stores in particular seem like a perfect fit for Apple’s marketplaces, because games primarily monetize by getting players to pay, not just be tracked to be shown ads. Strange times make for strange bedfellows.

Previously:

Sonar 1.1.2

Made by Windmill (via John Gruber):

A native Mac app for GitHub and GitLab Issues.

[…]

Change task titles, assignees, and labels, all on one line. No need to leave your keyboard — just enter “@” for assignees and “#” for labels.

[…]

Intuitively change multiple tasks’ attributes at the same time. Just select multiple tasks in the list, and edit attributes in the Inspector.

[…]

Priorities are a first class citizen in Sonar. Priorities show up as labels to others, so your coworkers aren’t left in the dust.

[…]

Sonar constantly updates search results as you’re typing.

[…]

Switch between Smart Filters for custom views of your tasks. Change how tasks are grouped to get a better perspective.

I’m storing my code on my own server and using EagleFiler to manage my issues, but if I were using GitHub I’d give this a serious try. It seems to be well done.

It says “no subscriptions or purchases required,” but as far as I can tell that just means there’s a free trial. Beyond that, it costs $5/month or $39/year.

Previously:

Update (2024-04-24): Jeff Johnson:

Sonar is the name of an Apple internal app used by some support teams for tracking customer emails.

Made by Windmill:

Taska is beautifully designed to let you quickly create and edit GitHub/GitLab issues.

EU to Fine Apple Over Anti-Steering Rules

Tim Hardwick (Hacker News):

Apple is set to be hit with a €500 million ($538 million) fine for allegedly breaking EU law over access to music streaming services, according to a Financial Times report.

The focus of the European Commission’s investigation has been Apple’s policy of preventing streaming music apps from informing iPhone and iPad users within the app that lower subscription prices are available when signing up outside of the App Store.

[…]

According to the paywalled FT report, the Commission will say Apple’s actions are illegal and go against the bloc’s rules that enforce competition in the single market. Subsequently, it will ban Apple’s practice of blocking music services from letting users outside its App Store switch to cheaper alternatives, which has historically given Apple Music an unfair advantage.

Previously:

Update (2024-02-23): Juli Clover:

In a statement to MacRumors, Apple said that Spotify is aiming to get unlimited access to Apple’s tools and services without paying anything for the value that Spotify receives from the App Store.

“We’re happy to support the success of all developers -- including Spotify, which is the largest music streaming app in the world. Spotify pays Apple nothing for the services that have helped them build, update, and share their app with Apple users in 160 countries spanning the globe. Fundamentally, their complaint is about trying to get limitless access to all of Apple’s tools without paying anything for the value Apple provides.”

[…]

In a statement, Spotify said it does not have a level playing field with Apple and trusts that the European Commission will take action to create a fair ecosystem.

Spotify’s success has happened despite Apple’s best efforts to gain an artificial advantage by favoring their own music service at every turn while placing roadblocks and imposing unfair restrictions on ours. Under their current rules Apple controls Spotify’s access to its own customers and gives Spotify one of two untenable options: We either have to deliver a poor user experience where we can’t directly communicate how to buy or subscribe to Spotify on iPhones or we have to accept a 30% cost disadvantage against our biggest competitor. This is not a level playing field. We support the European Commission and trust that they will take action soon to create a fair ecosystem for everyone involved.

Steve Troughton-Smith:

Whoever wrote the anti-steering clause into the App Store Guidelines just cost the company half a billion dollars in fines, so far, based on a single category of affected app — music.

Yet the company still has the gall to put out PR spin, regurgitated as fact by favored outlets, as if it’s a victim.

Jon Maddox:

You know what “nothing” is? iPhones without third party software.

Previously:

Monday, February 19, 2024

Fraudulent Rabby Wallet App

Filipe Espósito:

As shared by Rabby Wallet on X (via CoinTelegraph), there’s an imposter app available on the App Store using the platform’s name and identity. Named “Rabby Wallet & Crypto Solution,” the app has been available on the App Store for at least four days. On Reddit, some users claim to have had their money stolen by the fake crypto app.

[…]

Affected users have been trying to contact Apple to warn the company about the scam, as well as the real developers behind Rabby Wallet. However, days later, the imposter crypto app remains available on the App Store. Furthermore, Rabby Wallet claims to have submitted its official app to the App Store, but Apple approved the fake app before the real one.

Unfortunately, this is not the first time that a fake Rabby Wallet app for iOS has been approved by Apple.

See also: Apple Support Community.

Previously:

Update (2024-02-20): John-Anthony Disotto:

It appears that the fake Rabby Wallet application is no longer available as iMore wasn’t able to access the listing on the App Store, but the damage has, unfortunately, already been done.

[…]

While every app on the App Store goes through a strict approval process, some can fall through the cracks, like in 2021 when one iPhone user lost $600,000 in Bitcoin to a similar crypto app scam.

Update (2024-02-27): Joshua Long:

It isn’t clear exactly when the Curve Finance app first made it into the App Store. The fake Rabby Wallet app was likely available starting on February 14, given the date on which the fake app’s Facebook page was created and the first (negative) review was posted.

The fake Curve Finance app somehow had a “4.6 out of 5” star rating, with apparently nine five-stars and a single one-star rating. Meanwhile, the fake Rabby Wallet app wasn’t pre-loaded with fake ratings, so it had a “1.0 out of 5” due to two one-star ratings.

[…]

Both fake finance apps used the real products’ names. This time the fake apps’ developers didn’t even try to hide behind typosquatting or similarly spelled names; they just went directly for stealing the names of the companies and products they were mimicking.

Hidden Messages Features in iOS 17

Tim Hardwick:

If you press and hold the + button, you will be dropped straight into your photo library, ready to select the pictures you want to send.

[…]

Thankfully, in iOS 17, Apple improved the search function so that you can combine search queries and narrow down results to quickly find the messages that you’re looking for. If you’re looking for an image or link from a certain person, for example, first type in the person’s name, then tap “Messages with: [person’s name]”.

Next, select the “Photo” or “Link” filter that appears, and Messages will narrow down the search results further. You can then enter an additional keyword and Messages will show you any links or pictures containing the word. Alternatively, you can start a search with a keyword and then filter the results by person, link, photo, or location.

The Messages feature I’d like to see is being able to Tapback or easily reply from within a notification on macOS.

Previously:

iOS RCS Support Due to China

John Gruber (9to5Mac, Hacker News):

So even if iMessage had been deemed a “gatekeeper” messaging platform by the European Commission — which it was not — adding RCS support to the iPhone Messages app would not have mattered a whit when it came to DMA compliance.

[…]

But then why did Apple do a 180° turn on RCS? I can’t say for certain, alas, but after spending the last few months periodically poking around the trees inhabited by little birdies, I do have good news for fans of coercive government regulation. Apple’s hand was effectively forced. But by China, not the EU.

Chinese carriers have been proponents of RCS for years, and last year, the Chinese government began the process of codifying into law that to achieve certification, new 5G devices will be required to support RCS. (Here’s a good English translation on Reddit of the parts relevant to Apple.) Shockingly, the Chinese government seemingly isn’t concerned that the RCS standard has no provisions for encryption. The little birdies I’ve spoken to all said the same thing: iOS support for RCS is all about China.

Eric Schwarz:

Personally, the current state of iPhone-to-Android SMS/MMS is terrible, so I’m looking forward to RCS—it’s not something my Android-using pals need to adapt to message me with other services or half-baked iMessage implementations. Is RCS perfect? No, but it’s a drop-in-place improvement over what we currently have.

Previously:

Update (2024-02-20): See also: MacRumors.

Reporting a Full Disk Access Bug to Apple

Beatrix Willius:

Update from Ventura to Sonoma.

[…]

It is still possible to access the Mail folder even though FDA has been revoked. This also happens for other apps like Find Any File. I revoked FDA for Find Any File and was still able to search for emails in the Mail folder.

[…]

On 21-Sep-2023, I reported the bug to Apple as a security issue. Apple requested videos demonstrating the problem, code snippets, and screenshots. This took place over several weeks in November. At some point between the end of November 2023 and February 2024 the case was closed. Apple stated that they were not able to identify a security issue[…]

Previously:

Friday, February 16, 2024

The SwiftUI Field Guide

Chris Eidhof:

We built this website to visually explain how the SwiftUI layout system works, and we hope you find it useful.

To make the examples work, we ported large parts of SwiftUI’s layout system to TypeScript. While we’ve tested our implementation extensively, there might still be discrepancies between SwiftUI’s behavior and what you see here.

Christian Tietze:

As a resource to learn, the approximations are more than good enough. They are excellent and by virtue of being interactive, they are also much better to get a feeling for everything than the SwiftUI documentation’s images can ever be. There’s only so much an API documentation can teach you before you need to observe how it really behaves.

Since it’s in a browser, the preview is of course even faster than Xcode Previews would be, and without the crashes. (Oh, the crashes …)

Update (2024-02-20): Chris Eidhof:

There are so many little fun details in there: the site changes color when you’re in dark mode (and the “SwiftUI” colors change, too). The code is formatted using a pretty printer, making it responsive on mobile (this isn’t perfect, but in most examples it is better than doing nothing). The more complex animations are done in “SwiftUI”.

Update (2024-03-07): Helge Heß:

I think it is still worth mentioning “The SwiftUI Lab” site, which also has a great set of articles about SwiftUI. E.g. alignment guides.

Meta to Pass Along Fee for Boosted Posts

Meta:

To support the millions of small businesses that use boosted posts on Facebook and Instagram, advertisers can now go to Instagram.com and Facebook.com on mobile and desktop to boost their content and avoid a 30% Apple service charge.

The Apple service charge is a result of updates Apple made to the App Store Review Guidelines. Starting later this month, when an advertiser uses the Facebook or Instagram iOS app to Boost a post, they will be billed through Apple, which retains a 30% service charge on the total ad payment, before any applicable taxes. This service charge is retained by Apple, not Meta.

In other words, they are charging extra if the payment is processed by Apple, passing Apple’s fee along to the customer. You can avoid the fee by purchasing on the Web, but they probably aren’t allowed to tell you that in the app.

We are required to either comply with Apple’s guidelines, or remove boosted posts from our apps. We do not want to remove the ability to boost posts, as this would hurt small businesses by making the feature less discoverable and potentially deprive them of a valuable way to promote their business.

[…]

Another change happening as a result of Apple’s update is that advertisers will need to go through a different payment process when boosting posts through the Facebook and Instagram iOS apps. Unlike the previous experience, where advertisers were charged after their boosted posts ran, businesses on iOS will now be required to pay in advance, and add prepaid funds to their account to draw from to boost a post.

Joe Rossignol:

“We have always required that purchases of digital goods and services within apps must use In-App Purchase,” said Apple, in a statement shared with MacRumors today. “Boosting, which allows an individual or organization to pay to increase the reach of a post or profile, is a digital service — so of course In-App Purchase is required. This has always been the case and there are many examples of apps that do it successfully.”

As Rossignol points out, Apple loves to say stuff like this even when it clearly isn’t true so that they can pretend they’ve never raised any fees. Meta has been selling boosts for years without paying this fee, which is why Apple updated the rules in 2022 to say that the policy was changing. The statement above is the exact same one they offered to the press at that time. If boosting has always required a fee, why did Phil Schiller testify in the Epic trial that Apple had never taken a cut of ad revenue? The bottom line is that Apple changed the rules and gave Facebook a special temporary exception that was not available to other developers.

Previously:

iOS 17: Assistive Access

Mike Rockwell:

Assistive Access gives you a simplified, focused interface with access to only the apps and features you choose to enable. It was designed for people with cognitive disabilities, but there are plenty of other uses.

[…]

Some applications are built with Assistive Access in mind. Those applications offer an entirely different user interface than what you get from the app in the traditional iOS Home Screen experience. I wish that there was an option to just use the non-Assistive Access version of each app.

[…]

Lastly, it doesn’t seem that there is a way to use Bluetooth or AirPlay speakers at all while in Assistive Access.

It’s kind of like At Ease for iOS.

Previously:

U.S. Internet Leaked Years of E-mails

Brian Krebs:

The Minnesota-based Internet provider U.S. Internet Corp. has a business unit called Securence, which specializes in providing filtered, secure email services to businesses, educational institutions and government agencies worldwide. But until it was notified last week, U.S. Internet was publishing more than a decade’s worth of its internal email — and that of thousands of Securence clients — in plain text out on the Internet and just a click away for anyone with a Web browser.

[…]

Hold Security founder Alex Holden said his researchers had unearthed a public link to a U.S. Internet email server listing more than 6,500 domain names, each with its own clickable link.

Drilling down into those individual domain links revealed inboxes for each employee or user of these exposed host names. Some of the emails dated back to 2008; others were as recent as the present day.

I’ve never seen anything like this.

Previously:

On the Insecurity of Software Bloat

Bert Hubert (via Hacker News):

The really short version: the way we build/ship software these days is mostly ridiculous, leading to 350MB packages that draw graphs, and simple products importing 1600 dependencies of unknown provenance. Software security is dire, which is a function both of the quality of the code and the sheer amount of it. Many of us know the current situation is untenable. Many programmers (and their management) sadly haven’t ever experienced anything else. And for the rest of us, we rarely get the time to do a better job.

In this post I briefly go over the terrible state of software security, and then spend some time on why it is so bad. I also mention some regulatory/legislative things going on that we might use to make software quality a priority again. Finally, I talk about an actual useful piece of software I wrote as a reality check of the idea that one can still make minimal and simple yet modern software.

I hope that this post provides some mental and moral support for suffering programmers and technologists who want to improve things. It is not just you, we are not merely suffering from nostalgia: software really is very weird today.

Niklaus Wirth:

Reducing complexity and size must be the goal in every step—in system specification, design, and in detailed programming. A programmer's competence should be judged by the ability to find simple solutions, certainly not by productivity measured in “number of lines ejected per day.” Prolific programmers contribute to certain disaster.

[…]

With Project Oberon we have demonstrated that flexible and powerful systems can be built with substantially fewer resources in less time than usual. The plague of software explosion is not a “law of nature.” It is avoidable, and it is the software engineer’s task to curtail it.

See also: Bert Hubert (via Bruce Schneier).

Previously:

Update (2024-02-20): See also: Hacker News.

Thursday, February 15, 2024

Slack at 10

Elizabeth Lopatto:

That’s one reason why Slack, the workplace chat app that formally launched 10 years ago today, is so unusual. Slack was the rare piece of enterprise software that spread through word of mouth, because it was actually, you know, good.

[…]

Slack was not the only text-based communications software. Besides Skype chat and Gchat, there were also other startups: HipChat, Yammer, and Campfire. Slack tested out these products to see what didn’t work with them and discovered two things they could improve on: notifications and keeping a person’s place when they switched between mobile and desktop. That meant that even though Slack wasn’t doing head-to-head marketing — or indeed, any marketing at all — customers kept leaving other platforms and coming to Slack because it worked better.

[…]

Because so many people were using Slack in their work lives, some of its features started leaking out. For instance, Slack introduced emoji reactions — to reduce noise, people could just respond with a checkmark to show they’d read something. This spread from Slack back into consumer software. Tapbacks on iMessage feel like a response to Slack. Even Facebook, which had a like button, didn’t add other options until later. “I think we were the first to do it on a broad basis within the workplace,” Rodgers says. “We saw reactions show up everywhere within a couple years. I can remember one day opening GitHub of all things, and they had a reaction bar.”

Personally, I find Slack to be worse than forums and mailing lists.

Previously:

Mac App Launches Slowed by Malware Scan

Jeff Johnson:

macOS is periodically scanning FileMerge for malware on launch, which causes very slow app launches. I don’t know what the exact period is between scans, but rebooting the Mac seems to reset the cache[…]. I’ve noticed the same syspolicyd malware scanning and consequent slow launches with some other apps such as Xcode itself, Google Chrome, and Wireshark. You can even see syspolicyd spinning up % CPU in Activity Monitor when the malware scan happens.

[…]

I also saw somewhat slow launching from another app bundled with Xcode, Accessibility Inspector. This app is larger than FileMerge, yet it launches much more quickly. I suspect the reason is that it links to fewer Xcode frameworks[…]

[…]

You may remember our friend syspolicyd as the process that phones home to Apple when running unsigned executables. It was also the culprit in making Xcode tools slow after reboot.

[…]

I’ve now confirmed that disabling SIP does indeed eliminate the syspolicyd malware scan. Xcode launches so fast, it’s beautiful.

Previously:

Activation Behavior of a Global Command Palette

Art Lasovsky:

To improve this, we can add NSApplicationDelegate to our app and set the activation policy to .prohibited in the applicationWillFinishLaunching(_:) method. Then, in the applicationDidFinishLaunching(_:) method, we can set the activation policy to .accessory(or .regular if we want the dock icon to be visible).

This way, the app will launch without stealing focus.

[…]

We override the close() method and add NSApp.hide() to deactivate the app after closing the window.

By overriding the cancelOperation(_:) and resignKey() methods, we ensure that our launcher will be closed when the user presses the Esc key or selects another window.

Previously:

CGContextHighlight2xScaledImages

Wade Tregaskis:

As you can see, Sonoma brought with it a penchant for tinting things a gross light pink colour, including the rectangular extents of images that are otherwise invisible because they’re transparent.

[…]

In theory you can also disable this from the Quartz Debug app itself, it’s just hidden – in the Tools menu, not the actual settings window, is an item labelled “Color 1x Artwork”. Note how the setting applies even when Quartz Debugging is disabled.

[…]

I know it’s not just me that’s been afflicted by this to date, as I found a sporadic few reports of this going back years, e.g. Highly abnormal graphic glitch on yosemite / retina: all white backgrounds appear pink. It pisses me off immensely that this page has exactly the keywords I was searching for right from the start – right in its title! – yet neither Bing nor Google can find it.

He also mentions the “encrypted external drives no longer mounted automatically” bug, but I don’t think it’s new in Sonoma. I’ve been seeing it since Big Sur or so.

Apple News You Can’t Use

Joe Rosensteel (Mastodon):

Apple News+’s problems start with Apple News as an app. The page layout is both cramped, and light on all the relevant details. Headlines get awkwardly cropped, and the first impression of the app is always the front page of a newspaper where an editorial team has selected relevant stories for a mass market from a range of national publications. Severing the pieces from any wider context from those publications, but placing them next to each other to show Apple News is impartial.

[…]

The LA Times in the LA Times app is better than the LA Times in Apple News, and anyone who thinks they’re getting the fullness of a publication from their single Apple News+ subscription is absolutely not. That includes things like layouts, special reporting, recipes, etc.

Additionally, ads are also part of the Apple News app layout, and the quality of the advertising is lowest common denominator bullshit that might as well be Taboola ads.

[…]

Assuming I survive running the gauntlet that is the Apple News app and I want to share an article quickly, and easily with other people, I can’t even do that. Apple wants to hijack that relationship and would prefer I send News/News+ links. For Apple, the important thing is to grow the number of people in the News app, and grow News+ subscribers, but for me the important thing is that someone can read what I sent them to read.

The bottom line for me is that it seems to offer less control over what I see than Safari RSS did, and the reading experience is far worse than in a Web browser.

Eric Schwarz:

Every time that I give the service a try, I always quickly lose interest and then let the trial lapse. […] I found it frustrating that blocked sources and topics would still surface: even though “Sports” is a prominent section, it will show you all popular sports, no matter how many times you tell it you’re not interested in a particular one. The general tone can be best described as “cheap”—it’s not a place I enjoyed browsing.

Previously:

Update (2024-03-21): Joe Rosensteel:

I would like to detail some things that I think would help to make the News app and News+ service more appealing.

[…]

The editors can weight stories that are of interest to surface in that region, but those weights should be overridden by any blocking, or content filtration, that a user wants to employ.

[…]

Instead of voting on individual stories with thumbs that don’t seem to mean a goddamn thing, or blocking an entire news outlet, what if we could filter by words, or phrases. You know, like in ye olden days? I can filter email, surely I can filter news, which we’ve already established is an inbox.

[…]

I already use iCloud Hide My Email addresses to subscribe to newsletters for some layer of privacy, how nice would it be to have an iCloud email address that ingested newsletters into Apple News?

[…]

Flat out we need to get rid of the round rectangles that are too small to show an entire headline. That can’t be a thing.

Update (2024-04-24): John Gruber:

While I’m singing the praises of Electron apps, I should also praise the memory efficiency of Catalyst apps, especially Apple’s own. 1.5 GB for a single-window app.

Wednesday, February 14, 2024

Swift Collections 1.1

Karoy Lorentey (Mastodon):

This feature release adds a number of new data structure implementations, along with minor changes to existing constructs.

[…]

  • Heap implements a min-max heap, backed by a native array.
  • BitSet and BitArray are two alternate representations of a bitmap type, backed by dynamically allocated storage.
  • TreeSet and TreeDictionary are hashed collections implementing Compressed Hash-Array Mapped Prefix Trees (CHAMP). They provide similar API as Set/Dictionary in the Standard Library, but as persistent data structures, supporting incremental mutations of shared instances and efficient structural diffing.

Michael Steindorfer has written a paper and thesis about CHAMP.

Previously:

Update (2024-02-21): Majid Jabrayilov:

Dictionary and Set types that Swift language provides us store values in a single flat hash table that you copy on every write or mutation. The Swift Collection package introduces TreeDictionary and TreeSet types implementing Compressed Hash-Array Mapped Prefix Trees. In other words, TreeDictionary and TreeSet types hold values in the tree-based structure, allowing the efficient updating of only the needed branches.

[…]

The TreeDictionary is still a struct, but the implementation uses the UnsafeMutablePointer type to access memory and mutate it directly without copying on write. Another benefit of the TreeDictionary and TreeSet types is the optimized way to compare because of their tree-based nature. Usually, they handle this operation in a constant time.

Mail and Preview Working Together

Wade Tregaskis:

…after I’d filled out a form PDF that was emailed to me. It had exactly the option I wanted first and foremost, to send the completed PDF back to the sender.

Sure, manually digging up the completed PDF from disk and dragging it into a Mail Compose [Reply] window isn’t hard, but it just feels so thoughtful when the system saves me the effort. Knowing that someone, somewhere, actually thought through how Mail & Preview might be used, and thought enough of their users to go to the trouble of implementing this.

This does not happen when editing an image file. Is it only for PDF forms?

Unlike with kMDItemWhereFroms, there does not seem to be a public API, e.g. so that a third-party mail client could make the same information available to Preview or a third-party document editor could access the information from Mail.

The metadata seems to be stored in the com.apple.metadata:kMDLabel_6wu35kendfqeclnscacnwxtp5a extended attribute, which seems to be encrypted. I guess this is to prevent accidentally sharing it with other Macs because on the same Mac it’s accessible using mdls. Finder also displays an envelope badge on files with this attribute and displays some of the e-mail information.

Update (2024-04-08): Simon:

So far so good I guess. But did you know that when you select such a file in column view it now displays that email icon and a link (to Mail, and in my case non-functional) INSTEAD of the file size in the location where the file size used to be? So in order to see the size of a file that came as an email attachment I’m now having to open a Get Info window.

The iMessage Halo Effect

John Siracusa:

The iMessage service is not so good that it makes the iPhone more attractive to customers. It’s the iPhone that makes iMessage attractive. The iPhone gives iMessage its cachet, not the other way around.

[…]

Today, it still feels like the iPhone is carrying iMessage. Anecdotally, both my teenage children have iPhones, but their group chats with their friends take place in WhatsApp.

[…]

Apple has little to lose by expanding iMessage to other platforms, and there still may be something to be gained (even if it’s just making mixed Android/iPhone conversations in Messages a bit more smooth).

Previously:

Fraudulent Kimi App

Wes Davis:

There’s a vision testing app called Kimi sitting at number eight in the Apple iOS App Store’s trending list of free entertainment apps right now (and number 46 overall for free apps!). But it’s not an app for testing your eyesight, at least not unless you consider watching pirated movies on your smartphone a form of vision testing, which, I suppose you could?

[…]

You open it, and there are just movies and TV shows right there for you to watch. There’s no splash screen and no trick to unlock the real app. It wasn’t hidden at all under a thin veneer of legitimacy.

Juli Clover:

The App Store description mentioned comparing two pictures as an eyesight test, watching scenery, and playing games, but none of those features were present in the app.

[…]

Apple pulled the app this morning after The Verge wrote about it, and it is no longer available.

This is the second time in the last week that Apple’s App Store has made headlines for questionable app approval.

Even if Apple were doing a good job of reviewing, there’s little they can do about apps that change their functionality outside of the review environment. Apple knows this but is still pretending that it’s even possible to do what they claim to do. High-profile apps like this get caught eventually, but there’s probably a large number of them that are unpopular and so stay under the radar.

Previously:

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

Incidentally, this problem applies to Mac app notarization too. A developer can easily notarize a harmless app that software updates itself into malware.

Tuesday, February 13, 2024

JuxtaCode 1.0.2

Yori Mihalakopoulos (Mastodon):

Easily trace your code’s history, so you can better shape its future. Browse commits, compare branches, see how a file has changed over time. Gain insights into tricky conflicts and resolve them with a powerful merge tool.

[…]

Access a file’s complete history by simply opening it. A dedicated tab will show all the relevant changes from the file’s inception to the latest commit (or your local changes if you’ve made a recent edit) even if the file has been renamed or moved along the way.

As with Kaleidoscope, this quick file history works with loose files. You don’t have to open the repository first. JuxtaCode is a file comparison tool, but it acts more like a Git client here in that as you move up and down the commit list it shows you the changes made in the selected commit, whereas Kaleidoscope is mored designed around your choosing two arbitrary versions to compare.

JuxtaCode detects conflicts and surfaces the information you need to track down the underlying causes. When it comes to making fine-grained edits, the powerful and adaptive 3-way merge tool helps you weave together code from each side of the conflict.

I haven’t had the need to use this yet. The app is $40 (no subscription) with a 14-day trial.

Previously:

Split View Proactive Peek and Reveal on Edge Hover

Wade Tregaskis:

It’s easy to see how some UI designer thought this was a good idea. Surely if you move the mouse near the edge of the window (or the screen, in fullscreen mode) and rest it there, it’s because you’re looking forlornly for your lost sidebar? What could be more helpful and delightful than your missing sidebar popping into view?!

Unfortunately, they have ignored that fact that there is usually already other GUI controls at the edge of the window, not the least of which being the window edge itself (for drag-resizing of the window). Scrollbars are another common inhabitant of window edges.

“Proactive Peek” is the worst of these two because not only does it change what’s under the mouse cursor just as you’re likely to click, stealing the click away from its true target, but it actually shrinks the window’s visible contents. This leads to layout changes and motion noise, particularly in web pages where it can have knock-on effects like mucking with the scroll position or causing major changes by crossing some “responsive design” threshold.

Losing the sidebar is a real problem that people encounter and get stuck on. Maybe it wasn’t such a good idea to get rid of all the borders and chrome. Proactive Peek actually is kind of delightful, but there are some issues, as he mentions. For me, it changes the Safari toolbar layout. I also wonder whether it’s obvious enough or easy enough to trigger to really help people who are lost.

Bumping macOS’s Major Version Number

Jordan Rose:

There were four good moments for Apple to switch Mac OS version numbers from 10.X to 11 […] and they missed all of them, instead eventually tying it to the Apple Silicon switchover (what would have been 10.16).

I think about this a lot. They ended up doing it with macOS Big Sur, which had major interface changes in addition to Apple Silicon. The numbers are still out of sync with iOS, and macOS has a lower number even though it’s much older. I still see a lot of confusion from people, e.g. an app requires 10.13 or later and they have 12.0 and think it isn’t supported.

Previously:

Dragging From a List With SwiftUI

Marco Arment:

I wish so badly that SwiftUI’s .onMove supported multiple-item selection in a List.

I should never need to tell my customers, “That was too difficult to achieve in SwiftUI, so that feature is gone.”

It’s scary reading stuff like this because, glancing at the API, the source is an IndexSet, so it seems like it was designed to handle multiple items. How are you supposed to know ahead of time that this doesn’t work? I was hoping to see someone reply, telling Arment what he was doing wrong, but instead there were two links to forum threads about list dragging being broken.

Tim Schmitz:

This category of problem still really concerns me about the future of Apple’s UI frameworks. There are some things that were possible in UIKit that just aren’t in SwiftUI, and Apple doesn’t seem too bothered by some of them.

This is basic stuff, not obscure features. The iOS and macOS interfaces make heavy use of lists and tables. And SwiftUI was introduced almost 5 years ago.

Arcticulate:

SwiftUI 5 feels mostly feature complete on the iOS side, but List keeps being hard for Apple to get right it seems. In terms of onDelete and onMove, they have improved a bit over the years but still problematic.

On the Mac side, I periodically take a look at Shortcuts to see how it’s doing. It still doesn’t support dragging and dropping shortcuts from the list into a folder in the sidebar (even if you only drag one). It does let me re-order a multiple selection, though it also lets me try when a sort is in effect, which of course doesn’t work. Whenever I click on something in the sidebar it loses the sort and goes back to the manual ordering. I don’t know what the thinking was here.

Previously:

Update (2024-02-14): Rhett Rogers:

Every time I attempt to use a SwiftUI List, I think it is perfect.

Then I actually have to make something real and it almost always falls short whenever I have to do anything with custom colors or animations. And I fall back to a ScrollView { VStack {} }.

Helge Heß:

It would be ok if it would just affect customization, I just want the stuff that is builtin. But it’s flickering and has all sorts of other weird side effects (transitions etc).

[…]

I was converting a like 3y old SwiftUI app to List end of last year assuming that it should have gotten OK by now. Still the same mess (same for LazyVStack fwiw, so as you went back to ScrollView + non-lazy VStack).

Monday, February 12, 2024

OmniFocus 4

Ainsley Bourque Olson (podcast, video):

OmniFocus 4 introduces a modernized, unified interface across Mac, iPhone, iPad, and Apple Watch. Centered around your task outline, OmniFocus 4 brings a consistent experience, optimized for each device type, to all of your Apple devices.

[…]

By default, items display assigned project, tags, due date and flag status, and selecting a row provides immediate editing access to these fields as well as the item’s note. With OmniFocus Pro, customize displayed fields on an app-wide or per-perspective basis (including re-ordering visible fields, and selecting fields to display only when editing an item).

[…]

Custom Perspectives — New flexible organization options introduce support for manually re-ordered lists and hierarchy preservation in ungrouped custom perspectives.

Back & Forward Navigation — When switching perspectives, you now have the option to go back to the perspective you came from using the new “Back” button in the toolbar. If you change your mind, you can go “Forward” again.

[…]

Widgets — Configure your Lock Screen or iPhone Standby mode with an array of OmniFocus 4 widgets. Complete items directly from updated interactive widgets on macOS Sonoma, iOS 17 and iPadOS 17. On watchOS 10, view OmniFocus widgets in the brand new Smart Stack.

It’s now a universal purchase, either from their store or the App Store. The subscription is still $10/month or $100/year. You can also still purchase perpetual licenses for $75 or $150 (Pro), and there’s a 50% discount for upgrades. This is more expensive than before if you only want a single platform but less expensive if you want both Mac and iOS/watchOS. Given that it’s historically been about 5 years between major upgrades, this definitely seems like the way to go. There’s also a Web version, which you can only get via subscription.

OmniFocus 4 has a new bundle identifier and a new SKU in the App Store. Omni lost all of their ratings and reviews, but this brings some advantages for customers. You can upgrade on your own schedule and compare the old and new versions side-by-side. They’re also sync-compatible, so you can switch back and forth between versions using your real data or continue using OmniFocus 3 on an older Mac (since version 4 requires macOS 13 or later). The two versions are easy to tell apart because version 4’s icon has a black checkmark. A downside to the new bundle identifier is that the data that doesn’t sync—view state and keyboard shortcuts—is not automatically transferred, so it takes some tweaking before you feel at home again. I also had to update my Arq configuration to make sure that OmniFocus’s files were still included in my off-site backups.

Mac

I’ve been using OmniFocus since version 1.0 when it was Mac-only. While it’s always been great, I feel the app suffered a bit in versions 2 and 3 when iOS design elements were brought back to the Mac. Version 4 is a step in the right direction, with increased data density. They’ve brought back a proper toolbar that lets me choose whether I want to see icons and/or text. The interface is more customizable, with more options to control which columns and inspector sections to show and how they should be ordered. For example, I can now put the dates at the top of the inspector and hide the title and status.

I was skeptical about the SwiftUI rewrite, because SwiftUI seems to result in Mac apps that hang or don’t feel quite right, but Omni has done a good job here. It still has great support for multiple windows, and working within a single window is also improved, as it now supports back/forward navigation. The main outline view is better than ever, with some longstanding tab navigation bugs finally fixed. There are a few glitches, which I never saw in the old version, where it temporarily shows extra empty space or section markers for tags that have nothing to show. The inspector works pretty much the same way on both macOS and iOS, and this is a rare case where neither version seems to be the worse for it. I’m not sure how much of the rest of the app uses SwiftUI, as it still seems to include a large number of nibs. The main new areas I noticed were the onboarding sequence and the sync settings, which work fine but look and feel a little different.

The only problem I encountered with the Mac version is that I temporarily lost access to my archive. The archive file is not automatically transferred to the version 4 container, and choosing it manually did not work, seemingly due to a file permissions/sandbox error. I eventually got it working by moving the file manually and, on the advice of Omni, resetting a user default so that it would let me choose the file again. Aside from that, archiving seems to work the same way as before: useful but too slow to keep my whole history in the app, and the app still locks up for a few minutes when, in January, I bulk delete all the actions for the previous year.

OmniFocus now supports bare keyboard shortcuts, which seems like it was added to work around iPadOS limitations, but it works well on the Mac, too. You can now jump directly to the field you want to edit with a single keypress. Ironically, deleting is more difficult, as you now need to press Command-Delete rather than just Delete. Omni says this is to prevent accidental deletions, but that seems unnecessary to me as many apps like Mail and Safari—and of course OmniOutliner—support bare deletion. If you make a mistake, there’s always Undo, right? (And OmniOutliner doesn’t support Command-Delete, which confuses my muscle memory.)

Part of what sets OmniFocus apart from a basic to-do list is its support for defer and due dates. This is improved in version 4, as there are now one-click buttons in the inspector to postpone by a day, week, or month, or remove the date entirely. Oddly, however, there are no keyboard shortcuts or menu commands for this. The iOS version has a Schedule submenu in its contextual menu, but this is missing in the Mac version. So I’m still relying on my AppleScripts to adjust defer dates. I assign them keyboard shortcuts using FastScripts, though similar things can also be done using the built-in Omni Automation.

iPhone

Version 4 brings major improvements to the main outline. The current action now expands its view so that you can edit many fields directly, without having to open the separate modal inspector. It’s also possible to select multiple actions at once and then edit them in bulk using the inspector. Everything is more customizable. There’s now a menu at the top of the screen.

I also really like the new handling of perspectives. Previously there was a home screen showing all the perspectives, which worked well enough but required lots of swiping back and forth. Now, you can show a toolbar of perspectives at the bottom of the screen. This makes it easy to switch back and forth with a single tap, and you can also see at a glance how many actions are unfiled or flagged. The perspectives bar is fully customizable and scrollable. There’s also a button to show the full list of perspectives, and it includes a Quick Open search field for jumping to a particular project or tag. Overall, it feels a lot more like the Mac version, where I can quickly get to where I want without having to navigate up and down the hierarchy. You can also see projects and tags in the sidebar, and the focus (hoist) feature has been brought to iOS.

I have mixed feelings about the new way of creating actions. Previously, there were separate buttons for creating a new action in the inbox or in the current view. Now, there’s a single, multipurpose + button that provides a lot of functionality in a small amount of screen space. Single tapping creates a new action in the current list. Double-tapping creates one in the inbox. You can also drag the button to create a new action at a specific location within the outline. This is all very clever, but it makes the common case for me less efficient. I nearly always want to create a new action at the bottom of my inbox, and this now requires a double-tap rather than a single tap. I’ve gotten used to the new button location but not to the tapping, perhaps because double-tap doesn’t work in the quick entry view. In other words, if I’m adding a sequence of actions at once, I have to start with a double-tap and then single-tap for each additional action. I wish I could just always use a single-tap regardless of the current context.

As with the Mac version, deferring actions is also more work on iOS than I’d like. The new buttons in the inspector are an improvement, but OmniFocus doesn’t take full advantage of the contextual menu. You have to dig into a submenu, and even then you can only defer an action that already has a defer date, and you can only defer by one day. There should be a bunch of customizable options here, and I should be able to quickly defer until tomorrow by swiping to the left. Instead, the left-swipe options are to select the action (which makes sense) and to delete it (which is much easier to do by accident than on macOS—why was that concern not applied here?).

It’s great having more features in common between iOS and macOS, and I guess this is possible because of SwiftUI. Surprisingly, given SwiftUI’s relative maturity on iOS, the rewrite seems to have created more glitches in the iPhone version than on the Mac. I encountered a variety of problems with the keyboard not popping up, the + button disappearing, and counts in the perspective bar being out-of-date. Scrolling feels a lot slower than before, probably because of all the customization options. Many times, creation an action or switching to a perspective (even one with only a few actions) would freeze the app, though I haven’t seen this in a while so it may have been fixed in one of the maintenance updates. There was also a really jittery animation when creating a new action, which was finally fixed in version 4.0.5.

Lastly, there are more options for widgets now. I now have my lock screen set to show the Flagged perspective. This works well with the Always-On Display so that I’m always aware of the top two things I need to do, and it also works as a quick launcher into the app without having to swipe to unlock the phone.

Apple Watch

The watchOS app has been completely redone. Instead of being a view into a very limited portion of the iPhone app, it’s now a fully independent peer with access to all of your perspectives. This makes it much more useful. For example, I can now go grocery shopping and check items off on my watch without having to repeatedly pull my phone out of my pocket and unlock it. The screen doesn’t show many actions at once, but I have them arranged into tags so they appear in the right order, so I don’t need to do much scrolling. When not running errands, I leave the app showing the Flagged perspective, so I can quickly see what I need to do right away.

You can now create new actions by tapping an omnipresent button rather than having to long-press. (Single-tapping the button always creates the new action in the inbox, i.e. inconsistent with the iPhone app, but better.) You can Complete, Drop, Unflag, and Delete actions; there is no way to Defer them or to edit the text.

Not only does the watch app store all your data now, but it also independently syncs with the cloud. (Fortunately, you don’t have to enter your login credentials into the watch—it seems to get them from the iPhone app.) The initial sync to the watch was quite slow, kind of like how the iPhone app was on the much slower hardware back in the day. Subsequent syncs are sometimes quick but sometimes take a long time or never complete, and the app is unusably slow while this is in progress. In a suite of apps that generally works very smoothly, this is the lone area that’s really frustrating. I do prefer the new watch app, overall, because it has so much more functionality, but I just can’t count on the syncing working automatically, and so I have to consciously manage it.

Ideally, the watch app would just run in the background and stay in sync automatically—like the iPhone app does. This rarely seems to happen, even with Sync Push enabled. I use a complication that shows the number of Flagged actions, and the count is usually wrong. Still, the complication is important for quickly launching the app in order to view a perspective and, more importantly, to give it a chance to sync. The more frequently it syncs, the more likely it is for a sync to succeed. If I let the watch get too far behind, even if I’m on Wi-Fi and leave the app open, syncing will often fail. Sometimes it shows a “network connection was lost” or “SSL error has occurred” error, but other times the log is uneventful. At this point, if I leave the house it will have almost no chance of catching up using my phone’s cellular connection, and if I let it get too far behind it will prevent all my other devices from baselining and slow their syncing down, too.

When it is caught up, sometimes it will stay in sync while I’m out, and sometimes it won’t, so I have to be careful about not checking off some actions on my watch and others on my phone because that can result in both devices having an incorrect view for a while. On the plus side, I’ve found that the watch seems to be able to sync using captive Wi-Fi in stores and restaurants, even if I haven’t gotten my phone out to click through and join the network. Omni’s support seems to think my syncing problems are a recurrence of a bug they saw before. I’m optimistic in that if it’s not due to watchOS they can probably fix it.

Overall, I’m quite happy with OmniFocus 4. I think of it as a model for how to build a multi-platform app, and it seems to be a success story for SwiftUI. The data model remains rock solid, while the interface has been expanded and largely harmonized across platforms, without any of them feeling shortchanged. Apple could learn a lot from Omni’s approach.

Previously:

Update (2024-02-14): See also: Justin Pot.

Friday, February 9, 2024

Apple Lobbying Against Right to Repair

Jason Koebler (Hacker News):

An Apple executive lobbied against a strong right-to-repair bill in Oregon Thursday, which is the first time the company has had an employee actively outline its stance on right to repair at an open hearing. Apple’s position in Oregon shows that despite supporting a weaker right to repair law in California, it still intends to control its own repair ecosystem. It also sets up a highly interesting fight in the state because Google has come out in favor of the same legislation Apple is opposing.

“It is our belief that the bill’s current language around parts pairing will undermine the security, safety, and privacy of Oregonians by forcing device manufacturers to allow the use of parts of unknown origin in consumer devices,” John Perry, Apple’s principal secure repair architect, told the legislature.

Maybe stop making app launches phone home to Cupertino before telling us how much you care about privacy.

Previously:

Fraudulent LassPass App

Mike Kosak:

LastPass would like to alert our customers to a fraudulent app attempting to impersonate our LastPass app on the Apple App Store. The app in question is called “LassPass Password Manager” and lists Parvati Patel as the developer. The app attempts to copy our branding and user interface, though close examination of the posted screenshots reveal misspellings and other indicators the app is fraudulent.

Juli Clover:

It doesn’t use exactly the same icon and the name is a letter off, but the similarities could confuse some LastPass users.

It is unclear if the fake LassPass app is attempting to steal login information from users, but it does have options for adding passwords, email accounts, addresses, bank accounts, credit cards, debit cards, and more. It doesn’t ask for a LastPass login of any kind, but it is possible that the developer can see information added to the app.

[…]

Clone apps often make their way into the App Store , but the app impersonating LastPass is particularly concerning because it could be accessing sensitive information. It is not clear how an app mimicking one of the most popular password management apps was approved by Apple, and its discovery comes at a critical time for the company.

John Gruber:

Branscombe is correct that even isolated incidents like this hurt Apple’s arguments in favor of App Store exclusivity. But what’s the counterargument? That anything short of 100 percent accuracy at flagging scams and rip-offs renders the entire App Store review process pointless? That if, say, 1 in every 1,000 scam attempts slips through, the entire process should be scrapped? That argument can’t be taken seriously.

A few points:

Previously:

Update (2024-02-14): Francisco Tolmasky:

Imagine an FDA as half-assed as the App Store, accidentally only requiring cancer warnings on some cigarettes, leading people to buy the cigarettes that “don’t cause cancer.” That’s the App Store.

[…]

A curated hellhole full of gambling traps for children that somehow still manages to let scams run for a week is nothing to be proud of, even if it is better than a competitor that isn’t even trying. Once upon a time we expected more from Apple.

iOS 17.4 Changes PWAs to Shortcuts in EU

Thomas Claburn (Hacker News):

Apple has argued for years that developers who don’t want to abide by its rules for native iOS apps can always write web apps.

It has done so in its platform guidelines, in congressional testimony, and in court. Web developers, for their part, maintain that Safari and its underlying WebKit engine still lack the technical capabilities to allow web apps to compete with native apps on iOS hardware. To this day, it’s argued, the fruit cart’s laggardly implementation of Push Notifications remains subpar.

The enforcement of Europe’s Digital Markets Act was expected to change that – to promote competition held back by gatekeepers. But Apple, in a policy change critics have called “malicious compliance,” appears to be putting web apps at an even greater disadvantage under the guise of compliance with European law.

James Moore:

We have been alerted that Apple has broken Web App (PWA) support in the EU via iOS 17.4 Beta. Sites installed to the homescreen failed to launch in their own top-level activities, opening in Safari instead. This demotes Web Apps from first-class citizens in the OS to mere shortcuts. Developers confirmed the bug did not occur outside the EU.

Hartley Charlton:

Now, when a user in Europe taps a web app icon, they will see a system message asking if they wish to open it in Safari or cancel. The message adds that the web app “will open in your default browser from now on.” When opened in Safari, the web app opens like a bookmark, with no dedicated windowing, notifications, or long-term local storage. Users have seen issues with existing web apps such as data loss, since the Safari version can no longer access local data, as well as broken notifications.

Previously:

Update (2024-02-14): Bruce Lawson (via Hacker News):

Presumably Apple doesn’t want PWAs to open in third-party browsers that have more powerful features than Safari, because those would directly compete with native apps in its own App Store. However, in the EU, it can’t privilege PWAs in Safari with its own private APIs any more. And so its solution, in its spirit of malicious compliance, seems to be “if we can’t have them, nobody can!”.

Update (2024-02-16): Apple (MacRumors, Hacker, News, 3, Slashdot):

Why don’t users in the EU have access to Home Screen web apps?

[…]

The iOS system has traditionally provided support for Home Screen web apps by building directly on WebKit and its security architecture. That integration means Home Screen web apps are managed to align with the security and privacy model for native apps on iOS, including isolation of storage and enforcement of system prompts to access privacy impacting capabilities on a per-site basis.

Without this type of isolation and enforcement, malicious web apps could read data from other web apps and recapture their permissions to gain access to a user’s camera, microphone or location without a user’s consent. Browsers also could install web apps on the system without a user’s awareness and consent. Addressing the complex security and privacy concerns associated with web apps using alternative browser engines would require building an entirely new integration architecture that does not currently exist in iOS and was not practical to undertake given the other demands of the DMA and the very low user adoption of Home Screen web apps. And so, to comply with the DMA’s requirements, we had to remove the Home Screen web apps feature in the EU.

Apple had two years or so to prepare for the DMA, but they “had to” to remove the feature entirely (and throw away user data) rather than give the third-party API parity with what Safari can do. I find the privacy argument totally unconvincing because the alternative they chose is to put all the sites in the same browser. If you’re concerned about buggy data isolation or permissions, isn’t this even worse?

Open Web Advocacy:

There is no way to have a reliable web app that is bound to the default browser. It would mean every time you changed default browser, you would lose all your data.

Kosta Eleftheriou:

Apple citing “low user adoption” of PWAs as a reason for the lack of support. [image]

Steve Troughton-Smith:

It’s a complete coincidence that iOS killing PWAs in Europe means that PWA developers should move to the App Store if they want to be on the platform.

John Voorhees:

For anyone who was there when Steve Jobs declared web apps a ‘Sweet Solution’ when developers clamored for Apple to open up the iPhone’s OS to native apps, taking them away in the face of regulations that force Apple to open up to alternative browser engines carries a heavy dose of irony.

Thomas Claburn:

Apple made this change without notice to developers, despite Cupertino’s repeated insistence that web apps represent an alternative to native iOS apps for those unable or unwilling to abide by its platform restrictions.

[…]

Maximiliano Firtman, a web developer who works on PWAs, added, “The technical reasons behind the decision published in the document are childish and it contains many lies.”

Heath Borders:

The EU isn’t forcing Apple to make awful policy choices.

Manton Reece:

Was this statement from Apple written by a hallucinating AI? All mainstream web browsers have a strict security model for JavaScript. Cookies and local storage cannot be accessed across web apps. It’s even difficult or impossible to make certain web requests from JavaScript because of cross-site scripting and CORS limitations. The only way this could be circumvented is with a rogue web browser engine that did away with these standard constraints, but Apple already has this scenario covered because they approve every browser engine[…]

Rui Carmo:

In fact, I actually have less and less interest in developing (or even supporting developing) for Apple platforms due to this kind of deliberate and maliciously arbitrary amputation of existing features.

Steve Troughton-Smith:

Apple thought its bullshit Core Technology Fee was worth investing effort in, but not homescreen web apps 😛

“If Apple ever asked its engineers to make iOS worse in favor of making the company money, they would quit”

Turns out that was a lie. Who knew

Ian Betteridge:

I kind of think assuming that the EU is just going to go “oh noes, Apple has beated us!” is maybe, just maybe, underestimating quite how pissed off they’re going to be about Apple’s arsing about.

See also: the WebKit bug.

Update (2024-02-20): Open Web Advocacy (Hacker News):

This is emphatically not required by the EU’s Digital Markets Act (DMA). It’s a circumvention of both the spirit and the letter of the Act, and if the EU allows it, then the DMA will have failed in its aim to allow fair and effective browser and web app competition.

It’s telling that this is the feature that Apple refused to share. And it makes sense: the idea that users could install safe and secure apps that Apple can’t tax, block or control is terrifying to them.

The legal obligation to allow third-party browsers onto iOS removes their ability to set a ceiling on web app functionality via their control of Safari and the WKWebView. Suddenly Web Apps would be a viable competitor. It is particularly galling for them to cite low adoption when they have had their thumb on the scale suppressing them for over a decade.

[…]

Apple also makes tenuous, bordering on laughable, claims regarding web app security. In addition to unwarranted and unjustifiable attempts to project their own model onto competing browsers, Apple makes claims that ignore the history of web applications and browsers in providing strong privacy and security separation. Apple offers no evidence to back these assertions, and ignores the long track record of superior security of PWAs on other OSes.

Ian Betteridge:

The company has had years to prepare for this. If it got blindsided, that’s a management failure. If it’s being petulant, that’s a management failure. If it can’t devote the resources to make this work, that’s a management failure. And if this is an attempt to enforce using native APIs and the App Store rather than PWAs… well, that too is a management failure.

Mike Rockwell:

I don’t understand what Apple’s end game is with this and the rest of their “compliance” with the DMA. It seems foolish to expect regulators in the EU to turn a blind eye to Apple’s changes, which are obviously outside of the spirit the DMA’s intentions.

Tim Sweeney (Sarah Perez, Hacker News):

I suspect Apple’s real reason for killing PWAs is the realization that competing web browsers could do a vastly better job of supporting PWAs - unlike Safari’s intentionally crippled web functionality - and turn PWAs into legit, untaxed competitors to native apps.

Nick Heer:

Apple has long promoted web apps as an open and free — as in speech — alternative to the more restrictive policies of the App Store. No matter why Apple made this decision, it is trading the inherently competitive web for third-party browser engines and app distribution for reasons that, as Reece explains, are difficult to believe.

Jeremy Keith (via Hacker News):

Now Apple need to provide parity on iOS, at least for users in the EU. Again, Apple are decribing this coming scenario as an absolute security nightmare. But again, the conditions they’re describing are what already exist on macOS.

All Apple is being asked to do is offer than the same level of choice on mobile that everyone already enjoys on their computers. Rather than comply reasonably, Apple have found a way to throw their toys out of the pram.

[…]

This is a huge regression that only serves to harm and confuse users.

[…]

Presumably Apple is hoping that users will direct their anger at the EU commission instead. They’re doing their best to claim that they’re being forced to make this change. That’s completely untrue.

Update (2024-03-01): Hartley Charlton:

Following intense criticism, Apple today walked back its plan to disable Home Screen web apps in the European Union starting with iOS 17.4.

Apple (Hacker News):

Previously, Apple announced plans to remove the Home Screen web apps capability in the EU as part of our efforts to comply with the DMA. The need to remove the capability was informed by the complex security and privacy concerns associated with web apps to support alternative browser engines that would require building a new integration architecture that does not currently exist in iOS.

We have received requests to continue to offer support for Home Screen web apps in iOS, therefore we will continue to offer the existing Home Screen web apps capability in the EU. This support means Home Screen web apps continue to be built directly on WebKit and its security architecture, and align with the security and privacy model for native apps on iOS.

Developers and users who may have been impacted by the removal of Home Screen web apps in the beta release of iOS in the EU can expect the return of the existing functionality for Home Screen web apps with the availability of iOS 17.4 in early March.

Poor grammar and no clarification about what the DMA requires here, but this is good news.

Update (2024-03-05): Nick Heer:

Apple is framing this as a decision it made because it is just so dang nice — “[w]e have received requests to continue to offer support for Home Screen web apps in iOS, therefore we will continue to offer the existing Home Screen web apps capability”. If this is true, that means its earlier statement must have been wrong — there was no legal rationale for web app regressions, only a preference.

[…]

A version of this entire debacle which is fair to Apple is that it misunderstood its obligations, and would never have degraded PWAs in the E.U. if not for its too-careful interpretation of the law. But it does not get to take credit for undoing its mistake.

macOS 14.3.1

Juli Clover (release notes, full installer, IPSW):

Today’s update addresses a frustrating macOS Sonoma bug that could cause text to get randomly replaced while typing. There have been multiple complaints about the issue, which affected web pages and apps like Mail and Messages.

The problem has persisted for several months, and has been an issue through multiple versions of Sonoma.

This was clearly caused by a WebKit bug, but I’ve been intermittently seeing a similar issue with NSTextView for several years. If I replace the text storage with a new string, parts of the previous contents will sometimes come back.

See also: Howard Oakley and Mr. Macintosh.

Previously:

Update (2024-02-14): Pierre Igot:

You’ve got to be kidding me… Another very MINOR update (macOS 14.3 to macOS 14.3.1), yet another avalanche of dialogs asking me reauthorize all kinds of things? All kinds of things gone or disabled AGAIN under “Privacy and Security”?

watchOS 10.3.1

Juli Clover (release notes):

According to Apple’s release notes, the watchOS 10.3.1 update adds unspecified “improvements and bug fixes.”

Previously:

iOS 17.3.1 and iPadOS 17.3.1

Juli Clover (release notes):

According to Apple’s release notes, the update includes a fix for a bug that could cause text to unexpectedly duplicate or overlap while typing.

Previously:

MLLM-Guided Image Editing (MGIE)

Emilia David:

Apple researchers released a new model that lets users describe in plain language what they want to change in a photo without ever touching photo editing software.

The MGIE model, which Apple worked on with the University of California, Santa Barbara, can crop, resize, flip, and add filters to images all through text prompts.

MGIE, which stands for MLLM-Guided Image Editing, can be applied to simple and more complex image editing tasks like modifying specific objects in a photo to make them a different shape or come off brighter. The model blends two different uses of multimodal language models. First, it learns how to interpret user prompts. Then it “imagines” what the edit would look like (asking for a bluer sky in a photo becomes bumping up the brightness on the sky portion of an image, for example).

Amber Neely:

MGIE is open-source and available on GitHub for anyone to try. The GitHub page allows users to snag the code, data, and pre-trained models.

Previously:

How to Stop macOS Upgrade Notifications

Jeff Johnson:

Instead, you get harassed by frequent notifications imploring you to “Upgrade to macOS Sonoma”, notifications that won’t take no for an answer. They don’t even have no for an answer! And if you click the wrong thing, you’ll accidentally, silently install Sonoma.

[…]

The solution in this case is actually quite simple, one little Terminal command:

defaults write com.apple.SoftwareUpdate MajorOSUserNotificationDate -date "2025-02-07 23:22:47 +0000"

Previously:

Update (2024-02-14): Howard Oakley:

Although a detailed analysis by Adam Engst on TidBITS laid the blame on what could only have been a serious bug in the upgrade notification, I’ve had reports from users who insist that they never saw or dismissed that.

[…]

For Macs with more than one user, that key-value pair must be set in each user’s ~/Library/Preferences/com.apple.SoftwareUpdate.plist to ensure the notification doesn’t occur.

[…]

If those forced upgrades had been initiated independently of that notification, as some accounts imply, then blocking its appearance wouldn’t have prevented the upgrade from occurring.

See also: Ric Ford.

Wednesday, February 7, 2024

CGPDFService

Howard Oakley:

CGPDFService turns out to be quite a small background XPC process inside the CoreGraphics framework, located on the System volume (SSV) in the path /System/Library/Frameworks/CoreGraphics.framework/Versions/A/XPCServices/CGPDFService.xpc. The executable is around 313 KB, and is currently in version and build number 1, as it shipped with the first release of Sonoma.

[…]

CGPDFService processes reset their user defaults, then await XPC connections from mdworker and mdworker_shared processes. Once those have extracted data to be added to that volume’s Spotlight indexes, mds_stores compresses data passed to it by those mdworker processes.

[…]

One solution for dealing with one or a few PDF documents that always choke CGPDFService processes is to isolate them in a folder that is excluded using the Spotlight Privacy list.

Inside Code Signing: Certificates

TN3161 (via Quinn):

To condense this into plain English, this certificate says that “Apple certifies that this developer is associated with this public key, and the matching private key can be used to sign Mac code.” This is clearly a simplification—it doesn’t touch on the valid date range, serial number, or even how Apple identified the developer in the first place—but it’s a reasonable model to start out with.

Apple issues a variety of different code-signing certificate types. For a complete list, see Certificate types.

[…]

Certificates often form a chain of trust: the verifier uses the issuer information in a certificate to find the issuer’s certificate, then uses its issuer information to find the next certificate in the chain, and so on, until it hits an anchor, that is, a certificate it trusts as a matter of policy.

[…]

To sign code you need a certificate and the private key that matches the public key in that certificate. This combination is called a digital identity or, if it’s for signing code, a code-signing identity.

[…]

It’s easy to miss that your most critical code-signing asset, your private key, is tucked away in your login keychain. And if you do miss that, you might lose your private key, for example, when you migrate to a new Mac.

Previously:

Bluesky Opens to the Public

Bluesky (Hacker News):

Bluesky is building an open social network where anyone can contribute, while still providing an easy-to-use experience for users. For the past year, we used invite codes to help us manage growth while we built features like moderation tooling, custom feeds, and more. Now, we’re ready for anyone to join.

[…]

To learn more about Bluesky and how to get started, read our user FAQ here.

And if deep dives are more your style, we worked with Martin Kleppman, author of Designing Data-Intensive Applications and technical advisor to Bluesky, to write a paper that goes into more detail [Hacker News] about the technical underpinnings of Bluesky.

Tim Hardwick:

The difference with Bluesky is that its servers use a decentralized Authenticated Transport (AT) Protocol that will allow users to opt-in to a microblogging experience that isn't run by the company, allowing them to create an account under a given domain name and then use their profile in rival apps that use the same network.

Another advantage of the AT protocol is that it can operate based more on a user's preferences than algorithmically driven content, with user-curated feeds that people can use to find other users or topics, with customizable moderation tools also available to them.

Nick Heer:

Bluesky’s interpretation of a text-based social network is compelling. It is familiar, fast, and feature-rich, without being overwhelming. I just wish there was a good Mac app.

Previously:

Flickr and Facebook at 20

Flickr:

To celebrate this huge milestone, we’re taking a trip down memory lane to explore all of the technological and structural moments that have shaped Flickr into what it is now.

Mark Zuckerberg:

20 years ago I launched a thing. Along the way, lots of amazing people joined and we built some more awesome things. We’re still at it and the best is yet to come.

Tuesday, February 6, 2024

Swift Tricks

André Jorgensen:

Generic typealias can be used to simplify param types etc

typealias Parser<A> = (String) -> [(A, String)]

[…]

func parse<A>(stringToParse: String, parser: Parser)

[…]

Finding Elements of Specific Type in Swift

extension Array {
    func whereType<T>() -> [T] {
        compactMap { $0 as? T } // The function "compactMap(" in Swift is incredibly useful. It maps each element of an array to another optional type and returns the value if it exists (is not null).
    }
}

I’ve been using a version of this where the type is passed as a parameter. With this version it’s determined using type inference from the call site.

He currently has 202 other tricks listed.

Wade Tregaskis:

for case let rep as NSBitmapImageRep in image.representations {
    … // `rep` is an NSBitmapImageRep.  Non-bitmap reps are skipped.
}

I sometimes forget that this is possible (and even more often exactly what the damn syntax is – kudos to vacawama in today’s case of this for reminding me with their StackOverflow answer). There are numerous other ways to write the above, but I think it is the most elegant.

I’ve been writing Swift for almost 10 years and still have to think to remember this syntax, as well as if case let. I know that case is for pattern matching, but it still looks weird to see it there, and this is the same reason it’s written using as without the question mark that normally accompanies downcasts that might fail. You might expect to be able to write:

for rep as? NSBitmapImageRep in image.representations {

but instead Swift gives us case let and a more general pattern matching feature. If you write this or get it correct except for the ?, the compiler’s error messages are unhelpful:

for rep as? NSBitmapImageRep in image.representations {
// Expected 'in' after for-each pattern

for case let rep as? NSBitmapImageRep in image.representations {
// Pattern variable binding cannot appear in an expression

Previously:

Pkl Programming Language

Apple (via Hacker News):

We are delighted to announce the open source first release of Pkl (pronounced Pickle), a programming language for producing configuration.

[…]

We created Pkl because we think that configuration is best expressed as a blend between a static language and a general-purpose programming language. We want to take the best of both worlds; to provide a language that is declarative and simple to read and write, but enhanced with capabilities borrowed from general-purpose languages. When writing Pkl, you are able to use the language features you’d expect, like classes, functions, conditionals, and loops. You can build abstraction layers, and share code by creating packages and publishing them. Most importantly, you can use Pkl to meet many different types of configuration needs. It can be used to produce static configuration files in any format, or be embedded as a library into another application runtime.

[…]

When binding to a language, Pkl schema can be generated as classes/structs in the target language. For example, the Application.pkl example from above can be generated into Swift, Go, Java, and Kotlin.

Daniel Jalkut:

Who had “Apple will release a new language, implemented in Kotlin, with IDE integration for everything but Xcode” on their bingo card?

_mischi:

Vision Pro is cool and all, but have you ever spent time searching for that format error in your YAML file?

Joe Heck:

The choice of package/module configuration IN swift was a decision I wish had been revisited back prior to Swift3 - so many ongoing and upgrading complications from that alone.

Teatotaller Cafe v. Instagram

Annie Ropeik (2020):

The owner of the Teatotaller café in Somersworth is taking on Facebook at the New Hampshire Supreme Court.

[…]

Owner Emmett Soldati markets them all on Instagram, which is owned by Facebook. He says it was a blow to his business when, in 2018, Teatotaller’s Instagram account – with more than 2,000 followers – was shut down without warning.

“We had spent money advertising on their platform to do many things, including building a following, and we lost that following,” Soldati said in an interview at Teatotaller Sunday.

Facebook’s terms and conditions for Instagram limit users’ legal recourse, but say they can pursue a case in small claims court. Soldati did that, in Dover, arguing the platform was negligent in deleting his account and asking for it to be restored.

Margie Cullen (via Hacker News):

When Emmett Soldati first noticed the Instagram account for his small cafe Teatotaller was deleted, he had no idea the battle to get accountability from Facebook would take six years.

But Soldati, who represented himself in court, has finally won his small claim against the social media giant now known as Meta.

Duncan Shaw:

The parent company of Instagram was ordered to pay a judgment of $100 plus court costs and interest to the owner of the Teatotaller Café after his account was deleted.

It’s still not clear why the account was deleted in the first place.

Dan Luu:

Are there fundamental reasons that a company the size of FB can’t provide much better support than they do?

The most common explanation I’ve heard is that support is impossible due to cost, but I don’t find this plausible based the profit FB-sized companies make per user. If you just naively look at how many support people they could pay, it’s quite a lot, not including things like diverting money from the ~$50B that’s allegedly been spent on the metaverse.

[…]

I know of kafkaesque horror stories of bank and brokerage account loss, so it’s not like brokerages are perfect, but it’s rare enough that I don’t personally know anyone who’s had their personal account or funds temporarily lost, let alone permanently, whereas with FB, a large fraction of my non-tech friends have lost accounts.

treeman79:

My wife and most of her friends have all lost their Facebook accounts at least once. They all gave up getting them back. Many tears as most of them use it as their only photo backup for kid pictures.

At this point it's just routine for them to have their account taken over and lost periodically.

cGilmore:

As someone who’s both permanently lost a [iTunes] previous account, losing thousands of $$$ in purchases, and who’s recently yet again temporarily lost access to purchased content—both of which were due to an issue with Apple’s services—I will never, EVER buy music, movies, or TV shows from Apple ever again.

Chris Wanstrath, GitHub co-founder (via Hacker News):

Banned from GitHub without any explanation. Guess I’m moving all my code to BitBucket.

Previously:

Ruling in Vizio Lawsuit May Strengthen the GPL

Luis Villa (via Hacker News):

In October of 2021 the Software Freedom Conservancy (SFC) decided to launch what is believed to be the first significant open source lawsuit based in contract rather than in copyright. Critically, the SFC’s case argued that anyone who benefits from the General Public License (GPL), not just the authors of the software, should be able to bring a lawsuit to enforce the terms of the GPL.

This case was brought in Orange County, California against Vizio, a large TV manufacturer. Like most TVs these days, Vizio TVs include Linux and a lot of other open source software that is under the GPL. The GPL says that buyers of those TVs should be able to get copies of that source code, so SFC walked into a store in Orange County, bought a TV, and requested copies of the source code. Vizio did not comply with the request, and so SFC brought suit.

[…]

The short version is that, by asking for specific performance (a contract remedy) rather than financial penalties (a copyright remedy), and by claiming violations of rights granted by the contract (the license) rather than rights granted by copyright, the federal court found that this was a contract case and not a copyright case.)

Previously:

Monday, February 5, 2024

T? and Optional<T> Are Not the Same in Swift

Nick Lockwood:

I once again got bitten by the fact that T? properties in a Swift struct become optional parameters in the synthesized initializer, making it easy to accidentally omit a property that you meant to set.

The workaround is either to use let instead of var, or to use Optional<T> instead of T?

Swift has lots of syntactic sugar, which usually makes writing it simpler and easier, but sometimes multiple bits of sugar interact or obscure what’s going on.

Jonathan Joelson:

The fact that something is nullable does not remotely imply that null is a sensible default.

Tom Dowdy and SimpleText

Mike Piontek:

I was looking at this [SimpleText document] icon for inspiration and now I’m wondering what the name of the newspaper is meant to be. pnop? 🤔 I like that the front page photo is a screenshot of a desktop.

John Calhoun (via Cabel Sasser):

Tom Dowdy was a software engineer at Apple back in 1995 when I was still writing Macintosh games in Lawrence, Kansas. One of Tom’s programming responsibilities was to maintain Apple’s SimpleText (aka TeachText) application (see document icon above) — a basic text editor that shipped with the Macintosh. He was also the tech-lead (engineering technical leader) for the graphics component of Apple’s newest graphics framework called Quickdraw GX.

[…]

But for all the stress and feeling like I was a fake among all these super-star programmers, Tom Dowdy always put me at ease. I’m not sure why. Anyone that knew him though would agree with me when I say that he was laid back and had a friendly demeanor.

[…]

It was the supposed “dark times” to be at Apple: whole teams would be suddenly let go (the rest of us that lingered still might go through the abandoned offices of once co-workers looking to pull RAM out of their hardware for our own development machines). Some engineers like Tom, could see the writing on the wall early enough and knew when to switch teams. Tom ended up moving to the QuickTime team where he was able to continue to use his graphics talents. Later he worked on the iTunes visualizer if I recall correctly.

[…]

SimpleText had been one of Tom’s responsibilities even before Steve Jobs had returned [and frowned on Easter eggs].

It turns out that the top of the newspaper icon has “Dowdy” written upside down and backwards.

Previously:

Update (2024-02-07): See also: Hacker News.

The Origin of Comic Sans

Thomas Steeles (via Jason Kottke):

[Most] people know of the font. By that notion, Vincent Connare, the creator of Comic Sans, has exclaimed that “I made the best font in the world.” Whether you believe that or not, it doesn’t exclude the fact it was, at one point, the second most complained about thing on Twitter and has a whole website dedicated to its banishment.

[…]

It’s understandable to see why Connare chose comics as his main source of inspiration; there’s a clear parallel to make between the speech bubbles used in comics and the speech bubbles that Rover uses. Additionally, the accessible, child-friendly atmosphere that Microsoft Bob wanted to achieve could be seen in the design of comic books – with the less-rigid hand drawn sans serif type, and bright colours.

Connare, in around three days, created Comic Sans; however, the curvy, soft-edged font that we all know wasn’t the intended final form of the font. Comic Sans was meant for screen-use only, and due to the technical limitations in the mid 90s, Windows didn’t have anti-aliasing technology, which meant fonts were pixelated – as a result most fonts looked jagged and sharp. Knowing this, Connare specifically designed Comic Sans with aliasing in mind, so actually Comic Sans was only intended to be seen like what is shown in Figure 1.

Previously:

Joe Rogan No Longer Exclusive to Spotify

Ashley Carman (2021, Hacker News):

Spotify hoped he would bring much of that audience along with him when he signed exclusively to the platform in 2020 in a reported $100 million deal, giving it the reach and power needed to take over the podcasting industry. Although Spotify hasn’t given specific numbers detailing Rogan’s listenership since he came on board, it has repeatedly boasted about his success. The company confirmed that he quickly became the platform’s biggest podcaster after jumping to Spotify.

[…]

However, a new data investigation by The Verge finds that the powerful podcaster’s influence has waned since he went behind Spotify’s wall. His show has declined as a hype vehicle for guests, and Rogan’s presence as a mainstay in the news has plummeted.

Ashley Carman (2022):

Spotify reportedly paid Joe Rogan at least $200 million to commit to podcasting on the platform exclusively for three and a half years, according to a New York Times report.

Ariel Shapiro (Hacker News):

Joe Rogan, podcasting’s biggest star, has renewed his deal with Spotify. The new multiyear deal will allow his show, which is currently exclusive to the streamer, to be distributed to YouTube, Apple, and other podcasting platforms.

Financial terms of the deal were not disclosed by Spotify, but The Wall Street Journal reports that the deal is estimated to be worth $250 million, including revenue share.

[…]

Even while being exclusive to Spotify, Rogan managed to have the No. 1 podcast in the world. With the new arrangement, during an election year, no less, it seems likely his listenership will only grow. Once his show gets wide distribution, Spotify will no longer have any podcasts exclusive to the platform.

There are a bunch of unknowns with this. Spotify says the $250M figure is incorrect. And we don’t know the number of years. Is Spotify getting some of the YouTube revenue? Do they control the distribution on other platforms? Regardless, it makes sense that Rogan would want wider distribution—apparently a traditional podcast with RSS again. Spotify’s strategy is not totally clear but certainly seems to have shifted.

Podnews (via Hacker News):

Spotify tells Podnews that The Joe Rogan Experience podcast saw a 45% increase in revenue in 2023; and since the podcast went exclusive to Spotify, overall podcast consumption on the platform has increased by 232%.

[…]

Spotify does still have exclusives. The Riddler: Secrets in the Dark is described as a “Spotify Audio Series”, and is not available outside of the Spotify platform. It’s part of Spotify’s multi-year agreement with DC and Warner Bros. We did note at the time that the press release studiously avoided using the word “podcast”.

Previously:

Update (2024-02-07): Dare Obasanjo:

Spotify: 602 million users of which 236 million are paying subscribers and it lost €75M last quarter.

Friday, February 2, 2024

Launch Day Apple Vision Pro Apps

Apple (Slashdot):

More than 600 apps and games designed to take advantage of the unique and powerful capabilities of Apple Vision Pro will be available this Friday, February 2.

[…]

Apps built specifically for visionOS, like Box, make it easy to collaborate and securely manage files and content, including 3D objects, while the MindNode app helps users brainstorm with thought bubbles that float around a user’s space. OmniFocus [4.1, still in development] and OmniPlan use beautiful data and project management visualization in large windows to view a complete project plan. Microsoft 365 productivity apps, Fantastical, and Numerics make full use of the infinite canvas and sharp text rendering of Apple Vision Pro to make daily tasks effortless. JigSpace combines 3D content, audio, video, and text in interactive, step-by-step spatial presentations, and Navi translates conversations in real time, creating live captions so users can see exactly what people around them are saying.

John Gruber:

For all the (justifiable!) attention paid to Netflix and YouTube’s decisions to completely eschew the platform at launch, the truth is there are a lot of native VisionOS apps at launch, and zillions of compatible iPad apps.

[…]

Apple has no built-in Calculator app in VisionOS, and the built-in Calendar app is the iPad app in compatibility mode, making PCalc and Fantastical the only native apps of their respective kinds in the App Store at launch.)

Gabriel Valdez Malpartida:

On February 2, Microsoft Teams, Word, Excel, PowerPoint, Outlook, OneNote, and Loop will be available on the App Store in Apple Vision Pro.

Ainsley Bourque Olson:

As previously shared, we’re pleased to have released OmniPlan for Apple Vision Pro!

[…]

OmniPlan 4 sports features to track and forecast costs, set up projects and manage complex scheduling, collaborate with a team, and view your project as an interactive Gantt chart or Network Diagram across an entire display – or in this case the infinite display of Apple Vision Pro.

Jordan:

Fantastical for Apple Vision Pro is a full-featured version of the app, just like on all your devices. Everything’s here, from calendar sets and conference calls, to Openings and Proposals, and fully enabled for the boundless canvas that is spatial computing. We also decided to take advantage of that canvas with a new feature: multiple windows.

Christian Selig (Hacker News, MacRumors):

Then I remembered for years my old app, Apollo, played back YouTube videos submitted to Reddit pretty well, and I developed a pretty good understanding of how YouTube worked. That sparked the idea to reuse some of Apollo’s code there and build a little YouTube client of my own for visionOS, and after a mad week of coding “Juno for YouTube” is born.

[…]

Lastly, they have an embed API that’s pretty powerful, and is what I used in Apollo and now Juno. There’s no API keys, or limits to how many times a day you can call it, as it literally just loads the video in a webview, and provides JavaScript methods to interact with the video, such as pause, play, speed up, etc. It’s really nice, you can play YouTube videos back, and YouTube still gets to show ads (if the user doesn’t have YouTube Premium) and whatnot so no one is grumpy.

Cultured Code (MacRumors):

We’ve adapted and refined every corner of Things to make full use of Vision Pro and to fit in beautifully with your environment. A sidebar made of glass, menus and popovers that float above your lists, resizable windows, controls that light up to acknowledge your gaze, refined interactions, and more. A native app for the new platform, through and through.

Previously:

Google Removes Cache Link From Search Results

Barry Schwartz (via Hacker News):

Now when you click the three dots for more information for a search result snippet, the cache button is missing.

[…]

So how do you access the cache? Just Google cache:domain.com.

You can also set up a bookmarklet:

javascript:location.href='http://webcache.googleusercontent.com/search?q=cache:'+document.location.href;

Jon Porter:

Danny Sullivan has confirmed. “It was meant for helping people access pages when way back, you often couldn’t depend on a page loading,” Sullivan wrote on X. “These days, things have greatly improved. So, it was decided to retire it.”

The cache feature historically let you view a webpage as Google sees it, which is useful for a variety of different reasons beyond just being able to see a page that’s struggling to load. SEO professionals could use it to debug their sites or even keep tabs on competitors, and it can also be an enormously helpful news gathering tool, giving reporters the ability to see exactly what information a company has added (or removed) from a website, and a way to see details that people or companies might be trying to scrub from the web. Or, if a site is blocked in your region, Google’s cache can work as a great alternative to a VPN.

Tapestry Kickstarter

The Iconfactory:

With Project Tapestry, we’ll create a universal, chronological timeline for iOS for any data that’s publicly available on the Internet. A service-independent overview of your social media and information landscape. Point the app toward your services and feeds, then scroll through everything all in one place to keep up-to-date and to see where you want to dive deeper. When you find something that you want to engage with or reply to, Tapestry will let you automatically open that post in the app of your choice and reply to it there. Tapestry isn’t meant to replace your favorite Mastodon app or RSS reader, but rather to complement them and help you figure out where you want to focus your attention.

Tapestry’s universal timeline will be built around data source plug-ins. These are small bits of JavaScript code that translate between the native iOS app and the rest of the web.

One of the things I’ve learned from the Twitter debacle is that I don’t like scrolling through timelines, especially on my iPhone. I prefer a multi-pane, keyboard-controllable interface like with NetNewsWire or Vienna. I wish I could get everything except e-mail in there. Previous versions of NetNewsWire actually had a feature kind of like this where you could create a feed from a script.

Tapestry isn’t meant to replace your favorite Mastodon app or RSS reader, but rather to complement them and help you figure out where you want to focus your attention.

I’m not sure I want to add another app, but I love that they’re working in this space of combining multiple services into a single app.

Previously:

Update (2024-02-06): Niléane:

With The Iconfactory launching Project Tapestry this week, I was reminded of an indie app that I first started testing a few months ago. feeeed – that’s with four ‘e’s – by Nate Parrott is a feed reader app unlike any other I’ve seen on iOS.

[…]

You can of course subscribe to any RSS feeds — the app lets you import an OPML file from other RSS reader apps — but you can also subscribe to a wide variety of different sources, including but not limited to: newsletters via Gmail, subreddits, YouTube channels, Twitter and Mastodon profiles, Hacker News, Tumblr blogs, TikTok accounts, and more.

A special mention goes to my absolute favorite custom integration in feeeed, which is the ability to select a part of a website to show up in your feed. You can select any area on any webpage, and that area will regularly show up in the Home tab of the app.

Kind of like the old Dashboard feature.

Craig Hockenberry:

This post will explain the technology behind Project Tapestry and how we tested it as a prototype.

[…]

There is a GitHub repository with full documentation of the JavaScript API and sample plug-ins. We think you’ll find that it’s a robust and extensible system, just like the web itself.

Apple’s Q1 2024 Results

Apple (transcript, Hacker News, MacRumors):

The Company posted quarterly revenue of $119.6 billion, up 2 percent year over year, and quarterly earnings per diluted share of $2.18, up 16 percent year over year.

“Today Apple is reporting revenue growth for the December quarter fueled by iPhone sales, and an all-time revenue record in Services,” said Tim Cook, Apple’s CEO. “We are pleased to announce that our installed base of active devices has now surpassed 2.2 billion, reaching an all-time high across all products and geographic segments.

Jason Snell:

Overall, it was the company’s second best quarter ever in terms of revenue and profit, behind only the first quarter of fiscal 2022. Mac sales ended a string of down quarters to nudge up slightly; iPhone sales were also up. iPad sales were down double digits, as were wearables. Services growth slowed somewhat, but was still up double digits.

Jason Snell:

Not a product announcement, not even a feature announcement—but a tangible promise that Apple’s going to announce some big AI features later this year.

[…]

The iPhone, which accounted for nearly 60 percent of Apple’s overall revenue in the launch quarter of the iPhone 15, managed to show a little growth, improving 6% versus the year-ago quarter.

[…]

When you stare at the overall Mac revenue chart, though, things look pretty solid. Yes, the Mac went through a couple of years of huge growth, but it seems to be coming back to a new, higher floor of around $7 or $8 billion per quarter. Apple reported that the overall number of active Macs reached another all-time high.

[…]

The problem is that the iPad is usually a seasonal product that does well in the holiday quarter, and this year’s holiday quarter was 25 percent lower. Ouch. On the other hand, Apple sold $7 billion worth of iPads, none of which were released in 2023.

Previously:

Thursday, February 1, 2024

Amazon Charging for IPv4 Addresses

Amazon:

As you may know, IPv4 addresses are an increasingly scarce resource and the cost to acquire a single public IPv4 address has risen more than 300% over the past 5 years. This change reflects our own costs and is also intended to encourage you to be a bit more frugal with your use of public IPv4 addresses and to think about accelerating your adoption of IPv6 as a modernization and conservation measure.

Andree Toonk (via Hacker News):

Effective February 1, 2024, there will be a charge of $0.005 per IP per hour for all public IPv4 addresses, whether attached to a service or not. That’s a total of $43.80 per year, a pretty hefty number!

[…]

Crunching all that data, we can determine that Amazon has at least 131,932,752 IPv4 addresses.

[…]

Given this data, I believe it’s fair to say that AWS will likely make anywhere between $400 Million and $1 Billion dollars a year with this new IPv4 charge!

luhn:

What’s really offensive about this is that AWS does not have good enough IPv6 support for most customers to migrate off of IPv4, even if they want to.

Previously:

The End of Adobe XD?

Brody Ford (via Hacker News):

Adobe Inc. will end its effort to create a web design product to rival Figma Inc. after the collapse of its proposed $20 billion acquisition of the startup.

When it agreed to buy Figma, which helps users design app and website interfaces, Adobe put its competing program XD in “maintenance mode,” ceasing to launch new features or sell it individually. The deal to purchase Figma fell apart under regulatory pressure in December and the creative software giant hadn’t announced whether it would resurrect XD or attempt to build another competitor.

Previously:

How to Mount HFS Classic Drives

Matthew Hughes (via Colin Cornaby):

Drives using the antiquated vintage HFS file system appear in Disk Utility, but you cannot mount them. Attempting to do so will produce the following error code: “com.apple.DiskManagement.disenter error 49153“.

Fortunately, there’s a relatively straightforward workaround — provided you’re confident enough with the Terminal. This requires you to install the HomeBrew package manager. Instructions can be found here.

Once you’ve done that, you’ll need to download the hfsutils application.

The files cannot be directly accessed in Finder, but there are shell tools to list folders and copy files.

How to Choose and Customize a Mechanical Keyboard

Henri Robbins (Hacker News):

Linear switches have straight “legs” on the sliders that allow for a smooth and consistent key press. Because of this, they have no bump and will be faster to type on, but they won’t have a physical indicator to tell you when the key has been pressed.

Tactile switches have small bumps on their legs that create an increase in resistance right before the switch is actuated, resulting in a “tactile bump.” While this can make typing more precise, it also means your typing experience may be less smooth, and rapid inputs will have more delay between them, since you’ll have to completely remove your finger from the key.

Clicky switches are not as common as linear or tactile switches. They use a multipiece mechanism to create tactility instead of a bump, such as a click jacket, click bar, or click leaf; these switches are characterized by a strong bump and a distinct “click” sound when typing. Functionally, clickies have the same benefits and downsides of a tactile switch, to a slightly stronger degree.

MX-style switches, which have a cross-shaped stem and two metal pins on the bottom, were originally patented by Cherry, and the patent has since expired, leading to multiple different manufacturers making their variations of these switches.

[…]

Typically, wired keyboards will be compatible with both MacOS and Windows, and any programmable keyboards using QMK, VIA, or VIAL can be reprogrammed to work with either operating system.

I recently tried the NuPhy Air75 V2 (Amazon) with Gateron Cowberry switches. These are low-profile but still have a lot more travel, noise, clickiness than Apple’s current keyboards. (I can no longer read the official description of them because it appears they’re no longer available. Link fixed.) Though I like the feel of the keyboard, I unfortunately cannot recommend it because of a variety of problems. The F# keys only work as media keys, no matter how you configure System Settings. NuPhy support confirmed that macOS cannot use them for custom keyboard shortcuts. The fn key doesn’t work for standalone taps (e.g. to enable dictation) or combined with another key (e.g. the built-in fn-E shortcut for opening the emoji picker). There is no firmware updater for Mac. I also found that the keyboard made my Magic Mouse less smooth and sometimes disconnect from Bluetooth.

Previously: