Douglas Hill’s posts in 2025

↑ 2024

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. »

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.) »

20 January 2025

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. »

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. »

22 January 2025

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? »

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. »

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. »

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. »

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). »

31 January 2025

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. »

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. »

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. »

12 February 2025

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. »

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. »

Did anyone manage to join the App Store Small Business Program? I’ve requested this twice for our company account and never heard anything back. »

14 February 2025

Received an email from Apple about new South Korean rules on subscription trials — which came into effect already — saying “additional consent must be obtained” and “The App Store will help to get consent”. Unclear what we need to do, if anything. Maybe safer to remove the app from sale in Korea? »

16 February 2025

Automatic translation is hard. On a translated webpage that was supposed to show an IBAN for bank transfers, Safari ‘translates’ IBAN (which is already English) and removes part of the code.

Original:

IBAN: AT33 XXXX XXXX XXXX XXXX

Translation:

Account number: XXXX XXXX XXXX XXXX »

18 February 2025

Really cool to see our larger NSLondon organising team allowing us to try different kinds of events for the iOS developer community. This Sunday we’re doing a walk between the Battersea and Regent Steet Apple stores, passing Buckingham Palace. (Too bad I can’t join because I’m in the Alps. 😄) »

20 February 2025

Working on the iOS team at Nutrient is different from many other iOS development roles. I wrote a post about life on the iOS team at Nutrient with insights into how we work, the challenges we face, and what’s important to us. »

And yes, we’re hiring for a position on my team. Looking for a person passionate about building developer tooling who lives and breathes iOS development. The role is 100% remote, and we work async-first, so it’s very flexible. »

21 February 2025

Wondering how exactly I’m determined as being “in the United Kingdom” regarding Advanced Data Protection. Presumably the store region and registered payment card. Thinking it might be time to start a big (painful) migration to a new European Apple Account. »

25 February 2025

I’m late posting this, but Swift Connection has published the recording of my talk on zoom transitions in Paris last September. I also put up a page linking to the relevant resources. »

28 February 2025

My weird way to speed up six App Store Connect submissions (iOS/Mac/Vision × App Store/TestFlight) is to open two browser windows so I can click buttons in one while the other is waiting on the server. (It would probably be sensible to automate this.) »

Reminds me of growing up playing two Pokémon games at once so I could choose moves in one while the attack animations happened in the other. Those Pokémon weren’t going to train themselves. »

Screenshot of end of Mac menu bar. Popup from camera icon says “Turn On Reactions: Zoom has turned off Reaction effects. Click camera icon and select Reactions to add more impact to your gestures.”

At first, I thought it was a Zoom programming error that this popup appears every time I start a video call on my Mac, but it looks like this is a system feature that boring Zoom users like me should be constantly nagged about. Clicking the × doesn’t do anything. »

1 March 2025

It’s very easy if you‘d like to join me making a donation to the Ukrainian government. (Or call it an investment in security and democracy if you prefer.) Weird making donations to a government, but here we are. 🇺🇦 »

2 March 2025

Is there a trick to getting iPad app screenshots to not show rotated on Apple’s anticompetitive store? Looks fine on App Store Connect. I guess maybe because one screenshot is portrait it breaks the others, but the only way to know is to release a new app version and see.

Screenshot of Apple’s anticompetitive store showing four app screenshots all in a portrait size even though three of the screnshots were taken in landscape, so they’re sideways.

Screenshot of App Store Connect showing these same four screenshots but all the correct way up. »

4 March 2025

Notion added a feature to their website on iPad where placing the mouse pointer near the top or bottom of the page scrolls up or down. Great if you struggle with scrolling on other websites. It’s a nice companion to their formatting bar that covers up the text you’re trying to edit. »

5 March 2025

Update on Apple’s “Turn On Reactions” nag: Turning off Notifications for FaceTime then restarting my Mac made these popups stop when using Zoom. This makes little sense given these aren’t notifications, and I’ve never used FaceTime on a Mac. Found in this Reddit thread thanks to Caesar Wirth. »

6 March 2025

Apple’s aggressive text autocompletion cleared a new bar. After spending most of this week doing interviews for our open job (which is great but it’s a lot!) I was texting friends about weekend plans and when I typed “in” it was replaced by “interviews”. Not cool. »

With this example, it’s hard to believe the iOS/macOS text autocompletion uses a transformer language model or whatever given that if you take a correct English sentence containing “in” and replace “in” with “interviews” you most likely don’t end up with a correct sentence. »

I’m (partially) sorry about the negative tone of my posts recently. Text autocompletion with advanced models is relatively new, and will improve with iteration. I wish I was as confident about improvements to encryption laws and software distribution on iOS (and global cooperation/peace etc). »

7 March 2025

Our newest release, Nutrient iOS SDK 14.6, adds AI Assistant. Another thing I like in this update is that we’re following my recent advice to prefer mailto links to MFMailComposeViewController (by default — it’s an SDK so of course we made this configurable). Also our changelog has an RSS feed. »

12 March 2025

🏔️ Innsbruck 🚄 Vienna 🏙️ for a few days »

Follow/subscribe for updates