WWDC 2023 Hopes

Another year, another WWDC anticipatory waiting time. Uncharacteristically, Apple has somewhat telegraphed what to expect from the big event this year: The Augmented Reality Headset. As Project Titan continues to not come to fruition, Apple’s next big thing is xrOS (leaked way back in 2019 as StarBoard) and xrOS runs on a headset similar to the Oculus Rift and Valve Index. What we expect to see is how it is controlled (gestures and/or Siri)....

Repurposing a Trashcan

While the 2013 Mac Pro might not be the beast that it was back in the day, it can still accomplish quite a bit. Unfortunately, it no longer supports the latest version of macOS (Ventura at the time of writing) and Monterey is quite buggy. To rejuvenate this machine, you can install Windows, Linux, or ChromeOS Flex. Out of the gate, Windows isn’t going to last long as Windows 10 will reach End of Life in October of 2025....

Apple's Quest to Discontinue Enterprise Accounts

At $company, it was time for our yearly renewal of the Apple Developer Enterprise Program. Instead of just handing them money, this year we were forced to get approval to allow us to renew our membership. This process included filling out forms with lots of questions about the number of developers we have, the security around our internal applications, the number of devices we have, and the kind of apps we produce in-house....

Legacy amd64 Development On Apple Silicon

With macOS Ventura, Apple added support for amd64 instruction translation to Linux VMs in Rosetta 2. This means that in addition to Virtio file sharing (macOS Monterey), applications using the Virtualization framework can perform significantly better. Now, this allows you to be able to develop legacy software in an emulated Linux virtual machine (in this context, legacy refers to non-AArch64 compliant software). Now, to be clear, emulated amd64 is still very slow compared to native instructions, but, it is better than nothing....

Handling App Extension Code

Over the past couple of years, Apple has been slowly increasing the number and kinds of App Extensions one can associate with their applications. As such, reusing code between a main application and an extension is somewhat desireable. At the most basic level, adding a logic branch to a path is crude, but effective: if ([NSBundle.mainBundle.bundlePath hasSuffix:@".appex"]) { // Do app extension stuff } else { // Do main app stuff } Unfortunately, this does not handle the case where the main application branch references APIs that are unavailable in app extensions....