Douglas Hill’s posts in 2024

4 January 2024

I had a feeling App Store Connect submissions were sometimes really slow so I timed it, and yes: 1m 20s. Of course, there’s the intermediate screen I’ve never used that you need to click through.

If you’re really bored, here’s a recording:

»

I cleaned up my follow page. It’s now in line with my vision: I post on my own site, and my posts can be followed in various ways.

I’ve been making a lot of updates to the setup behind the scenes, and I want to write more about it at some point. »

5 January 2024

Doctor Who series 2 episodes 5 & 6 from 2006, feature an enormous, global technology company that produces tiny wireless headphones called EarPods and has their UK base of operations in — wait for it — Battersea Power Station! Parallel universe indeed. »

Current status: slugifying strings for URLs with Shortcuts. Possibly the most hilariously cumbersome programming tool I’ve used, but kind of satisfying chaining together four actions to do what would be one function call in Swift. »

7 January 2024

Ben Brooks on iPad:

Now my troubleshooting time is spent wondering why Apple cannot get rid of the floating text controls UI bar that is in the way 99% of the time, and useful about 3 times a year.

And these controls adjust insets so everything slides around when keyboard focus changes. »

8 January 2024

Haven’t seen any news yet on when App Store submissions will open for visionOS. Presumably the Xcode 15.2 RC is what we’re waiting for.

Update: Xcode 15.2 was available 30 mins later. »

Style guides are hard (source)

Screenshot of Apple webpage highlighting the text “Don’t break Apple Vision Pro over two lines.” and further down showing that same text split over two lines.

They’ve done this using CSS white-space: nowrap: Apple Vision Pro — but missed it in some places.

An alternative is to use non-breaking spaces (option + space): Apple Vision Pro — this will work if CSS is removed, such as in my reading app. »

I’m finding the year in review fanfare from so many apps excessive. Apple Books is keen to tell me I read three books in 2023. Maybe I would have read more if I could still use the iOS 15 version of Apple Books. »

10 January 2024

Now we’re under time pressure to set up a new (more expensive) Apple silicon Mac on CI. »

Some of my Christmas baking. Not-quite Linzer Augen:

Photo of a plate filled with sugar dusted double-layer cookies.

Panettone and biscotti:

Photo of crunchy little fruit and nut filled bread slices, and a tall round bread/cake dusted with icing sugar.

Cheese-stuffed bread balls with sweet peppers:

Photo of a large plate of bread balls topped with cheese and herbs, with will little peppers around the edge. »

11 January 2024

Pro tip: to follow Apple’s style guide about not splitting Apple Vision Pro onto multiple lines, create a text replacement that already includes non-breaking spaces.

Screenshot showing iPad text replacement settings with Phrase “Apple Vision Pro” and Shortcut “vp” »

Graphics contexts created by UIGraphicsImageRenderer are somehow invalid for reading the width and height. Read more »

12 January 2024

I’ve been at PSPDFKit long enough to have learned C++ and forgotten it again. »

14 January 2024

Is anyone else putting commas before argument labels in Package.swift, like this, for nicer diffs and so lines can be commented out easily? Read more »

16 January 2024

Spaces are filling up for our first NSLondon event of the year, which is at Trainline next Tuesday. »

18 January 2024

Speaking of Trainline, Google are scamming them here selling ads for their own service doing what I’m already doing. 🇮🇹

Screenshot showing looking at tickets from Bari Centrale to Rimini on the Trainline website, with an ad for Trainline with the text “Trains all over Europe? Totally.” »

Has anyone switched an app to year-based version numbers and regretted it? I’m thinking <year><dot><incrementing number>, which seems to be what Overcast and Castro use. Our PDF Viewer is currently on 6.5.7, which seems unwieldy, and we release often so it never has ‘major’ releases. »

We had a report of a fun bug today with a situation the PDF reference doesn’t specify how to handle. Read more »

20 January 2024

Today marks four years since I went on a plane. I wrote about my journey from flying around the world as a digital nomad to not flying at all. Read more »

22 January 2024

Submitted PDF Viewer for Apple Vision Pro for app review, complete with upscaled and cropped screenshots. Hopefully it works!

Screenshot of PDF Viewer app on Apple Vision Pro simulator with a document outline open over a double page spread showing snowy hills »

24 January 2024

Just in case anyone happens to have an Apple Vision Pro, you can now download PDF Viewer from TestFlight!

Screenshot of PDF Viewer app on Apple Vision Pro simulator with a document view settings open over a single sepia page of text »

28 January 2024

My first ski day of the season. Went on an avalanche safely course, which had a good mix of different aspects. There’s so much software to help, such as Avalanche.report, Fatmap, Skitourenguru and Outdooractive. »

