6/6/2023 | macOS Sonoma sandbox security |
5/18/2023 | macOS: Attribute Not Found? |
5/7/2023 | Passkeys: A loss of user control? |
3/31/2023 | Follow-up to Little Snitch "denied" connections leak your IP address |
3/29/2023 | Little Snitch "denied" connections leak your IP address |
3/27/2023 | What Apple doesn't get about Feedback |
3/8/2023 | Mac Messages: Can't I show my email address? |
3/1/2023 | Race to the bottom: App Store peer benchmarks |
2/28/2023 | I do want to go back to social media |
2/26/2023 | Ventura or Vista? Cancel or Allow in Mac Preview app |
2/14/2023 | App Store Review continues to delay updates for no reason |
2/6/2023 | Mastodon postmortem |
1/31/2023 | Mastodon instance mstdn.plus with over 4K users suddenly broke |
1/23/2023 | NSURLSession connection leak |
1/16/2023 | Universal Links Revisited |
1/15/2023 | Bing and DuckDuckGo removed my business web site AGAIN |
1/4/2023 | The App Store does not protect consumers |
12/28/2022 | App Store Connect is the worst web site ever made, Part 4: Works as currently designed |
12/27/2022 | I posted my Safari extension issues on GitHub. Post yours too! |
12/17/2022 | How to restore the Preferences menu item to macOS Ventura, Part 2 |
12/14/2022 | macOS removes and reinstalls Rosetta after every update |
12/13/2022 | Mac OS X analogue for Node.js? |
12/1/2022 | macOS Monterey still vulnerable to CVE-2022-40303 |
11/28/2022 | Hide System Preferences Dock badge |
11/19/2022 | I don't want to go back to social media |
11/12/2022 | App Store Connect is the worst web site ever made, Part 3 |
11/10/2022 | App Store Connect just got worse. But I made it better. |
11/3/2022 | I'm starting a company blog and Slack |
11/2/2022 | Blogging without a blogging engine |
11/1/2022 | A list of Apple-related RSS feeds |
10/27/2022 | How to regenerate Xcode managed provisioning profiles |
10/24/2022 | How macOS Ventura App Management works and doesn't work |
10/21/2022 | Mac indie dev alliance |
10/8/2022 | Works as currently designed |
9/28/2022 | Check your App IDs for unused capabilities |
9/22/2022 | Every unsandboxed app has Full Disk Access if Terminal does |
9/13/2022 | iOS 16 text view breakage |
9/5/2022 | How to restore the Preferences menu item to macOS Ventura |
8/28/2022 | Web pages can overwrite your system clipboard without your knowledge |
8/24/2022 | Safari updates reset your Experimental Features preferences |
8/23/2022 | Extensions API broken in Mac Safari |
8/22/2022 | iOS dictation is dickish |
8/9/2022 | Why macOS Ventura Share menu is bad |
8/7/2022 | Twitter crypto spam bots copy real tweets to appear real |
7/20/2022 | Apple re-enables Bluetooth on every OS update on purpose |
7/19/2022 | NSURL is relatively bad |
7/6/2022 | More disappearing Safari extensions |
7/4/2022 | Thoughts on Swift and Objective-C |
6/30/2022 | macOS Monterey Dock watches /Users/Shared/ |
6/23/2022 | macOS Monterey unannounced security misfeature |
6/22/2022 | Link Unshortener enhancements |
6/20/2022 | Stop Safari from switching your Twitter timeline |
6/16/2022 | Bing and DuckDuckGo removed my business web site |
6/13/2022 | Apple reneged on OCSP privacy |
6/8/2022 | Why Ventura System Settings is bad, Part 2 |
6/7/2022 | Why Ventura System Settings is bad |
6/4/2022 | Apple's director of App Review emailed me |
5/27/2022 | My bug fix update is stuck in App Store review |
5/11/2022 | On App Store pricing inflexibility |
5/4/2022 | Safari <img> solving the wrong problem |
5/1/2022 | The App Store Improvements process makes no sense |
4/26/2022 | Google Chrome 101 removed Fill passwords on account selection |
4/22/2022 | How do I backup my new MacBook Pro? |
4/19/2022 | Impressions of the new MacBook Pro |
4/18/2022 | Why is /AppleInternal factory installed on new Macs? |
4/5/2022 | Mac Pro historical perspective |
3/31/2022 | App Store Connect is the worst web site ever made |
3/26/2022 | Do you want me to leave the Apple ecosystem? |
2/22/2022 | Misinformation from… Stephen Fry? |
2/3/2022 | How to make a home page bookmark to Twitter in Mobile Safari |
1/2/2022 | Siri may phone home with Ask Siri disabled |
12/14/2021 | iOS 15.2 broke Safari extension preferences storage |
12/2/2021 | You always had the power to PiP on YouTube and everywhere |
11/29/2021 | Safari bug: background tabs reactivate |
11/21/2021 | Safari forgets your history |
11/2/2021 | DNSServiceNATPortMappingCreate was quietly killed in macOS Monterey |
10/15/2021 | Mass confusion and dislike over Safari extension icon tinting |
10/14/2021 | Apple vandalized my icon in the latest betas |
10/6/2021 | Did iOS 15 kill Google AMP? |
10/5/2021 | StopTheScript |
9/30/2021 | The Safari extension blues |
9/21/2021 | Where are the Safari extensions in the iOS App Store? |
9/3/2021 | Google Chrome to remove detailed cookie and site data controls |
8/28/2021 | Why Xcode tools are slow after reboot |
8/24/2021 | The color purple |
8/21/2021 | Dark menu bar and Dock on Big Sur |
8/18/2021 | Disappearing Safari extensions |
8/16/2021 | Mac OS update failed for the first time in 19 years |
7/22/2021 | Twitter locked my account (again) for an obvious joke |
7/13/2021 | Stop the Medium |
7/7/2021 | Safari extension development: icons |
6/11/2021 | iOS Safari extensions bug |
6/8/2021 | StopTheMadness for iOS |
5/19/2021 | Disable Safari Preload Top Hit |
5/11/2021 | Mac trustd high CPU |
4/29/2021 | Porting your Chrome extension to Safari |
4/21/2021 | StopTheMadness: Hovering near greatness |
4/19/2021 | Mac App Store review folly |
4/10/2021 | NSURL is a bad host |
4/2/2021 | Distributing unnotarized Mac apps in a text file |
3/29/2021 | How to stop Mac App Store notifications |
3/17/2021 | Closing web browser windows doesn't close connections |
3/8/2021 | TRY THE NEW SAFARI |
3/7/2021 | Distributing Mac apps without notarization |
3/5/2021 | New app: Default web browser |
3/2/2021 | How to use multiple search engines in Safari |
2/26/2021 | Mac App Store updates failing on Mojave, Part 2 |
2/23/2021 | Xcode code signing madness |
1/31/2021 | Deleting DerivedData the right way |
1/12/2021 | New app: Stop The Mac App Store |
1/6/2021 | How to change your default web browser on Big Sur |
12/29/2020 | Mac App Store updates failing on Mojave |
12/18/2020 | Undocumented NSShadow change on Catalina |
12/1/2020 | Disclosure: Yet another macOS privacy protections bypass |
11/27/2020 | Some BS AppKit notes |
11/18/2020 | Safari bugs me |
11/13/2020 | Apple Developer ID OCSP |
10/29/2020 | Developer ID certificate revocation |
10/7/2020 | Chrome exempts Google sites from user site data settings |
10/1/2020 | Stop animated GIFs in Safari |
9/27/2020 | Can't you just right click? Yes, with a workflow. |
9/22/2020 | macOS Containers and defaults |
9/17/2020 | Safari web extension bug |
9/11/2020 | Stop Facebook click tracking |
8/27/2020 | Your Honor, what about the Mac? |
8/18/2020 | Can't you just right click? |
8/15/2020 | App Store is neither console nor retail but jukebox |
8/11/2020 | News+ privacy on Big Sur |
7/31/2020 | PSA if you ever ran my SafariPrivacyTest sample app |
7/29/2020 | Stop the Swift 2.0 |
7/23/2020 | App Store Connect and StopTheMadness |
7/14/2020 | Stop the Swift |
7/9/2020 | macOS Recovery: Bug or Feature? |
7/6/2020 | Introducing the free Safari extension FindTheMadness |
6/30/2020 | Disclosure: Another macOS privacy protections bypass |
6/27/2020 | Better disassembly on macOS Big Sur |
6/25/2020 | Objective-C disassembly on macOS Big Sur |
6/24/2020 | Extract the system libraries on macOS Big Sur |
6/15/2020 | Stop DuckDuckGo clickjacking |
6/1/2020 | StopTheMadness can now stop mouse tracking |
5/31/2020 | Logging https requests and responses of Apple system processes |
5/26/2020 | Software Update changes in the latest macOS releases |
5/25/2020 | The Mystery of the Phantom App Updates, Part 2 |
5/22/2020 | Catalina is checking notarization of unsigned executables |
5/19/2020 | Link Unshortener for iOS |
5/17/2020 | __kindof useful? |
5/11/2020 | Stop the Daring Fireball? |
5/8/2020 | Stop 'Open in the Twitter app' in Safari Catalina |
5/6/2020 | Stop Gmail click tracking |
4/30/2020 | Reflections on the Mac sandbox escape |
4/27/2020 | Mac sandbox escape |
4/25/2020 | NSFormatter allows invalid values |
4/21/2020 | Working without a nib, Part 12: NSWindow memory management |
4/20/2020 | Bad Safari extensions bug with context menus |
4/14/2020 | Introducing Link Unshortener |
4/12/2020 | Xcode indexing tip |
4/1/2020 | Resources for learning Objective-C and AppKit |
3/30/2020 | Underpass is back (though it never left) |
3/25/2020 | Safari bug: can't enable extensions on Catalina |
3/24/2020 | Safari no longer runs disabled extensions |
3/23/2020 | Mac App Store in a nutshell |
3/18/2020 | PayPal Me |
3/8/2020 | Resolve rip-relative addresses from otool |
3/2/2020 | The decimation of Safari extensions |
2/13/2020 | StopTheMadness for Mac adds Chrome, Edge, and Brave! |
1/26/2020 | Safari runs disabled extensions |
1/15/2020 | Swift fatalError is a fatal error |
1/13/2020 | Questions about the Apple Security Bounty |
1/8/2020 | The security of Safari extensions |
1/6/2020 | How to stop Safari for Mac disk caching |
12/21/2019 | Revisited: The true and false security benefits of Mac app notarization |
12/18/2019 | Undocumented Catalina file access change |
11/9/2019 | Hardened Runtime and XPC Services |
11/8/2019 | NSAssert considered harmless |
11/7/2019 | Hardened Runtime and Sandboxing Revisited |
10/9/2019 | Disclosure: macOS privacy protections bypass |
10/8/2019 | What happened to the Mac bug bounty program? |
9/4/2019 | The Safari Extensions Gallery is no longer available |
8/27/2019 | Important Information Regarding the Safari Extensions Gallery |
7/11/2019 | A problem worse than Zoom |
7/2/2019 | Stop Safari from autosubmitting login forms |
6/10/2019 | Private browsing in Safari with StopTheMadness |
6/7/2019 | Catalina app compatibility |
6/6/2019 | My Twitter account has been locked for a third time |
5/30/2019 | We believe that what’s in our store says a lot about who we are |
5/4/2019 | Introducing StopTheNews |
4/30/2019 | StopTheMadness First Anniversary |
4/23/2019 | Google Chrome can no longer disable hyperlink auditing |
4/21/2019 | The true and false security benefits of Mac app notarization |
4/17/2019 | More madness stopped: beacons |
4/13/2019 | The madness stopped: anchor ping |
4/10/2019 | Postmortem: iTunes Affiliate for apps |
4/8/2019 | Some thoughts on anchor ping |
4/3/2019 | Safari link tracking can no longer be disabled |
3/14/2019 | NetService NutHouse |
2/24/2019 | My Twitter account has been locked again |
2/18/2019 | Finally credit from Apple Product Security |
2/9/2019 | Spying on Safari in Mojave |
2/8/2019 | Still no credit from Apple Product Security |
1/17/2019 | Stop Google Search Results Tracking |
1/16/2019 | StopTheMadness for Firefox |
12/21/2018 | The Mac App Store Safari Extensions Experience |
12/14/2018 | Text view adventures, Part 4 |
12/12/2018 | Text view adventures, Part 3 |
12/6/2018 | Mac app notarization and customer privacy |
12/5/2018 | Text view adventures, Part 2 |
12/1/2018 | Text view adventures, Part 1 |
11/16/2018 | Hardened Runtime and Sandboxing |
11/2/2018 | macOS 10.14.1 Privacy: What's fixed and what's not |
11/1/2018 | Mac App Store Bundles |
10/26/2018 | Rickroll Resurrected |
10/16/2018 | Mac Mail with Google 2-step and Yubico |
9/26/2018 | Another hole in Mojave privacy protection |
9/20/2018 | No cookie for you! |
8/22/2018 | Prevent App Nap Programmatically |
8/7/2018 | Race to Under the Bottom |
7/26/2018 | Stop The Mad Icon |
7/12/2018 | Ode to a MacBook Pro |
7/1/2018 | NSOnState is deprecated |
6/11/2018 | Debugging on Mojave |
5/21/2018 | App Translocation and Safari App Extensions |
5/16/2018 | My Twitter account has been locked |
4/30/2018 | Stop The Madness |
2/1/2018 | A Record 13 Weeks |
12/27/2017 | A holiday gift |
12/4/2017 | Key difference between Dictionary and NSDictionary |
11/24/2017 | The Mystery of the Phantom App Updates |
10/20/2017 | Working without a nib, Part 11: Why? |
10/14/2017 | Local variables are still free, in Swift |
10/9/2017 | Free as in app |
9/1/2017 | NSStringEncoding Considered Harmful |
8/23/2017 | Go all in with xcconfig |
7/24/2017 | NSNotificationCenter is thread-safe NOT NOT |
6/29/2017 | Working without a nib, Part 10: Mac Main Menu |
6/27/2017 | I was on a podcast |
6/19/2017 | Porting Objective-C to Swift |
4/15/2017 | Problems with Objective-C annotations |
4/4/2017 | Not just the Mac Pro |
4/2/2017 | Twitter only mutes 100 keywords |
2/28/2017 | Autoresizing UITextView |
2/14/2017 | Whither Swift? |
2/4/2017 | Follow-up on a Record 14 Weeks |
2/2/2017 | Slow Week? |
2/1/2017 | A Record 14 Weeks |
1/31/2017 | 70 Cents Put Me on the Mac App Store Charts |
1/25/2017 | Working without a nib, Part 9: Shipping without a nib |
1/18/2017 | Inaugurating Underpass |
12/12/2016 | Preannouncement |
12/5/2016 | Textured Tabbed Windows |
10/31/2016 | We don't need no stinking badges |
10/17/2016 | Working without a nib, Part 8: The nib awakens |
10/7/2016 | Translocate Relocated |
10/6/2016 | Distributing Outside the Mac App Store |
9/26/2016 | Caveat Formatter |
9/24/2016 | Symmetric Encryption |
9/17/2016 | Keychain Sync |
8/16/2016 | MIA: SecTranslocate |
7/26/2016 | Detect App Translocation Without the 10.12 SDK |
6/30/2016 | Trust |
6/17/2016 | In Memoriam |
6/16/2016 | Undo |
6/15/2016 | Zero Day? |
6/14/2016 | App Translocation |
4/18/2016 | What's Wrong With Twitter |
12/29/2015 | SecTransformExecuteAsync Considered Confusing |
10/3/2015 | The OpenSSL Blues |
8/2/2015 | Checking for El Capitan |
4/3/2015 | Validate Project Settings: Never! |
9/23/2014 | Lack of Communication |
8/5/2014 | Breaking the resource rules |
4/21/2014 | NSNotificationCenter is thread-safe NOT |
4/13/2014 | Cancel WWDC |
4/7/2014 | Dispatch Queues and Run Loop Modes |
4/6/2014 | Mark Not All as Read |
4/5/2014 | Winter is Coming |
5/5/2013 | The Definitive Guide to Installing Xcode 3 on Mountain Lion (Without Kernel Panics) |
5/4/2013 | SDK vs. Deployment Target |