Douglas Hill’s recent posts

Follow/subscribe for updates

12 February 2025

Wondering if it would be a good idea to replace my M1 Pro 14-inch MacBook Pro with a 13-inch MacBook Air (if it’s updated to M4 or M5 sometime soon). On the one hand, the 14-inch Pro is a bulky accessory to my iPad just to run macOS. On the other hand, we have a lot of code to compile. »

Added LinkedIn as an experimental additional way to follow my posts. I’ve heard that while the social media landscape has been tumultuous, LinkedIn has been a rock. Everything will be cross-posted from my website, same as how Bluesky etc. are set up. No filtering for only ‘professional’ posts. »

3 February 2025

The update to Swift Playground last week added the iOS 18 and macOS 15 SDKs. It’s 4.5 months after these SDKs shipped in stable Xcode and nearly 8 months after the first Xcode 16 beta. Given this app is the only option for making iOS apps on iPad, Xcode for iPad can’t come soon enough. »

31 January 2025

In 2024, I read about as many books as I read in the three preceding years combined. I wrote a post reflecting on trends in my reading habits and sharing some of my favourite books from last year. »

Today is the first time I’ve noticed Apple Mail display a Verified Logo for a sender. Ironically, this is on an obvious PayPal spam email. »

30 January 2025

Apple’s text autocompletion has gone too far. It can take the valid word I want and replace it with a longer word with the same prefix. For example, I want to type “when” but it’s replaced by “whenever”. “Git” may be changed to “GitHub” and “app” to “Apple” (with a capital A, naturally). »

28 January 2025

I wrote a post comparing ShareLink, mailto links, and MFMailComposeViewController so you can choose best way to send emails in an iOS app. »

27 January 2025

Interesting finding: UIPointerInteraction updates continuously while scrolling on Mac, but not on iPad (only when the pointer moves on screen). The Mac behaviour is more correct because the content under the pointer might change when scrolling, but this makes the performance way less forgiving. »

22 January 2025

Is there a best practice for implementing description and debugDescription for main actor classes with Swift strict concurrency? I’m going with checking the thread for now, which works, but seems off. »

I requested to change our company name displayed on the App Store from PSPDFKit GmbH to Nutrient three months ago and never heard back. Just tried again. Did anyone manage this before? »

20 January 2025

Today it’s five years since I last went on a plane. I continue to have no plans to fly anywhere, while still enjoying slower travel on the ground. Here’s a brief review of my travel last year and in the coming year. »

The M4 iPad Pro introduced haptic feedback on iPad via the Pencil and trackpad. I wrote about how we went against Apple‘s recommendations to get haptics working across both iPad and iPhone. Sometimes, “trust the system” isn’t enough. »

19 January 2025

Booked my ticket for Swift Craft in May. Most European iOS conferences are around Sept/Oct, so it’s nice having this one earlier in the year. (I’d nostalgically call this the UIKonf slot — just before WWDC.) »

7 January 2025

Today’s weird low-level issue: Calls to os_log_with_type will log <decode: bad range for [%{public}@] got [offs:318 len:1238 within:0]> if the message has a length from 966 to 1989. The workaround is to split the message in two. »

30 December 2024

Supporting Mac Catalyst also includes apps compiled for iOS running on Apple silicon Macs. I think mailto links should be the default choice. Best tradeoff of being simple to implement and working in the most places. »

iOS app sending emails cheatsheet:

Update: I wrote about this in more depth on our company blog. »

19 December 2024

Acorn is a pretty great Mac app. If I had a time machine, I’d go back and buy version 1 to complete my collection of licence keys.

Screenshot showing a list of Acorn versions from 2 to 8 »

18 December 2024

One of our customers is hitting this SwiftUI issue that impacts our SDK: FB16117850 — View lifecycle event methods not being called when using a UIViewControllerRepresentable in a TabView with tabViewStyle(.page) »

For example, it looks like the new ImagePlayground framework was started in September 2023 and was originally called GenerativePlayground. »

In the iOS 18.2 SDK, there are 41 header files that escaped Apple’s standard legal preamble and instead show the Xcode default template with the original filename, module name, author and creation date.

Screenshot of Xcode find navigator. Find › Text › Containing “//  Created by” In iOS SDK. 41 results in 41 files. MXCrashDiagnosticObjectiveCExceptionReason.h iOS 18.2. »

More in the archive