Mac OS X Archive

Deprecated kernel extensions and system extension alternatives

Just another heads up that kernel extensions on macOS will soon stop working. This has been known for a while, but you might not even know you’re using kernel extensions in the first place. System extensions on macOS Catalina (10.15) allow software like network extensions and endpoint security solutions to extend the functionality of macOS without requiring kernel-level access. At WWDC19, we announced the deprecation of kernel extensions as part of our ongoing effort to modernize the platform, improve security and reliability, and enable more user-friendly distribution methods. Kernel programming interfaces (KPIs) will be deprecated as alternatives become available, and future OS releases will no longer load kernel extensions that use deprecated KPIs by default. If you use macOS, run kextstat | grep -v com.apple to see how many third party kernel extensions you have running. Things like VirtualBox, controller support for Steam, DropBox, Little Snitch, and more all come with kernel extensions, so there’s definitely chances you might be running some without even realising it.

Is Catalina a good upgrade yet?

We’re now past Catalina’s midpoint: with four versions already released, there’s only three more to go before we prepare for the first release of 10.16. That’s a stark fact, that we’re now at the point where the more cautious should consider whether they’ll run 10.15. Unusually for macOS, there are many Mac users with Catalina-compatible Macs who are no more able to upgrade now than they were back in October. These include the many who still have to rely on 32-bit apps, and those whose Mac doesn’t start up from an SSD. There’s still a lot of trepidation about Catalina, even among the Apple faithful in popular podcasts like ATP.

Phoenix: a lightweight macOS window and app manager scriptable with JavaScript

A lightweight macOS window and app manager scriptable with JavaScript. You can also easily use languages which compile to JavaScript such as CoffeeScript. Phoenix aims for efficiency and a very small footprint. If you like the idea of scripting your own window or app management toolkit with JavaScript, Phoenix is probably going to give you the things you want. With Phoenix you can bind keyboard shortcuts and system events, and use these to interact with macOS. Pretty cool.

Undocumented Catalina file access change

It’s well known that if you drag a file from Finder and drop it into Terminal, the full path of the file will output in Terminal. The same behavior occurs with copy and paste too. This has always been a very convenient but innocuous operation… until macOS 10.15 Catalina. I’ve discovered that on Catalina, pasting a file from Finder not only outputs the file path in Terminal, it also invisibly and permanently grants Terminal access to the file, bypassing any macOS privacy protections! This is such a weird bug… Or feature?

Catalina 10.15.2 has changed Gatekeeper’s dialogs to confuse notarization status

If you’ve updated to macOS Catalina 10.15.2 and installed any notarized apps since, you might have noticed that something has gone missing. Do you remember that dialog shown by Gatekeeper when you first open a notarized app, telling you that “Apple checked it for malicious software and none was detected”? Well, that sentence has now vanished. Instead, that dialog now looks very similar to the pre-Catalina dialog for non-notarized apps. I had to read this post twice to fully comprehend what was going on, but once you get it – and most of you will get it without multiple reads because you’re not stupid like me – it’s an interesting look at how seemingly subtle changes in security dialogs – especially undocumented changes – can actually have very serious consequences if you take them at face-value.

macOS Catalina boot volume layout

When you upgrade to macOS 10.15 Catalina, your boot volume will effectively be split into two. Assuming it’s the standard internal storage, your existing boot volume will be renamed to Macintosh HD – Data, and a new read-only system volume created and given the name Macintosh HD. However, when your Mac starts up in Catalina, you won’t see the Data volume, as it’s hidden inside the System volume, in what Apple refers to as a Volume Group. I miss the olden days where disk layouts were simple and straightforward. Look at the partition layout of any recent operating system, and you’ll be greeted by several small partitions with specific functions, such as boot manager partitions, restore partitions, and so on. These partitions are hidden, and I’ve always been of the school that if you need to hide something, you probably designed it wrong. In any event, I understand why this is necessary, but that doesn’t make it any less hacky and messy.

Apple of 2019 is the Linux of 2000

