Douglas Hill’s posts in 2023
11 January 2023
Just testing my micro blog. Here’s some recent baking.
12 January 2023
18 January 2023
Recently I was working with NSPredicate
, and a situation that looked fairly basic wasn’t working as I expected. I wrote about a new surprise with this old API. »
19 January 2023
⚡️🚙 London ➡️ Innsbruck, over two days. It’s time for mountains and skiing. »
21 January 2023
I just found iOS 16 added viewing/copying the password of a known Wi-Fi network. Go to Settings > Wi-Fi > tap the (i) by the network > Password > auth with Face/Touch ID.
I used to use Keychain Access on my Mac to copy a password to Nintendo Switch. Much nicer from iOS. »
App Store ads are still keeping it classy. (To be fair, “meetup” could be interpreted this way, but the difference in tone is jarring between the ad and Meetup, the event management platform I’m looking for.)
22 January 2023
Mixed conditions in the Zillertal to start my ski season. I understand it’s been dry until recently so this a huge improvement.
There’s something up with the language model in iOS dictation that resulted in it transcribing “strawberry moose” instead of “strawberry mousse”. I guess homophone resolution is still tricky. 🍓🦌 »
23 January 2023
We have a PDF Viewer app user who updates their 1 star review after most updates to express disappointment we don’t translate our release notes into German. It’s amazing having such dedicated users. »
26 January 2023
I didn’t notice this Reload Organizer command before. You can use to force Xcode to fetch new crash reports etc. from App Store Connect.
27 January 2023
Realised a couple of recent articles showed up on Micro.blog and Twitter but not in feeds. For the record:
28 January 2023
A bit icy but otherwise great conditions in Ischgl/Samnaun today. AKA Expensive Swiss Lunch Day.
29 January 2023
Ostensibly proving I’m not a robot, but actually practising my French vocab.
30 January 2023
An update to my reading app is out that adds Shortcuts actions to automate and integrate with other apps. You can filter/sort based on many properties, including word count. There are also new lists for “Short Articles” and “Long Articles”.
1 February 2023
I’m intrigued how Pages on iOS displays localised font styles. I guess it might have an adjective parser (e.g. to know that “Ultra Light Italic” is two terms) and a long list of translations for common adjectives (regular, book, roman, italic, oblique, etc).
5 February 2023
Switching my Safari search engine from Ecosia back to DuckDuckGo. Number and size of ads with Ecosia reached the point where I often don’t see any results without scrolling. »
9 February 2023
Naming an ActivityPub server (mostly Mastodon) with “social” in the domain name is missing a trick by not going for “pub” instead:
- Pub for ActivityPub
- Pub is a place to socialise 🍻 »
10 February 2023
Rotating an iPad home screen without widgets is the worst of both worlds: icon spacing is uneven AND the number of icons per row changes. Adding a widget magically fixes the first problem, and by strategically positioning widgets, you can fix the second problem too.
In around 48 hours, I’ll change my ActivityPub (Mastodon) address from @_@blog.douglashill.co to @douglas@pub.douglashill.co. Unfortunately the transfer won’t be automatic so if you’re following already you’ll need to follow again. »
We have a review of PDF Viewer for Android comparing the precise temperature their phone gets when running our app vs. a competing app. I appreciate learning new ways to see the world. »
11 February 2023
Spent a bit of time updating my reading app’s lists to use more standard UI. Cut the code down by 300 lines. Had in mind to rewrite lists in SwiftUI to dramatically trim the code so I could focus more on the core reading experience, but so many details weren’t right in my POC.
I’ll switch my ActivityPub (Mastodon) address from @_@blog.douglashill.co to @douglas@pub.douglashill.co in ~8 hours. Not changing host; just a better name. The new name won’t work until I switch, and then the old name will disappear. Couldn’t think of a better way. »
12 February 2023
Switch over to ActivityPub/Mastodon name @douglas@pub.douglashill.co is complete. I want to write more about the new setup soon, but now it’s time to hit the slopes. ⛷ »
13 February 2023
Fantastical subscription just renewed after a 54% price increase. It’s a terrific app (one of the best) but to be honest I wouldn’t mind splitting this with someone. 😅
15 February 2023
An annoying little thing since Xcode 14 is sometimes the editor loses keyboard focus when jumping between files. The insertion point can end up in the find navigator search field. I’m getting good at instinctively pressing cmd-J to re-focus the editor. »
16 February 2023
I set up a basic help page for my reading app, linked from the top-level nav in the app. It’s odd having an app that displays webpages and then jumping to the browser, but I want to be able to update this easily. »
22 February 2023
Amazing to see the team effort that went into adding editing PDF text to our SDK. Uses UITextInput
+ UITextInteraction
for native inline editing while using our own renderer. PSPDFKit 12.1 for iOS Adds Content Editor
»
26 February 2023
Today marks four years since my last flight within Europe. I have no intention to change this. Coincidently that flight was Vienna to London, which I would have thought was too far to do in one day on trains, but nope: I can confirm it’s possible. »
28 February 2023
On iOS 16 UIColorPickerViewController
can leave its dropper on screen, blocking touches across the system until you force restart by holding two buttons. We’re considering reverting to our custom colour picker. FB12017635
»
Skiing last Sunday in Kitzbühel. Discovered the delightful run 55.
2 March 2023
I would have let my Tweetbot subscription renew in early February. I guess it was removed from sale, but weirdly Apple shows the wrong error: payment method declined. The payment method is fine (other stuff has gone through since).
14 March 2023
We track downloads with Progress
(NSProgress
) and add that as a child of the Progress
shown in the UI. Trouble is, Progress
can only be added a child once, but the user can pop and push UI many times while downloading. Wondering if this is just not appropriate use of addChild
.
»
The use of the terms parent and child for hierarchies isn’t that good a metaphor given the principle (for hierarchies) that parents always outlive their children. »
23 March 2023
Innsbruck 🚆 Vienna »
28 March 2023
Managed to leave Handoff turned on for 1 hour before the constant shifting of the Mac dock was too much. It’s strange that Universal Clipboard requires Handoff, and Universal Control says it requires Handoff but actually sometimes works when Handoff is off. »
29 March 2023
Quick Look has been broken on my Mac for a while, but today I realised it works fine from Alfred, and was actually a Finder-specific problem. Amazingly, quitting and relaunching Finder fixed it. It’s like updating to Mac OS X 10.5 Leopard all over again! Such a great feature. »
14 April 2023
Is it just us, or were app status change email notifications not sent by App Store Connect in the last couple of days? Notifications are enabled. Nothing in spam. »
18 April 2023
Busy week for iOS in London with NSCoder Night tonight and NSLondon tomorrow. »
23 April 2023
I didn’t receive the UK government test emergency alert because at home my iPhone is always in airplane mode, but I suppose a life-threatening event the government could warn me about is more likely to happen outside of home. »
24 April 2023
I just found out you can press Q while using the iPad cmd-tab app switch to remove an app from the switcher, but it doesn’t terminate the app. Could be useful to clean up before a demo, but otherwise I’m not sure why you’d do this. »
5 May 2023
We’re hiring for an experienced iOS engineer on my team at PSPDFKit. Our iOS team is 5 engineers making an SDK, so expect varied tasks including public API design that will affect hundreds of apps. Fully remote. ➡️ More info and how to apply »
7 May 2023
How best to handle “pencilling in” on a calendar? I end the event name with ? if the date is uncertain and/or wrap the name with () if my attendance is uncertain. »
8 May 2023
What’s the best resource these days for checking iOS version usage stats? Apple’s numbers aren’t updated often and don’t say the percentage on iOS 14, which would be the most useful value for deciding when to drop iOS 14. »
If we were only making an app, we could use the metrics on iOS version usage from our app on App Store Connect, but we make an SDK and don’t collect device analytics from our SDK customers. »
9 May 2023
Wonder if the Unsubscribe link in TestFlight email notifications will ever, you know, just unsubscribe them, rather than sending an email to the developer asking us to remove them, which requires at least App Manager role. (Users can already self-unsubscribe in the TF app.) »
Following up on my post yesterday about iOS version usage stats, here’s data aggregated from three of Mixpanel’s graphs:
- iOS 16: 84.52%
- iOS 15: 11.87%
- iOS 14: 2.49%
- iOS 13: 0.22%
- iOS 12: 0.88%
- iOS 11: 0.00% »
13 May 2023
If Apple allowed iOS apps to use payment methods other than App Store IAP, the UX could be improved by using Apple Pay to prevent sometimes needing to approve payments in your bank app (with 3-D Secure). »
15 May 2023
I’m looking for ways to remove inactive TestFlight testers because we’ve hit our 10000 people limit for PDF Viewer. Can’t see install info exposed by the App Store Connect API. There’s this fastlane plugin, but it’s giving me ASC API errors. »
Mac Dictionary app is having trouble parsing the Wikipedia page on strikethrough, resulting in most of the article being crossed out.
16 May 2023
Fantastic to see the Text Size setting on Mac. Hope at WWDC we see this extended automatically to Catalyst and iOS apps on Mac (this feature has been on iOS for 9 years). SwiftUI/AppKit API support would be extra cool. »
17 May 2023
With Apple’s updates ahead, I wrote how we keep our code compiling with both old and new Xcode June–October. Especially important for Mac Catalyst apps where the SDK is likely to be reverted in September. »
18 May 2023
Stage Manager on the Mac never sounded interesting to me so I never tried it. Then yesterday I stumbled across this setting, and thought I’d take a look. I think I really like it! It makes the Mac more iPad-like and fits how my brain works. »
24 May 2023
Really excited to have two NSLondon events during WWDC week:
25 May 2023
Registration is now open for our server-side Swift NSLondon event at AWS during WWDC week. »
1 June 2023
Around we go again. Today is my 8th PSPDFBirthday. 🎂 »
My top wish for WWDC: Spotlight on iPad to be as fast as it was on iOS 14. (Ideally as fast as Alfred was a decade ago on slower hardware.) »
The readability problems with forms in Ventura are also a problem at narrower widths with iOS menus aligning the images away from the text. Less severe, but still harder to scan. »
3 June 2023
We have a few spaces left at our NSLondon WWDC keynote viewing party at Deloitte Digital in London. This Monday from 17:30. »
Looking back at old photo albums, for some reason I have one called “WWDC highlights” containing only these three photos, one each from 2019, 2018 and 2017. Because of course the vegetarian boxed lunches were… the highlight of the week?
5 June 2023
New text selection magnifying glass is bold.
6 June 2023
If the new product line is called Vision, will AirPods be renamed to Hearing? »
8 June 2023
I noticed this WWDC session (and probably others) never says “Vision”. Always “this platform”. Secrecy at work! »
9 June 2023
Not fully understanding the new beta installation flow. I’m signed into my personal account (not my developer account) and given the option to change accounts, but not sure what difference this would make.
19 June 2023
I feel I must be missing something, but I can’t find any info saying Apple Volume Purchase Program (VPP) for education and businesses is available for in-app purchases and subscriptions. Are there even any paid-up-front apps anymore? »
24 June 2023
iOSDevUK ticket booked. Thinking about going hiking in Snowdonia the weekend before. 🏴 »
4 July 2023
6 July 2023
Added the missing tweets in threads/tweetstorms on my website. The best examples are my open source advent, an iPad mini comparison and this train journey. »
12 July 2023
Mac quarantine seems a bit eager. Shows these scary alerts when opening files with the quarantine flag that are set to open with anything except the default app (the com.apple.quarantine
and com.apple.LaunchServices.OpenWith
extended attributes). This is macOS 13.4.1.
visionOS “upcoming events, testing opportunities, and other programs” are still “Available in July”. Are we there yet? developer.apple.com/visionos/work-with-apple/ »
13 July 2023
I believe Vision Pro is a huge deal for the future of computing, entertainment, and how we interact with the world. I wrote a post exploring how this new platform fits in. »
26 July 2023
visionOS is quite strict. “Spatial presentations are not permitted from popovers.” 🧑🏫 »
I thought I heard it was possible to upload Vision apps to TestFlight (even though not many people would be able to install app yet) but it doesn’t seem to be allowed for me.
28 July 2023
That narrows things down.
The following API for accessing user defaults requires reasons for use. […]
From Describing use of required reason API »
10 August 2023
The new .inspector
modifier for trailing sidebars is not available on visionOS 😢
Hard to get a sense at this stage how “desktop-class” Vision apps should be. »
15 August 2023
My first time managing to crash RealityEnvironment in the Vision Simulator. The world fades to black, and it makes a sad noise. »
17 August 2023
If an Apple Bluetooth Magic Mouse/Trackpad/Keyboard normally paired to an iPad is paired to a device you no longer have access to, you can pair it back to the iPad like this:
- Plug the peripheral into a Mac
- Forget the peripheral from the Mac
- The peripheral will now be discoverable for the iPad »
24 August 2023
Since Apple removed the device support files that everyone used, did anyone find a way run an app linked with the iOS 16 SDK on an iOS 17 device? (Other than TestFlight, which is a very slow iteration loop.)
Edit: Using defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled
as suggeted further down that thread worked for me. Presumably there’s a reason this isn’t enabled by default though.
»
26 August 2023
Good turnaround on documentation Feedback I sent to Apple. They added the bold text to clarify CKRecord.encryptedValues
:
When you enable Advanced Data Protection, the encryption keys are available exclusively to the record’s owner and, if the user shares the record, that share’s participants. »
30 August 2023
Updated KeyboardKit to support iOS 17 and Xcode 15. Xcode 14 is still works too. No functionality changes. »
Wow Xcode 15 beta 8. I don’t recall there being an 8 before. Looking in Xcodes, I see Xcode 11 went up to beta 7. »
Auto-correction with a hardware keyboard on iPad doesn’t seem better on iOS 17. Still need to manually accept suggestions for obvious typos, and as far as I can tell you still can’t accept suggestions with a keyboard. You can at least do it with a mouse now; previously only possible with a finger.
Self-sizing table view cells were introduced in iOS 8 in 2014. No need to truncate lines of text! Took a few years for them to work well. I wrote some practical tips in 2018. Obviously this is the expectation with SwiftUI.
Apple Mail in 2023: One line for the subject should be all they need. 😐 »
31 August 2023
Updated my reading app for compatibility with iOS 17. In addition, the app now has an archive to keep articles around for easy reference. »
14 September 2023
Nice surprise from the Apple event is that the OS updates are coming to iPhone, iPad and Mac this month. Xcode 15 RC includes the new SDK for both iOS and Mac. No awkwardness like previous years where the updates weren’t synced. Much credit for this: synced updates are really hard. »
19 September 2023
Typing auto-completion is really good on macOS Sonoma; I feel more productive. Shame it‘s not as good on the iPad, which I think is because on the Mac this is on top of more robust auto-correction. »
3 October 2023
➡️ Innsbruck 🚆 Munich 🚆 Frankfurt 🚆 Brussels 🚆 London »
4 October 2023
Seeing a situation on our iOS app like this:
- Use memory -> receive memory warning
- Cut our memory usage a lot
- Use memory again -> termination (no warning)
Warnings arrive every time in a sample app. Not sure how to debug this. »
7 October 2023
Oh no I just tried turning on Sonoma’s new text size setting for system apps on my father’s Mac. Messed up the arrangement of the 153 items on the desktop. One of the most disruptive things I could have done. »
11 October 2023
It’s really tempting seeing the try! Swift Tokyo conference announced for 2024. I had an amazing time there in 2019 and stayed in Japan to ski, hike and live in a little village by the sea. But I think I’ll stick with my no flying streak (since Jan 2020) and will ski in Austria instead. »
12 October 2023
With Xcode 15, is there a way to get rid of wireless options in the run destination picker? This keeps switching back to devices that aren‘t necessarily in the same room as me instead of the one that’s plugged in!
13 October 2023
Compiling an existing iOS codebase for visionOS breaks the deprecation cycle. You end up with deprecation warnings you can’t silence that aren’t actually a problem. We ought to be able to set our visionOS deployment target to -1.0 (two versions back) to match our iOS deployment target of 15.0. »
18 October 2023
Any recommendations for a plain text notes/scratchpad app with CloudKit sync? Importance: iPad > Mac > iPhone
Bear 1 hit the sweet spot. The Bear 2 editor is too non-standard. Tot adds angle brackets around pasted links. FSNotes has good UI but iCloud Drive sync works poorly for this. »
22 October 2023
Cool a new Swift conference in England, coming next May. swiftcraft.uk »
26 October 2023
I miss the Mac behaviour where some apps would quit automatically after closing their last window. Seems excessive needing to close and quit to get rid of an app. Perfect example of why I prefer working on my iPad. »
1 November 2023
When you get a new bug B with a description identical to an older bug A, and you can fix B by reverting the fix for A, but that fix didn’t include a test or concrete steps to reproduce. »
3 November 2023
I’m really pleased how well our NSLondon events are going with our expanded organisers team. Great turnout and talks yesterday evening at Onfido. »
We hit the 10,000 limit on TestFlight testers for PDF Viewer a while ago. Using the new filtering options, I removed the 10% of these that had never installed a build, so it’s now possible to sign up again.
Tip: Filtering within groups was unreliable. Filtering from “All Testers” worked better. »
7 November 2023
Pull to reload in Safari on iPad continues to be a bad feature. I often trigger it accidentally, there’s usually no logical reason why a webpage would reload in respose to this input, and there’s a reload button anyway. »
Back from a terrific weekend seeing friends in Berlin. I worked all day on the train from London over there and back, so it was time-effective without flying. 🚆 »
15 November 2023
Accidentally left the iPad Simulator recording the screen for 7h 52m. The file is only 200 MB though. MPEG is efficient when there‘s no difference between the frames. »
Looking forward to seeing people today for an NSLondon pub evening while Chris Eidhof is in London. »
20 November 2023
Received a Bluesky invitation code many many months after registering my interest. Now I can finally “join the early conversation”. »
25 November 2023
Added Bluesky as another way to follow my posts (not that there have been many recently). This is set up a mirror of what’s on ActivityPub/Micro.blog. I’m @douglashill.co »
Link to Bluesky profile in Bluesky app => Potentially Misleading Link. You couldn’t make this up.
30 November 2023
Started a long weekend with a day at cookery school making ramen and gyoza. Learned a lot, and it was very tasty. Went as not vegetarian for the day.
1 December 2023
Second day off work. Almost all the day was taken up with some errands in town, a misty and frosty run in the woods, and putting yesterday’s course into practice making ramen and gyoza at home.
2 December 2023
Dreamy views over the mist on my extra frosty run today. »
6 December 2023
Is there a way to have the initialiser of an Objective-C class be migrated into Swift as a required init
? This forces subclasses to override the initialiser, which is necessary for copying an instance of a subclass to return another instance of that subclass.
»
8 December 2023
This trick does not work in Safari on iPadOS, because iPads are baby computers where you can’t select more than one thing at a time.
True, iPad is missing keyboard support in this case, but generally I find multiple selection easier on iPad. Multitouch dragging works fine for Safari tabs. It’s not uncommon I start dragging something on Mac then realise I can’t do what I want because there‘s only one pointer. »
11 December 2023
Sent feedback about the “required reason” APIs that we need to read the system boot time to destroy information about the system boot time that we get from UITouch.timestamp
. (And yes, you could use UITouch.timestamp
to help with fingerprinting.)
»
17 December 2023
Christmas baking commences! Made these for the local “mince pie run” this weekend. »
19 December 2023
App review is working quickly to get through everything this week. Managed to get a PDF Viewer update built and released on the same day. »
20 December 2023
Great team effort wrapping up the year at PSPDFKit with one last release. We overhauled how we digitally signing documents, ending up with an API that’s simpler and more flexible.
We’ve also been iterating on our public preview for visionOS that we announced in September. »
21 December 2023
I added Tumblr as another way to follow my posts. Perhaps not the best place for my mostly tech-related posts, but it’s a checkbox on Micro.blog, and if someone prefers Tumblr to other options that’s fine by me. I’m douglashill. »
22 December 2023
It’s a shame macOS Sonoma dropped the smooth animated transition between the phases of Dynamic Wallpapers. I still use the wonderful Big Sur coastline photos, and it’s jarring when the photo suddenly changes time of day. »
26 December 2023
Added a privacy manifest for my KeyboardKit project. Nothing to declare. »
31 December 2023
With instructions for the party tonight of “most surprising party snack”, I made miso-walnut onigiri.