30 January 2024

It’s great when you ask ChatGPT to write some code, then immediately ask it what problems there are with that code, and it correctly identifies that temporary files aren’t being cleaned up, loading large files all at once might use too much memory etc. »

1 February 2024

As a software engineering manager, when I see the word “continue” in a team member’s plan for today message (a sort of lightweight, async stand-up we do), it’s a hint that a fresh perspective might help move things forward, so I should look into the progress. »

2 February 2024

And… PDF Viewer for Apple Vision Pro is out. The highlights are in the announcement post.

Screenshot showing a thumbnail grid of pages in a magazine in an Apple Vision Pro window in a museum. »

8 February 2024

I’ve had a 5k LG UltraFine display since 2016, and today was the first time I noticed any image ghosting on it. Only noticeable on a ~27% grey background, which doesn’t normally occur because I use light mode. »

11 February 2024

Wish for iOS 18 lock screen on iPad: separate rows of text to show the date, charging status, and “Face is too far away”. This seems like something widgets/customisation should have solved, but no. »

18 February 2024

Snowy mountain photo with a ski run in the foreground, blue sky, and clouds between the peaks further away.

Sölden today. Decent snow at glacier level only. Overcrowded (not pictured).

I was amused by the announcement about the “zero zero seven elements” experience. »

19 February 2024

Recently with the iPad dock, if I flick an app icon up with the mouse (happens accidentally), the drag gets cancelled, then a wiggling duplicate app icon remains while the dock is visible (even when not in edit mode) until restarting the iPad.

»

21 February 2024

Not being forced to use Apple’s terrible user rating and review system seems like a really nice perk of alternative app marketplaces in the EU. »

Trying out a new Stage Manager setup on iPad for better focus.

Before: One stage to rule them all: Mail, OmniFocus, Bear and Safari with Slack as a pinned tab.

New: Inbox space with Mail and a Safari window just for Slack; execution space with OmniFocus, Bear and anything else in Safari. »

Hmm, this is messy with links opening in the inbox stage. I might need to make a Slack single-site browser app to prevent this. »

23 February 2024

Lesson learned: While it’s fine to revoke a certificate used for app distribution at any time (you just make a new certificate), the same is not true when using the certificate to sign XCFrameworks, where revocation leads to not being able to build with already released versions. »

27 February 2024

Has anyone used private App Store distribution? The documentation says:

Once your app is approved, the distribution method can't be changed.

It’s unclear if this means the Organization IDs can’t be changed, or just you can’t go between public and private. »

28 February 2024

Switched our PSPDFKit CI Macs (on MacStadium) from Intel to Apple silicon. In our initial tests, the performance gains weren’t worth the cost, but something was wrong and the compiler was running with Rosetta. With that fixed, we have similar capacity and cost but with fewer machines. »

6 March 2024

Mac Catalyst isn’t perfect, but I’d take it over typing suggestions erasing what was typed in a completely default UITextView in an iOS app running on an Apple silicon Mac.

»

29 March 2024

One of my two Apple Magic Mice started only tracking well on harder/shinier surfaces. Cleaning the sensor didn’t help.

The iFixit forums suggest “a nice 4 foot drop onto concrete”. I tried 1 m drops onto a rug, and bizarrely after about five drops that completely fixed the problem. »

The EU Digital Services Act trader contact info really does only seem necessary “next time you submit a new app”. We released an app update without providing this info. »

1 April 2024

After my Mac rebooted, I noticed the Apple Vision Pro simulator starting invisibly without the Simulator app being open. I heard the Vision startup sound and saw backboardd using a lot of CPU cycles. »

7 April 2024

Great to be back in England going into spring for the start of the summer wakeboard season, early pink rhubarb, cooking with wild plants, and bluebells in the woods soon. »

9 April 2024

We’re looking for an experienced developer to join my team making PSPDFKit and PDF Viewer. We make a document SDK for iOS, macOS and visionOS. Expect challenging API design tasks and deep debugging sessions in a small, collaborative, remote team. Full details »

10 April 2024

I’m looking forward to the mammoth NSLondon event we’re having at Monzo this evening. The organising team is doing a fantastic job running excellent events regularly. »

11 April 2024

Apparently PDF Viewer made us a nice round TEN MILLION DOLLARS overnight. 🤨

Screenshot from App Store Connect website showing $10.0M proceeds, up more than 999%, last 24 Hours, Apr 10 - 11, 2024 »

To be clear, this is a funny App Store Connect bug. See also James Thomson and Simon B. Støvring. »

16 April 2024

Seeing a lot of candidates for our open job mentioning remote work as a key reason for applying, to get away from mandatory days in an office. It’s good for us, but I’m surprised so many companies went back. »