After my blood pressure dropped to healthier levels I got the strangest feeling of déjà vu. This felt exactly like using Linux in the early 2000s. Things break at random for reasons you can’t understand and the only way to fix it is to find terminal commands from discussion forums, type them in and hope for the best. Then it hit me. This was not an isolated incidence. The parallels are everywhere. I certainly wouldn’t go that far, but there’s definitely a kernel of truth to the perception that macOS just doesn’t feel as polished and effortless as it once was, during the Leopard days.

macOS Catalina: the MacStories review

macOS Catalina has been reviewed, and taking over from John Siracusa’s legendary Mac OS X reviews at Ars Technica is MacStories. The Mac isn’t in crisis, but it isn’t healthy either. Waiting until the Mac is on life support isn’t viable. Instead, Apple has opted to reimagine the Mac in the context of today’s computing landscape before its survival is threatened. The solution is to tie macOS more closely to iOS and iPadOS, making it an integrated point on the continuum of Apple’s devices that respects the hardware differences of the platform but isn’t different simply for the sake of difference. Transitions are inherently messy, and so is Catalina in places. It’s a work in process that represents the first steps down a new path, not the destination itself. The destination isn’t clear yet, but Catalina’s purpose is: it’s a bridge, not an island. You know where to get Catalina, but it might be a good idea to wait a few point releases before diving in.

The alert hammer

Apple started adding user consent alerts way back in High Sierra. The first time an app would try to access your location, contacts, calendar, reminders or photos a system alert would prompt the user for consent. Mojave expanded these prompts to automation, camera and microphone. And now Catalina adds screen recording, keyboard input monitoring, access to folders such as Desktop, Documents and Downloads, user notifications and Safari downloads… These alerts are just another step on a long path Apple has been taking to protect user’s data. Previous steps include code signing, sandbox, gatekeeper, the “curated” Mac App Store and notarization. But security features are most useful when they’re invisible. All previous steps were mostly invisible. This last one… Not so much. There’s a lot of complaining going around in Apple circles regarding the latest Catalina betas and the excessive amount of permission alerts and associated user access problems. On his latest podcast, for instance, John Gruber detailed how it took him ages to figure out why the Terminal wouldn’t show him any directory listings, until he realised the Terminal needed disk access permission, but didn’t ask for it. This is, of course, all quite reminiscent of Windows Vista, and the goal here seems to be to turn macOS into iOS, with similarly harsh restrictions on what users can do on their computers.

Translating an ARM iOS app to Intel macOS using Bitcode

What is Bitcode? Well, bitcode with a small b is an architecture-specific intermediate representation used by LLVM, and capital-B Bitcode pertains to a set of features allowing you to embed this representation in your Mach-O binary and the mechanisms by which you can provide it to Apple in your App Store submissions. Of course, the specter of macOS on ARM has been in the public psyche for many years now, and many have pondered whether Bitcode will make this transition more straightforward. The commonly held belief is that Bitcode is not suited to massive architectural changes like moving between Intel and ARM. I was unconvinced, so I decided to test the theory! By Steven Troughton-Smith, so you know you’re going to learn more than you bargained for.

Here’s how to force your Mac to run only in 64-bit mode

Since macOS 10.15 will remove support for 32bit binaries, it might be time to start preparing for this as a user. Steven Troughton-Smith linked to this older article from last year: macOS High Sierra 10.13.4 gets us a step closer to ditching 32-bit mode for apps. In fact, you can force your Mac to run only in 64-bit mode if you aren’t afraid to pay a visit to the command line. This way, you can see if any applications you use are 32bit, and if you can live without them – if not, you can start looking for alternatives.

Apple releases iOS 12.2, macOS 10.14.4

Apple has released iOS 12.2 and macOS 10.14.4. Both are minor releases, but at least macOS 10.14.4 has some nifty changes for Safari: macOS Mojave 10.14.4 includes support for Safari AutoFill using Touch ID and it offers automatic dark mode themes in Safari. If you have Dark Mode enabled in Mojave, when you visit a website that has an option for a dark theme after installing the update, it will be activated automatically. Every one of you using iOS devices or PCs running macOS know exactly where to get the updates.

Bringing iOS apps to macOS using Marzipanify

