Profile avatar
douglashill.co
iOS team lead at Nutrient (previously known as PSPDFKit) and an organiser of NSLondon. I travel overland, work on iPad, and go wakeboarding, ice skating, and skiing. European. he/him
240 posts 1,379 followers 53 following
Prolific Poster
Conversation Starter

Gah just booked an unchangeable train ticket an hour too early because of time zones like an absolute novice. You wouldn’t guess I work with a team where everyone is in a different time zone. At least it’s the first train of the day so I just have to be up a bit earlier.

Since I might want real-time posting during Apple’s keynote tomorrow, I made my site build a bit quicker on GitHub Actions. My key finding is that calling swift has a high startup cost here. Even swift --version can take 9 seconds. I went with caching the compiled Swift build script.

Here’s a written version of my impromptu lightning talk at Swift Craft 2025 about the available options for codebases that work across Apple platforms.

Mac pro tip: Use option + shift + brightness up/down to change the brightness in smaller increments. The increments seem different on the 2024 MacBook Pro compared to the 2021 model, so indoors I often find 6 bars too dim but 7 bars too bright. 6.25 bars is about right.

It’s one decade since I started at Nutrient/PSPDFKit! We’ve grown, and a lot has changed, but not everything: same remote lifestyle, open communication, and drive to improve. After 45k messages and 2554 pull requests from me, we’re still happily using Slack, GitHub and Google Workspace.

Registration for our NSLondon WWDC25 keynote viewing party at Ford opens at 13:00 today. I expect it will fill up quickly. Note: With Meetup, there’s a two step process of first requesting to join the NSLondon group and then RSVPing (registering) for the particular event.

Before yesterday, the Apple developer website wasn’t using the word keynote in reference to the video at the start of WWDC week. The calendar event called it a kickoff. This has been updated so it’s now called a keynote like in previous years.

Heading off to the Swift Craft conference. Now I have 24 hours to work out my lightning talk about developing across Apple platforms.

My reading app will become unavailable on Apple’s app store in five days, because I’m letting my paid Apple Developer membership expire. As I understand things, if you “Get” the app now, you’ll still be able to download it after that point.

Here’s a quick roundup of upcoming iOS conferences in Europe. I’ll be at Swift Craft next month and hopefully at least one more in the autumn.

Thank you superstars at Apple for iOS 15.8.4. Great to see security fixes for products released nearly a decade ago. I’m still living the one-handed phone life with the 1st-gen iPhone SE.

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

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

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.

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.

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.

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

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.

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.

🏔️ Innsbruck 🚄 Vienna 🏙️ for a few days

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.

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

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.

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.

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.

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.

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.

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. 🇺🇦

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.

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.

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

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.

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.

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.

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.

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

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"

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?

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.