17 April 2024

We’re trying a new API to customise PSPDFKit toolbar buttons using SwiftUI’s standard .toolbar modifier. This needs an @EnvironmentObject so we can sync state, but we’re unsure how to name this API. So far using the magic word ‘context’. Read more »

20 April 2024

Nice, it looks like the issue where Shortcuts’ Rich Text from Markdown action garbled non-ASCII characters has been resolved. (I guess by specifying the encoding of the intermediate HTML file or something.) »

Bought my ticket for iOSDevUK in September! I’m staying both extra nights to make the most of being in such a beautiful part of the UK. Hopefully hiking before or after the conference. »

24 April 2024

The Apple Books audiobooks store should have a science section. Hard to browse when so much goes into the ‘Non-Fiction’ category alongside many personal development and sports people books. »

On our company blog, Nishant has shared how we filled in our privacy manifests by auditing use of required reason APIs. »

27 April 2024

Trying to write self-documenting ‘code’ in Shortcuts by using clear variable names. This is just to disable a thing, which I think is very common in programming, but it’s so cumbersome. Hoping we get a Swift environment for Shortcuts at some point.

Screenshot of iPad Shortcuts app with the following steps: Comment: “While ‘Delete folder if empty’ does in fact delete the folder, the ‘Run Shortcut’ action then fails with ‘Couldn’t communicate with a helper application’, which prevents *this* shortcut from running further. Therefore disable this cleanup. (It’s also annoying having to confirm the deletion every time.)”; Text: “false”; Set variable “Enable Empty Folder Cleanup” to “Text”; If “Enable Empty Folder Cleanup” “is” “true”; Get file from “Content” at path “Path/”; If “File” “has any value”; Run “Delete folder if empty”; End If; End If »

6 May 2024

It’s iPad hype day, so after many thousands of hours using the 2018 iPad Pro as my main computer, I wanted to consider what hardware a new iPad should have to last as my main computer from now until 2030. Read more »

14 May 2024

Why iPadOS Still Doesn’t Get the Basics Right. Agree with this. The flip side to my post about iPad hardware. The floating keyboard “thingy” is mentioned as an aside, but it's very important because the animated change in safe area makes changing keyboard focus slow when it should be fast. »

Maybe a bug, but I’m no longer able to browse purchased movies in one list in the TV app. Have to browse by genre, which is a game of hide-and-seek given how fuzzy the boundaries are. Worst genre is ‘foreign’, which is a concept I reject and associate with xenophobia.

Screenshot of iPad TV app showing genres: Action & Adventure, Comedy, Drama, Foreign, Horror, Independent, Kids & Family, Romance, Sci-Fi & Fantasy, Thriller »

17 May 2024

After switching our PSPDFKit documentation to DocC we now found the repository can’t be checked out on Windows because DocC puts colons in paths. I just found there’s an open pull request for this. »

18 May 2024

Nikita Prokopov on the design of allekinos.de:

But how do I search?

Well, Ctrl+F, of course. We are too humble, too lazy, and too smart to try to compete with in-browser implementation.

One of the great advantages web apps have over native apps. »

19 May 2024

Safari should have auto-fill for dietary or access requirements. »

Initial thoughts on the new 13-inch iPad Pro after trying it in the Piazza Liberty Apple store in Milan. Read more »

22 May 2024

Travel from London to Athens without flying ☑️ »

29 May 2024

Excellent new post from Stefan covering combining symbols graphs from multiple targets and other DocC tricks we use to build our PSPDFKit API documentation. »

Working on my iPad Pro outside a cafe in Athens this afternoon. Guy walks by and asks if he could switch from his MacBook to an iPad with a keyboard. Yeah, that’s not something that can be answered in a sentence or two. »

Most annoying iPad issue I have right now is a regression from the last couple of months where apps get in a state where some keyboard input doesn’t work. To fix it, you have to tap the fn/globe key. Happens multiple times per day. I guess modifier key state is somehow messed up when switching apps. »

2 June 2024

From my seat on the Eurostar train from Paris to London, I can see six people. All of them have AirPods Pro in their ears. I’ll take that number to 7/7 shortly. This is a hit product. »

3 June 2024

Dec 2022: We receive reports of a crash due to invalid calculations for some views. Nobody can reproduce it. We work around it by returning nil.

Recently: We receive a report of a missing view with clear steps to reproduce. You guessed it: We’re hitting the case that previously crashed. »

9 June 2024

A few photos and notes from my three-week trip from London to Athens by train and ferry. Read more »

10 June 2024

Apple Vision Pro train support, yay. I guess it’s launching outside of the US then. 🚄 »

Sounds like we finally have limited Contacts access. Hopefully means I can create WhatsApp groups without exposing everyone’s personal information. »

