The Desolation of Blog

A sternly worded blog by Jeff Johnson

RSS Feed

Mastodon

Support this blog: Underpass App Company, App Store, PayPal.Me

1/15/2026My way to prevent the macOS Tahoe update with Little Snitch
1/13/2026A sternly worded blog
1/13/2026macOS Tahoe broke Finder columns view
1/12/2026The news media blew it again: iOS 26 adoption measured only third-party browsers
1/7/2026Myths about Logitech Developer ID certificate expiration
1/5/2026My hope for Safari extensions in 2026
12/25/2025Mac app notarization: The ghost of Xcode past?
12/22/2025I foretold that Mac app notarization is security theater
12/20/2025Belated Liquid Glass on iPhone first impressions
12/16/2025UserDefaults footgun
12/11/2025A critique of mathematical objectivity
12/10/2025Reaching 10 million App Store users
11/28/2025Feedback Assistant app mysteriously triggers IMTransferAgent
11/25/2025Web browser status bars are nuts
11/23/2025Why iOS Safari does not open App Store app links
11/22/2025Web development tip: disable pointer events on link images
11/10/2025Apple Messages app violates tracking number privacy
11/5/2025Stop The Mac App Store is not obsolete
9/30/2025URL/NSURL double-encodes characters unnecessarily
9/29/2025Safari 26 advanced fingerprinting protection: A confusing feature
9/27/2025GitHub-hosted copycat Mac app malware scam proliferates
9/24/2025Safari 26 changed address bar copying
9/10/2025The psychology of fixing bugs, Part 2: Google
8/28/2025The psychology of fixing bugs
8/25/2025Apple wants a sysdiagnose for a feature request
8/25/2025A critique of philosophical objectivity
8/17/2025iOS simulator Files app broken by symlink
8/15/2025Academic philosophy: my quixotic quest
8/11/2025icloud.com email users can send but not receive malicious links
8/4/2025Tim Cook vs. Steve Jobs
8/1/2025Book review: Apple in China by Patrick McGee
7/22/2025Some third-party Mac apps I use
7/16/2025Liquid Crass
7/6/2025Apple in China, Ripoff in Amazon
6/27/2025App Store search is not a user feature
6/23/2025Safari web app strange connection behavior
6/11/2025macOS Tahoe forces all app icons into iOS squircles
6/5/2025Why does Apple make a minority of developers finance the entire App Store?
5/31/2025Insane web design on apple dot com
5/27/2025Stop The Mac App Store minor update
5/21/2025Apple Turntable
5/19/2025Apple is not blocking Epic Games from updating Fortnite in the European Union
5/16/2025A look at a Mac App Store top grosser
5/14/2025Making my app worse because of macOS privacy protections
5/6/2025Free with In-App Purchase is a sham
5/1/2025Why some Mac apps launch slowly: A follow-up
4/29/2025Google Chrome 136 automatically upgrades your accounts to use passkeys
4/24/2025Gatekeeper change in macOS 15.4
4/24/2025The weirdest HTML feature (or bug?): display your head
4/23/2025App Store Curation
4/19/2025UIApplication delegate deprecation coming in iOS 19 SDK
4/17/2025Inaccessible .bnnsir files on macOS Sequoia, Part 3
4/8/2025Inaccessible .bnnsir files on macOS Sequoia, Part 2
4/7/2025Why is macOS syslogd listening for UDP connections?
4/7/2025NSURLComponents changed in macOS 15.4
3/31/2025Apple Software Update dark pattern
3/17/2025For sale: 16-inch M1 MacBook Pro with new battery
3/11/2025Why are macOS security updates re-running the Setup Assistant?
3/3/2025iCloud remotely triggers iMessage sign-in and sync
2/24/2025Xcode constantly phones home
2/14/2025Inaccessible .bnnsir files on macOS Sequoia
2/10/2025Apple software update "bug" enables Apple Intelligence
2/8/2025How Safari search engine extensions work
2/4/2025Apple Mail app bugs finally pushed me to MailMate
1/30/2025YouTube problem in macOS Safari
1/27/2025Image Creation Tools Are Here
1/24/2025Little Snitch feature nobody knows about
1/24/2025New secure note on macOS Sequoia
1/22/2025Apple Passwords is hostile to backups
1/17/2025macOS Sequoia iCloud Photos configuration profile bug
1/16/2025Help? Reset AirDrop identity hash
1/4/2025Technology is never a substitute for consent
12/31/2024The internet is full of experts
12/28/2024Apple Photos phones home on iOS 18 and macOS 15
12/20/2024Deep dive into a macOS default web browser bug
12/12/2024How Safari 18.2 https upgrade works
11/29/2024How Safari (insanely) displays app extension icons
11/25/2024Apple continues to dismiss bug reports
10/31/2024Apple silently uploads your passwords and keeps them
10/31/2024Apple rejected my Vision Pro app update
10/23/2024How Safari can improve extensions: Redux
10/17/2024Mac App Store receipt validation problem on Sequoia
9/30/2024Safari 18 randomly appearing sidebar
9/23/2024More annoying macOS 15 Sequoia prompts: Bluetooth
9/21/2024Stop macOS 15 Sequoia monthly screen recording prompts
9/20/2024Can't change security policy or disable SIP with macOS 15 Sequoia
9/19/2024Passkey privacy issues
8/29/2024Safari missing feature: auto-clear website data
8/13/2024macOS firewall slows DNS queries
8/12/2024How I git push from my laptop to my website
8/8/2024New macOS bug: Updates Available notification with no updates
8/7/2024Apple memory holed its broken promise for an OCSP opt-out
8/2/2024Has Apple underpaid App Store developers AGAIN?
8/2/2024Smart App Banners don't appear in private browsing
7/31/2024Fix Safari Private Window Empty Page
7/20/2024Deluge of Fake Mac App Store Reviews
6/25/2024Amazon Web Services dark patterns
6/22/2024Safari bookmarklet permissions
6/15/2024Advanced tracking and fingerprinting protection breaks Safari extensions
6/5/2024Stop iCloud Keychain with a profile
6/4/2024WWDC Boycott of Feedback Assistant
6/4/2024macOS Sonoma Mail bug: spam bypasses Block All Remote Content
6/3/2024Follow-up on developer payments for App Store bundle purchases
5/30/2024Apple silicon MacBook Pro batteries can't be replaced under warranty by third parties
5/29/2024Verify Your Recovery Key?
5/27/2024macOS Sonoma bug: Can't create disk image containing locked file
5/26/2024macOS Sonoma silently enabled iCloud Keychain despite my precautions
5/19/2024Updating from macOS Ventura to Sonoma silently enables iCloud Keychain
5/10/2024Apple started cheating me out of App Store bundle purchases
5/9/2024YouTube video quality bug in iOS Safari
4/17/2024Show passwords as they're typed in Terminal
4/9/2024Funny story of how I recovered the password of an encrypted Mac disk image
4/3/2024Stop The Mac App Store improved for Sonoma and Ventura
4/2/2024Safari Search Settings spacing
2/14/2024Mac app launches slowed by malware scan
2/7/2024How to stop Upgrade to macOS Sonoma notifications
2/5/2024The HTML dialog element API is a mess
1/25/2024Abandonware featured in iOS App Store
1/19/2024Beware of App Store app bundles
1/9/2024How Safari can improve extensions
12/27/2023StopTheMadness Pro postmortem: crApp Store still crappy
12/22/2023iOS 17 App Store screenshots caveat
12/11/2023iOS 17.2 shows the wrong Safari extension icons
12/8/2023macOS Sonoma increases NSControl font size
11/30/2023Disabled Safari extensions are not fully disabled, and other problems
11/29/2023NSFileManager error messages lie
11/13/2023The myth and reality of Mac OS X Snow Leopard
11/8/2023Mac App Store receipt validation revisited
11/7/2023Feedback Assistant boycott web page and participants list
11/6/2023Apple developer boycott of Feedback Assistant
11/3/2023This Feedback will no longer be monitored, and incoming messages will not be reviewed
10/26/2023Safari share menu now violates privacy
10/23/2023Why I disabled advanced tracking and fingerprinting protection in Safari
10/20/2023Safari 17 hidden feature: Always allow this website to open an app
10/19/2023How to fix the disastrous new Xcode 15 console
10/14/2023LaunchServices and Spotlight
10/13/2023Xcode 15 logs nil as an empty string, not (null)
10/3/2023Your Mastodon archive omits DMs sent to you
10/2/2023Mastodon instance admin deleted all of our DMs after 15 days
9/27/2023How did Apple get all of my email addresses?
9/18/2023Mysterious disappearing Apple ID 2FA codes
9/12/2023The most wonderful new hidden feature in iOS 17 and macOS 14
9/11/2023Another Google Search bug in iOS Safari
8/30/2023Safari Un-Intelligent Tracking Prevention: Data loss by design
8/24/2023Threads.net can go to hell
8/20/2023macOS App Management vulnerability illustrated
8/19/2023macOS 0day: App Management
8/14/2023How do I report a Google Search bug?
7/11/2023Follow-up to Firefox 115 can silently remotely disable my extension on any site
7/8/2023Reflections on my 7th Twitter anniversary
7/5/2023Firefox 115 can silently remotely disable my extension on any site
6/14/2023My thoughts on Apple Vision Pro
6/12/2023Little Snitch "denied" connections leak your IP address: Developer response
6/9/2023Safari 17 Link Tracking Protection Details
6/6/2023macOS Sonoma sandbox security
5/18/2023macOS: Attribute Not Found?
5/7/2023Passkeys: A loss of user control?
3/31/2023Follow-up to Little Snitch "denied" connections leak your IP address
3/29/2023Little Snitch "denied" connections leak your IP address
3/27/2023What Apple doesn't get about Feedback
3/8/2023Mac Messages: Can't I show my email address?
3/1/2023Race to the bottom: App Store peer benchmarks
2/28/2023I do want to go back to social media
2/26/2023Ventura or Vista? Cancel or Allow in Mac Preview app
2/14/2023App Store Review continues to delay updates for no reason
2/6/2023Mastodon postmortem
1/31/2023Mastodon instance mstdn.plus with over 4K users suddenly broke
1/23/2023NSURLSession connection leak
1/16/2023Universal Links Revisited
1/15/2023Bing and DuckDuckGo removed my business web site AGAIN
1/4/2023The App Store does not protect consumers
12/28/2022App Store Connect is the worst web site ever made, Part 4: Works as currently designed
12/27/2022I posted my Safari extension issues on GitHub. Post yours too!
12/17/2022How to restore the Preferences menu item to macOS Ventura, Part 2
12/14/2022macOS removes and reinstalls Rosetta after every update
12/13/2022Mac OS X analogue for Node.js?
12/1/2022macOS Monterey still vulnerable to CVE-2022-40303
11/28/2022Hide System Preferences Dock badge
11/19/2022I don't want to go back to social media
11/12/2022App Store Connect is the worst web site ever made, Part 3
11/10/2022App Store Connect just got worse. But I made it better.
11/3/2022I'm starting a company blog and Slack
11/2/2022Blogging without a blogging engine
11/1/2022A list of Apple-related RSS feeds
10/27/2022How to regenerate Xcode managed provisioning profiles
10/24/2022How macOS Ventura App Management works and doesn't work
10/21/2022Mac indie dev alliance
10/8/2022Works as currently designed
9/28/2022Check your App IDs for unused capabilities
9/22/2022Every unsandboxed app has Full Disk Access if Terminal does
9/13/2022iOS 16 text view breakage
9/5/2022How to restore the Preferences menu item to macOS Ventura
8/28/2022Web pages can overwrite your system clipboard without your knowledge
8/24/2022Safari updates reset your Experimental Features preferences
8/23/2022Extensions API broken in Mac Safari
8/22/2022iOS dictation is dickish
8/9/2022Why macOS Ventura Share menu is bad
8/7/2022Twitter crypto spam bots copy real tweets to appear real
7/20/2022Apple re-enables Bluetooth on every OS update on purpose
7/19/2022NSURL is relatively bad
7/6/2022More disappearing Safari extensions
7/4/2022Thoughts on Swift and Objective-C
6/30/2022macOS Monterey Dock watches /Users/Shared/
6/23/2022macOS Monterey unannounced security misfeature
6/22/2022Link Unshortener enhancements
6/20/2022Stop Safari from switching your Twitter timeline
6/16/2022Bing and DuckDuckGo removed my business web site
6/13/2022Apple reneged on OCSP privacy
6/8/2022Why Ventura System Settings is bad, Part 2
6/7/2022Why Ventura System Settings is bad
6/4/2022Apple's director of App Review emailed me
5/27/2022My bug fix update is stuck in App Store review
5/11/2022On App Store pricing inflexibility
5/4/2022Safari <img> solving the wrong problem
5/1/2022The App Store Improvements process makes no sense
4/26/2022Google Chrome 101 removed Fill passwords on account selection
4/22/2022How do I backup my new MacBook Pro?
4/19/2022Impressions of the new MacBook Pro
4/18/2022Why is /AppleInternal factory installed on new Macs?
4/5/2022Mac Pro historical perspective
3/31/2022App Store Connect is the worst web site ever made
3/26/2022Do you want me to leave the Apple ecosystem?
2/22/2022Misinformation from… Stephen Fry?
2/3/2022How to make a home page bookmark to Twitter in Mobile Safari
1/2/2022Siri may phone home with Ask Siri disabled
12/14/2021iOS 15.2 broke Safari extension preferences storage
12/2/2021You always had the power to PiP on YouTube and everywhere
11/29/2021Safari bug: background tabs reactivate
11/21/2021Safari forgets your history
11/2/2021DNSServiceNATPortMappingCreate was quietly killed in macOS Monterey
10/15/2021Mass confusion and dislike over Safari extension icon tinting
10/14/2021Apple vandalized my icon in the latest betas
10/6/2021Did iOS 15 kill Google AMP?
10/5/2021StopTheScript
9/30/2021The Safari extension blues
9/21/2021Where are the Safari extensions in the iOS App Store?
9/3/2021Google Chrome to remove detailed cookie and site data controls
8/28/2021Why Xcode tools are slow after reboot
8/24/2021The color purple
8/21/2021Dark menu bar and Dock on Big Sur
8/18/2021Disappearing Safari extensions
8/16/2021Mac OS update failed for the first time in 19 years
7/22/2021Twitter locked my account (again) for an obvious joke
7/13/2021Stop the Medium
7/7/2021Safari extension development: icons
6/11/2021iOS Safari extensions bug
6/8/2021StopTheMadness for iOS
5/19/2021Disable Safari Preload Top Hit
5/11/2021Mac trustd high CPU
4/29/2021Porting your Chrome extension to Safari
4/21/2021StopTheMadness: Hovering near greatness
4/19/2021Mac App Store review folly
4/10/2021NSURL is a bad host
4/2/2021Distributing unnotarized Mac apps in a text file
3/29/2021How to stop Mac App Store notifications
3/17/2021Closing web browser windows doesn't close connections
3/8/2021TRY THE NEW SAFARI
3/7/2021Distributing Mac apps without notarization
3/5/2021New app: Default web browser
3/2/2021How to use multiple search engines in Safari
2/26/2021Mac App Store updates failing on Mojave, Part 2
2/23/2021Xcode code signing madness
1/31/2021Deleting DerivedData the right way
1/12/2021New app: Stop The Mac App Store
1/6/2021How to change your default web browser on Big Sur
12/29/2020Mac App Store updates failing on Mojave
12/18/2020Undocumented NSShadow change on Catalina
12/1/2020Disclosure: Yet another macOS privacy protections bypass
11/27/2020Some BS AppKit notes
11/18/2020Safari bugs me
11/13/2020Apple Developer ID OCSP
10/29/2020Developer ID certificate revocation
10/7/2020Chrome exempts Google sites from user site data settings
10/1/2020Stop animated GIFs in Safari
9/27/2020Can't you just right click? Yes, with a workflow.
9/22/2020macOS Containers and defaults
9/17/2020Safari web extension bug
9/11/2020Stop Facebook click tracking
8/27/2020Your Honor, what about the Mac?
8/18/2020Can't you just right click?
8/15/2020App Store is neither console nor retail but jukebox
8/11/2020News+ privacy on Big Sur
7/31/2020PSA if you ever ran my SafariPrivacyTest sample app
7/29/2020Stop the Swift 2.0
7/23/2020App Store Connect and StopTheMadness
7/14/2020Stop the Swift
7/9/2020macOS Recovery: Bug or Feature?
7/6/2020Introducing the free Safari extension FindTheMadness
6/30/2020Disclosure: Another macOS privacy protections bypass
6/27/2020Better disassembly on macOS Big Sur
6/25/2020Objective-C disassembly on macOS Big Sur
6/24/2020Extract the system libraries on macOS Big Sur
6/15/2020Stop DuckDuckGo clickjacking
6/1/2020StopTheMadness can now stop mouse tracking
5/31/2020Logging https requests and responses of Apple system processes
5/26/2020Software Update changes in the latest macOS releases
5/25/2020The Mystery of the Phantom App Updates, Part 2
5/22/2020Catalina is checking notarization of unsigned executables
5/19/2020Link Unshortener for iOS
5/17/2020__kindof useful?
5/11/2020Stop the Daring Fireball?
5/8/2020Stop 'Open in the Twitter app' in Safari Catalina
5/6/2020Stop Gmail click tracking
4/30/2020Reflections on the Mac sandbox escape
4/27/2020Mac sandbox escape
4/25/2020NSFormatter allows invalid values
4/21/2020Working without a nib, Part 12: NSWindow memory management
4/20/2020Bad Safari extensions bug with context menus
4/14/2020Introducing Link Unshortener
4/12/2020Xcode indexing tip
4/1/2020Resources for learning Objective-C and AppKit
3/30/2020Underpass is back (though it never left)
3/25/2020Safari bug: can't enable extensions on Catalina
3/24/2020Safari no longer runs disabled extensions
3/23/2020Mac App Store in a nutshell
3/18/2020PayPal Me
3/8/2020Resolve rip-relative addresses from otool
3/2/2020The decimation of Safari extensions
2/13/2020StopTheMadness for Mac adds Chrome, Edge, and Brave!
1/26/2020Safari runs disabled extensions
1/15/2020Swift fatalError is a fatal error
1/13/2020Questions about the Apple Security Bounty
1/8/2020The security of Safari extensions
1/6/2020How to stop Safari for Mac disk caching
12/21/2019Revisited: The true and false security benefits of Mac app notarization
12/18/2019Undocumented Catalina file access change
11/9/2019Hardened Runtime and XPC Services
11/8/2019NSAssert considered harmless
11/7/2019Hardened Runtime and Sandboxing Revisited
10/9/2019Disclosure: macOS privacy protections bypass
10/8/2019What happened to the Mac bug bounty program?
9/4/2019The Safari Extensions Gallery is no longer available
8/27/2019Important Information Regarding the Safari Extensions Gallery
7/11/2019A problem worse than Zoom
7/2/2019Stop Safari from autosubmitting login forms
6/10/2019Private browsing in Safari with StopTheMadness
6/7/2019Catalina app compatibility
6/6/2019My Twitter account has been locked for a third time
5/30/2019We believe that what’s in our store says a lot about who we are
5/4/2019Introducing StopTheNews
4/30/2019StopTheMadness First Anniversary
4/23/2019Google Chrome can no longer disable hyperlink auditing
4/21/2019The true and false security benefits of Mac app notarization
4/17/2019More madness stopped: beacons
4/13/2019The madness stopped: anchor ping
4/10/2019Postmortem: iTunes Affiliate for apps
4/8/2019Some thoughts on anchor ping
4/3/2019Safari link tracking can no longer be disabled
3/14/2019NetService NutHouse
2/24/2019My Twitter account has been locked again
2/18/2019Finally credit from Apple Product Security
2/9/2019Spying on Safari in Mojave
2/8/2019Still no credit from Apple Product Security
1/17/2019Stop Google Search Results Tracking
1/16/2019StopTheMadness for Firefox
12/21/2018The Mac App Store Safari Extensions Experience
12/14/2018Text view adventures, Part 4
12/12/2018Text view adventures, Part 3
12/6/2018Mac app notarization and customer privacy
12/5/2018Text view adventures, Part 2
12/1/2018Text view adventures, Part 1
11/16/2018Hardened Runtime and Sandboxing
11/2/2018macOS 10.14.1 Privacy: What's fixed and what's not
11/1/2018Mac App Store Bundles
10/26/2018Rickroll Resurrected
10/16/2018Mac Mail with Google 2-step and Yubico
9/26/2018Another hole in Mojave privacy protection
9/20/2018No cookie for you!
8/22/2018Prevent App Nap Programmatically
8/7/2018Race to Under the Bottom
7/26/2018Stop The Mad Icon
7/12/2018Ode to a MacBook Pro
7/1/2018NSOnState is deprecated
6/11/2018Debugging on Mojave
5/21/2018App Translocation and Safari App Extensions
5/16/2018My Twitter account has been locked
4/30/2018Stop The Madness
2/1/2018A Record 13 Weeks
12/27/2017A holiday gift
12/4/2017Key difference between Dictionary and NSDictionary
11/24/2017The Mystery of the Phantom App Updates
10/20/2017Working without a nib, Part 11: Why?
10/14/2017Local variables are still free, in Swift
10/9/2017Free as in app
9/1/2017NSStringEncoding Considered Harmful
8/23/2017Go all in with xcconfig
7/24/2017NSNotificationCenter is thread-safe NOT NOT
6/29/2017Working without a nib, Part 10: Mac Main Menu
6/27/2017I was on a podcast
6/19/2017Porting Objective-C to Swift
4/15/2017Problems with Objective-C annotations
4/4/2017Not just the Mac Pro
4/2/2017Twitter only mutes 100 keywords
2/28/2017Autoresizing UITextView
2/14/2017Whither Swift?
2/4/2017Follow-up on a Record 14 Weeks
2/2/2017Slow Week?
2/1/2017A Record 14 Weeks
1/31/201770 Cents Put Me on the Mac App Store Charts
1/25/2017Working without a nib, Part 9: Shipping without a nib
1/18/2017Inaugurating Underpass
12/12/2016Preannouncement
12/5/2016Textured Tabbed Windows
10/31/2016We don't need no stinking badges
10/17/2016Working without a nib, Part 8: The nib awakens
10/7/2016Translocate Relocated
10/6/2016Distributing Outside the Mac App Store
9/26/2016Caveat Formatter
9/24/2016Symmetric Encryption
9/17/2016Keychain Sync
8/16/2016MIA: SecTranslocate
7/26/2016Detect App Translocation Without the 10.12 SDK
6/30/2016Trust
6/17/2016In Memoriam
6/16/2016Undo
6/15/2016Zero Day?
6/14/2016App Translocation
4/18/2016What's Wrong With Twitter
12/29/2015SecTransformExecuteAsync Considered Confusing
10/3/2015The OpenSSL Blues
8/2/2015Checking for El Capitan
4/3/2015Validate Project Settings: Never!
9/23/2014Lack of Communication
8/5/2014Breaking the resource rules
4/21/2014NSNotificationCenter is thread-safe NOT
4/13/2014Cancel WWDC
4/7/2014Dispatch Queues and Run Loop Modes
4/6/2014Mark Not All as Read
4/5/2014Winter is Coming
5/5/2013The Definitive Guide to Installing Xcode 3 on Mountain Lion (Without Kernel Panics)
5/4/2013SDK vs. Deployment Target

Old Blog: 2006 - 2010