The Adversarial Collisions that Broke Apple’s CSAM System (and Why They Matter Beyond Apple)

This post is a technical follow-up to “64 Bits Decide What You Can Upload to the Internet”. If you haven’t read that yet, I recommend starting there. Here, we assume you understand what a perceptual hash is and why PhotoDNA, PDQ, and NeuralHash are close cousins. On August 5, 2021, Apple announced NeuralHash. By August 18—just thirteen days later—a pseudonymous researcher named Asuhariet Ygvar published a complete reverse-engineering of the model, extracted from iOS binaries, on GitHub. Within days, two independent researchers—Brad Dwyer and others—published collisions: visually distinct images producing the exact same hash. The system that Apple had promised to deliver with a false positive rate of “one in a trillion accounts per year” was shown to be attackable using consumer-grade hardware. ...

April 18, 2026 · Fernando

64 Bits Decide What You Can Upload to the Internet: The Algorithm Behind Chat Control

In August 2021, Apple announced plans to scan every photo on your iPhone before uploading it to iCloud. By September of the same year—after two weeks of intense backlash—it withdrew the proposal. In December 2022, the initiative was officially declared dead. In the meantime, the European Commission proposed legislation in 2022 requiring platforms like WhatsApp, Signal, and Telegram to do exactly what Apple had backed away from. That proposal, known as Chat Control, is still being debated in the European Council. ...

April 18, 2026 · Fernando

Apple's sentiment analysis thinks 'delete the temp file' is a death threat

NLTagger is Apple’s API for sentiment analysis. It’s integrated into iOS and macOS, runs on-device, needs no server, and is three lines of code away. It’s the first thing you find when searching for “sentiment analysis Swift”. Here’s what it returns for text any developer would write on a normal day: Message NLTagger Reality “delete the temp file” -0.8 Neutral instruction “ok” -0.8 Neutral confirmation “run make test” -0.6 Neutral instruction “commit and push” -0.4 Neutral instruction “great job, thanks!” +1.0 Positive (correct) “this is fucking broken” -1.0 Negative (correct) The scale goes from -1.0 (very negative) to +1.0 (very positive). According to Apple, “delete the temp file” carries almost the same emotional weight as “this is fucking broken”. And “ok” – the most neutral response in the English language – scores -0.8. ...

April 5, 2026 · Fernando

NLTagger and Sentiment Analysis: Why Apple Thinks Your Code is Depressing

Imagine you’re building an app that analyzes conversations within a development team. You want to detect whether the team’s tone is healthy or if there are signs of stress. You decide to use Apple’s NLTagger because it’s readily available, free, runs on-device, and doesn’t require a server. Three lines of code, and off you go. First surprise: the phrase “kill the process and restart the daemon” scores -0.6. Negative. Almost hostile. “Fatal error in memory allocation” gets a -0.8. And “crash report uploaded successfully” — which is literally good news — scores -0.4. ...

March 28, 2026 · Fernando

macOS Notarization: the nightclub bouncer Apple put on your app

It’s 2 AM. Your app compiles. You sign it. You package it in a DMG. You run notarytool submit. Apple says “In Progress”. You wait 5 minutes. 10. 20. An hour. Two hours. The submission is still “In Progress”. You go to bed. The next morning: Invalid. With no more explanation than “The signature of the binary is invalid”. For both architectures. Thanks, Apple. Very helpful. Notarization is one of those processes that works perfectly… until it doesn’t. And when it fails, it leaves you with a .dmg that Gatekeeper won’t let open and an error that tells you nothing. After fighting with this for a couple of days with Tokamak (my menu bar app for monitoring Claude quota), I decided to document everything I learned and write a linter so I never have to go through this again. ...

February 22, 2026 · Fernando

Apple installed 84GB of jellyfish on my Mac. Duplicated.

Kimi K2 will have to wait Yesterday I wanted to download the latest Moonshot model, Kimi K2 Instruct. A pretty promising model that I’d been wanting to test for days. I went to make some space, checked the disk, and found this: Disk: 927GB Used: 644GB Free: 283GB Hmm. 283GB free isn’t bad, but what the hell is taking up 644GB? I keep my Mac pretty clean, don’t store movies locally, and use the cloud for almost everything. ...

January 29, 2026 · Fernando