Hiking (trail running) in Maps is the highlight on iOS for me. (Hopefully it’s on iPad too.) »

Maths Notes is very very very cool. Makes me wish I was still an engineering student. »

Can you use an Apple Vision Pro to control a Mac to control an iPhone? »

If you want to make use of WWDC labs on Tuesday, remember you need to apply for them today (which is kind of late in Europe). »

11 June 2024

Requested a couple of labs for tomorrow without much research. I watched the SotU but not sure I learned much. Maybe because I should be asleep. »

With automatic trait tracking, UIKit detects when you read traits (like the size class) in layoutSubviews (etc.) and automatically calls setNeedsLayout (etc.) when those traits change. 🤯 »

13 June 2024

Apple’s Developer app on iPad has become a little too complicated. It would be good to see the WWDC app come back with just labs and a list of this year’s sessions. »

Found myself click click clicking through stack frames in Xcode 16 then remembered: there‘s now a button for this! This ‘Backtrace in Editor’ feature is amazing. So much faster to see what’s going on. »

21 June 2024

Just found out from Dave Verwer that Apple is running WWDC recaps at their London HQ this Monday morning and afternoon. Sign up closes at 11:45 today. I requested the afternoon one. »

27 June 2024

Zoom transitions are my favourite addition in the iOS 18 SDK. I tried out almost everything you can do with this new API and wrote a detailed, illustrated guide. Read more »

2 July 2024

Release notes for today’s OmniFocus 3 update:

OmniFocus 3.15.7

OS Compatibility — OmniFocus now presents an informative one-time alert when launched on an unsupported OS.

Uh oh. Sounds like I might need to find an alternative before iOS 18 is out. (Pretty sure it won’t be OmniFocus 4.) »

3 July 2024

Realised I can use the Texts Mac app to create new WhatsApp groups without giving Facebook/Meta access to my contacts’ details (which I don’t have their permission to do). Awkward that this needs a Mac, but still a great improvement. »

8 July 2024

Desktop-class Safari on iPad was a feature of iOS 13, and it works well at least 95% of the time, but I hope iOS 19 brings Desktop-Identical Safari. I don’t care if this is a special mode where touch input is disabled. The main issue is that mouse hover works in some places but not others. »

9 July 2024

Over on our company blog, we just posted my exploration into how a modern Swift programming mindset clashes with Objective-C’s NSCopying protocol. Read more »

11 July 2024

I don’t understand why indoor ice rinks in Berlin and Innsbruck (the only places I looked outside the UK) mostly (all?) have a season. I.e. they only open in winter. In the UK, ice rinks open all year. Isn't the point of indoor facilities that they’re not impacted by the seasons? »

We have an NSLondon social this evening at the Elephant and Castle pub. Find details and sign up on Meetup, although it’s a pub so anyone is welcome to turn up. »

12 July 2024

Excited to be on the train from London to Scotland (Fife) for the weekend. It’s way too long since I last went to Scotland. »

16 July 2024

Scotland was beautiful but cold (14ºC in the day). We went swimming, but also booked a sauna on the beach so it sort of balanced out.

Photo of sandy beach with people in the sea

Photo of grass in foreground and rocky beach beyond »

On the train from London to Berlin. Going to be there cat sitting for a few weeks. »

There’s an issue where Xcode 15.4 fails to build Mac Catalyst apps with certain package dependencies with:

clang:1:1 invalid version number in '-target x86_64-apple-ios10.15-macabi'

Or:

clang:1:1: invalid version number in '-target arm64-apple-ios10.15-macabi'

Workaround: use Xcode 15.3. »

19 July 2024

Stefan wrote about a crash at launch we saw when using Xcode 16 that was related to the mysterious libRPAC. We debugged this during a very productive WWDC lab last month, where we learned some useful DYLD environment variables. »

24 July 2024

Easiest regression test I’ve ever written for a real-world bug:

func testDefaultConfigurationsAreEqual() {
    XCTAssertEqual(PDFConfiguration(), PDFConfiguration())
}

»

Although the fix (or workaround) this test was for is an odd one. Had to make some blocks not capture variables so they’d be created as global blocks. We really should get away from relying on block equality. »

26 July 2024

We‘d been hoping to use iOS 18’s new FileEntity to add Shortcuts actions (App Intents) in PDF Viewer, but any actions using such an entity don’t show up in the Shortcuts app. appintentsmetadataprocessor runs successfully. Same in a sample project. Seems to be a non-starter for now. »

Update on FileEntity: Running on a nearly fresh iPhone simulator, the actions started showing up in Shortcuts magically. However the files infrastructure seems very rough in the iOS 18 beta simulators so I haven’t been able to load any files in to test. »