At WWDC 2018 Apple gave us a ‘sneak peek’ at perhaps one of the most impactful developments on macOS since the transition to Mac OS X: UIKit apps running on the desktop. Today, I’m going to detail a special tool I built, called marzipanify, to get started with UIKit on the Mac early, and start the initial bringup of your iOS app on macOS. Amazing work by Steven Troughton-Smith.

Apple File System reference

Some more light reading, right in time for the weekend - the 147 pages long reference to APFS.

Apple File System is the default file format used on Apple platforms. Apple File System is the successor to HFS Plus, so some aspects of its design intentionally follow HFS Plus to enable data migration from HFS Plus to Apple File System. Other aspects of its design address limitations with HFS Plus and enable features such as cloning files, snapshots, encryption, and sharing free space between volumes. Most apps interact with the file system using high-level interfaces provided by Foundation, which means most developers don't need to read this document. This document is for developers of software that interacts with the file system directly, without using any frameworks or the operating system - for example, a disk recovery utility or an implementation of Apple File System on another platform. The on-disk data structures described in this document make up the file system; software that interacts with them defines corresponding in-memory data structures.

This document could prove quite useful to developers who might wish to add APFS compatibility to for instance Linux.

Mojave’s security protections face usability challenges

Back in 2016, security researcher and developer Jonathan Zdziarski released a tool called Little Flocker that could protect Macs at the file level. Much as a firewall analyzes and blocks network traffic, Little Flocker locked down the file system and allowed only authorized applications access to only approved files.

Little Flocker was too complex to manage for average users, but it quickly became a darling among Mac security experts.

When Zdziarski took a job at Apple in 2017, he sold Little Flocker to the security vendor F-Secure, which released it as Xfence. Zdziarski's job change started the clock ticking on when we might see similar capabilities built into macOS. With macOS 10.14 Mojave, Apple has added file-level protections, plus some additional security enhancements. And you know what? Mojave is running into the same usability issues that users of Little Flocker endured.

I had never heard of this functionality. It seems like one of those things particularly Apple ought to be good at to integrate in a user-friendly manner.

Aqua screenshot library

While sometimes it can be hard to see from single release to single release, Apple has steadily been refining the Aqua user interface since first introducing it.

Of course, there have been highs and lows. Pin stripes and Brushed Metal and Linen and Rich Corinthian Leather. Transparency and Vibrancy. At times, Apple had led the way into new design trends, and at other times, they have fallen behind the rest of the industry.

Over 1500 screenshots of every Mac OS X/macOS release. A fantastic archive to browse through while enjoying a nice cup of coffee or tea.

Why you should build a Hackintosh

Fast forward 5 years and Apple still doesn't have a solution that satisfies customers that have extensive need for customization and specialized workflows. During the time of trash can Mac Pro, I worked on a 5K iMac, because I really liked the hi-resolution display. But hiding away all those cables was a chore. After Apple showed us the future of professional hardware with the iMac Pro, I was fed up with the situation and I started to investigate the possibility of building my own Hackintosh. Putting all the hardware together was the easy part, making macOS work was tough, but I did it.

I honestly don't believe a 'Hackintosh' is a suitable machine for any mission-critical environment, but if you're willing to deal with the risks and minor headaches, it's a not-as-hard-as-you-think way to get your hands on a very powerful macOS machine for a very reasonable price - with a lot more options and choices than Apple will ever give you, even if you take the hypothetical, vapourware new Mac Pro into account.

What was it like to be a software engineer at NeXT?

Working at NeXT was the most exciting software engineering job I ever accepted.

NeXT was like graduate school, bringing together a high concentration of some of the brightest and most innovative technical minds. Many people had computer science (or other) research backgrounds. One thing that was unusual is that all the technical people there understood all aspects of the machine. Software people could talk about ASICs and CPU instructions, and the hardware people understood the software stack. Every aspect of what it takes to make a computer work was represented in one building: analog hardware, chip design, motherboard design, compiler design (Objective-C), loader, operating system, windowing system, application layer, and applications. Where other companies had engineering teams, NeXT would have a single individual. Many people had been managers or technical leads elsewhere and came to NeXT to be an individual contributor to help create the most innovative computer ever invented (enter reality distortion field).

Great read.