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 Apple’s 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 Apple’s 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 »

13 March 2025

Cool, I managed to make Nintendo Music play from two points in the track concurrently, with the audio streams overlaid for extra energy. iOS devs, this might be my one chance to say this: They should have used a singleton! (I removed the audio in the recording because only one of the streams was picked up.)

Federico Viticci writes about how desktop-class experiences are found in web apps rather than native iPad apps. I’ve had a similar experience: I spend much of my work time in Slack, GitHub, Jira, Notion, and Google Docs. These all have iPad apps, but I use the websites on my iPad instead. »

Most of my career making software with Apple’s SDKs has prioritised iPad over iPhone, which was always a bit of a niche. It doesn’t bring me any joy to say this since I love the polish and consistency native apps can theoretically provide, but I increasingly feel like the web is the way forward. »

17 March 2025

Given that multiple stores for apps exist and Apple chose to name theirs in a generic way, I’ve changed all posts on my website saying “the App Store” to “Apple‘s app store”. (While doing this, the earliest post I found regarding the lack of competition in this space is from 15 years ago.) »

18 March 2025

After reviewing five job applications in a row with the phrase “perfectly aligns”, I updated my Life on the iOS team at Nutrient post to use plainer language to set the tone better. We don’t need to achieve, align on, thrive on, and foster when we can have, talk about, enjoy, and provide. »

25 March 2025

The Xcode 16.3 release notes list some interestingly named C++26 features, including Poison Pills are Too Toxic, The Mothership has Landed, and Symmetry for spaceship. »

30 March 2025

With European summer times starting this weekend, I’m tactically moving from France to England today to (except for a few hours) go straight from Central European (Winter) Time to British Summer Time, which are both UTC+1. Take that silly clock changes. »

1 April 2025

Reminder that calendrical calculations are hard, so you should always use Foundation’s Calendar and DateComponents APIs.

Screenshot of asking Siri “Hey Siri how many days is it from the 12th of January 2025 to the 28th of January 2025” with reply “2025 to the power of 28 is approximately equal to 3.8 times 10 to the power of 92” »

16 April 2025

Looks like Xcode 16.3 has introduced new (incorrect) upload warnings:

Your app, or a library that’s included in your app, uses Apple Push Notification service (APNs) registration APIs, but the APS Environment Entitlement isn’t included in the app signature’s entitlements. »

Follow/subscribe for updates