Douglas Hill’s posts in 2020

9 January 2020



15 January 2020

How we improved our Git repository setup by moving our PDF Viewer for iOS repository into our PSPDFKit repository. Read more »

21 January 2020

It looks like UIKit’s document picker and browser use UTTypeCreatePreferredIdentifierForTag. It’s behaviour is documented as being undefined, so some random type wins.

Audit your code! Use UTTypeCreateAllIdentifiersForTag instead to handle all possibilities. »

This. At least with higher-level parts of UIKit. And this points towards building things up from more primitive components like UIView. »

22 January 2020

iPad: This iPad hasn’t been backed up in two weeks. I’m going to constantly repost this notification!

Me: This iPad has been in a drawer for two weeks. I don’t care.

It’s very easy when making software to think your software is more important than it really is. »

I had a really really wonderful time at @iosconfsg. The warmth and enthusiasm of everyone made me so happy.

Speaking at conferences is great. You have definitely learned things worth sharing. Here are a few conferences with talk proposals open right now:

23 January 2020

Every time I connect to or disconnect from the LG display, it seems there’s roughly a 50% chance the Mac and external display switch to 100% brightness. »

Had fun doing @NSLondonMeetup this evening. About 150 people, with in-depth talks on testing and Unicode. All really smooth and professional thanks to @TechAtBloomberg.


24 January 2020

Setting out on a 2–3 month Austria/Euro trip tomorrow. I have most packing decisions finessed but not sure whether to take the Switch given the current and next games I want to play are on 3DS. Feels weird owning this miracle of portable gaming but leaving it behind. »

Wondering if there’s a better way to use Xcode to edit all files in a folder other than making a dummy project and dragging folders in as needed. You can open multiple files in Xcode directly, but not folders.


On iPad I make Apple Maps ask each time to fix its anti-state saving. Apps should stay how you left them, especially when there’s a button to jump to current location. »

25 January 2020

London 🚆 Brussels 🚆 Frankfurt 🚆 Munich 🚆 Innsbruck

🇬🇧🇫🇷🇧🇪🇩🇪🇦🇹 »

Someone on the train is powering through messages with a phone in a keyboard dock. I had a question after my iOS Conf SG talk if there’s any point supporting enhanced keyboard control in a phone-only app, so now I can say yes, there is! »

We’ve had 4 months to adjust but I haven’t, so I’m saying that the removal of the magnifying loupe makes text selection worse. The new system tries to be more elegant, which is commendable, but unfortunately it doesn’t work as well. »

26 January 2020

Held modifiers not passing between processes also seems to be the root cause of cmd-tab sometimes being unresponsive on iOS. You can reproduce by holding cmd, and then switching app with fingers, and then pressing tab. It doesn’t respond.

This may seem contrived but I jump around iOS pretty fast and definitely hit this in practice. »

28 January 2020

Any recommendations for iOS email apps that don’t proxy to their own servers? Ideally looking for the iOS 12 Mail app… »

29 January 2020

31 minute app review time 😍. Soon the slowest part will be ‘Processing’. #iosreviewtime »

31 January 2020

Genau »

Damn just missed snapping a pic of the bus showing a file not found error on the front. »

1 February 2020

Woohoo! Unlimited skiing unlocked. Feeling so excited about the rest of the season.


3 February 2020

My text size contribution to GitUp is now in the official release. Fun fact: Seems most people use this for larger text, but I actually use it to make the text smaller. »

4 February 2020

I could talk about keyboards for hours, but I distilled it into 30 mins at @iosconfsg. Recording of the talk »

Keyboard control in UIKit apps Read more »

11 February 2020

Why are apps swapping out Send buttons for up arrows or tiny paper aeroplanes? »

14 February 2020

Ahaha 78°. I think I’ll just watch for this one. Oh it’s actually 78%. Sign me up! ⛷

And I skied a 100% slope in Norway a couple of years ago. So fun I did it again and again. »

Hauptbahnhofbuffet. No, bad autocorrect!


16 February 2020

Am I being too sensitive reading ‘less than 10’ as dismissive? If it said ‘more than zero’ I’d be reassured I’m not the only one. I’m sure it’s not intentional but it’s easy to end up with stuff like this; empathetic UI copywriting is hard.


17 February 2020

Since iOS 13, GitHub project boards have been basically unusable on iPad because finger dragging moves cards and never scrolls columns. Today I found you can scroll with Apple Pencil. Now fully usable! »

2 March 2020

Trying out the iPad Mail app with Organise by Thread turned off. That at least fixes the iOS 13 problem where the sender is sometimes displayed incorrectly in the list. »

3 March 2020

How to share a file as a link from iCloud Drive:

  1. Long press on file in doc browser
  2. Share > Add People > Share Options
  3. Select ‘Anyone with the link’ and ‘View only’
  4. Go back, select Mail, email to yourself
  5. Long press on file in email
  6. Select Copy Link, paste where you want

This is slightly easier if you rely on having a 3rd party app installed. E.g. you can ‘Share’ to Bear or OmniFocus and then copy the link from the share extension compose sheet. »

On iOS, a long press and drag (without lifting) selects text by word, while a tap and then drag (tap and a half) selects by character.

On Mac, a drag selects by character, while a click and then drag selects by word. They’re swapped. This is just an observation. »

7 March 2020

Ha, the @unsereOEBB app just crashed in the second between me finding my QR code ticket and turning my phone around to show it to the ticket inspector. »

I made @_readingapp’s root view controller apply additionalSafeAreaInsets from keyboard frame change notifications and boom: whole app avoids the keyboard. Gist:

7 hours later: @_readingapp Updated the Gist to fix it double counting device safe area inset. Thank you @geoffhackworth for pointing this out.

1 day later: A build with keyboard avoidance is now up. »

9 March 2020

It it just me or does everyone see What’s New in TestFlight every time they sign in? There’s even a checkbox that seems like it would prevent this from being shown again, but it doesn’t seem to do anything.


Added dark mode support on Tried to add Dynamic Type but it seems that only works in WKWebView or something.


Every project I work on gets a helper to turn a colour into an image for this purpose. »

14 March 2020

I’ve reached 100 ‘unread’ conversations in Messages. Achievement unlocked?


Good couple of months in Austria. I cut the trip off today to lie low at home. So I finally exited the EU… »

18 March 2020

The floating iPad stand looks cool and pass-though charging would be wonderful. I’ll probably stick with my Roost stand because it gets the screen higher so is better for neck strain. »

19 March 2020

When Xcode 11.4 is out of beta, I can switch KeyboardKit to using the public API for page up, page down, home and end. Nice! »

This pointer support in iOS 13.4. It’s AMAZING. You can even enable right click! »

I’m curious whether the Simulator will simulate touch or pointer interaction. Hopefully this will be a toggle. »

With a pointing device on iOS 13.4 you can swipe to go back in a UINavigationController FROM ANYWHERE (not just from the screen edge). So good.

1 day later: I can confirm that on iOS 13.4 it’s possible to zoom with the combination of 1 finger touch and 1 click and drag on the mouse. 😆

4 days later: Terminology note: the shape of the iOS cursor when over text is not an I-beam shape any more than a triangle is a circle. An accurate term would be something like bar, pipe or line. »

26 March 2020

As far as I can tell, iOS 13.4 broke dragging apps from the home screen into Split View. The drag get cancelled when you bring up the app switcher. Workaround: put the app in the dock temporarily to set up the space. »

Feeling really productive with this new toolbar in Mail on iOS 13.4. Having a button that deletes a whole thread is just so practical. »

27 March 2020

Last week mouse on iPad. This week 2× playback speed in the Apple Developer iOS app. It’s like iPad-for-work Christmas. Reasons I use a Mac are dropping quickly. »

28 March 2020

How I localised KeyboardKit into 39 languages without needing translators. Read more »

⌨️🌏 KeyboardKit is now localised into 39 languages! I wrote about how I leveraged Apple’s glossary files to achieve this:

21 minutes later: Also, my site now has an articles feed:

3 days later: KeyboardKit now honours the reduce motion accessibly setting for scrolling and zooming animations. I also added what I’m calling the classic demo; it runs back to iOS 11 and confirms stuff works from Objective-C.

The goal with all these changes — 39 localisations, iOS 11, Objective-C support — is to eliminate potential barriers to adoption. I want there to be no excuses for apps to not have excellent hardware keyboard control.

2 days later: One fun part / obstacle when poking through Apple’s localisation glossaries is learning app code names.

30 March 2020

When rearranging apps on the home screen on iPad mini, I get confused looking for the Done button. »

31 March 2020

I kept the hover effects really subtle. This app is for focused reading after all. Right clicking on links to show the share sheet immediately is pretty cool and comes from using the high-level UITextItemInteraction.presentActions API. »

2 April 2020

Bad status 3 bar!


3 April 2020

As you can see, this notification was delivered to the app running on the computer on the top of my desk. It has a mouse and a keyboard — yes it’s a computer. 🙄


My mother has had an iPad for ten years and one day (the delivery arrived early). She’s really not an early adopter but I managed to convince her to get it and that worked out great. I didn’t get my own until the iPad Air a few years later (after graduating and getting a job.) »

4 April 2020

Photos from my afternoon run.


5 April 2020

Spot the difference

4 hours later: New article: Improving iOS menus by putting icons on the left with swizzling


How I improved the usability of iOS contextual menus and the share sheet with some swizzling fun. Read more »

7 April 2020

Using a mouse on iPad, I click the wrong app in the dock multiple times a day. It’s hard to judge the horizontal movement required because of magnetism and the pointer being hidden. The HIG says use the lift effect for small elements only, and I think app icons are a bit too big.

I’m trying disabling pointer animations in accessibility settings for now. »

8 April 2020

It would be neat if UIKit added UIControl.Event.secondaryActionTriggered for right click, long press, or 3D touch on a button. »

12 April 2020

DynamicButtonStack: Motivation and design details Read more »

Today I released a small open source project called DynamicButtonStack. It lays out an array of buttons dynamically depending on the space available.

3 days later: With DynamicButtonStack, you don’t need to worry about text being cut off when localised.


20 April 2020

Is there a nicer way to do a ‘lazy let’ property in Swift other than these 7 lines? I can’t see how to do this with property wrappers.

6 hours later: The ideal case would be if this ‘just worked’. The language has syntax for expressing lazy let but the compiler doesn’t like it for some reason.

1 day later: Outcome of lazy let:

21 April 2020

defaults write net.shinyfrog.bear SFEditorFontSize 9

This works! I’m so happy: I no longer need to use cmd-minus in Bear after switching my Mac to/from Dark Mode. 😊🐻 »

22 April 2020

The iPad laptop form is working well. I’d love to see it fit better in the desktop form. Perhaps with a stand something like this.


23 April 2020

If you turn on VoiceOver and Voice Control at the same time they talk to each other! All I’m doing is deleting text. Have you talked to Kathy? 😆


25 April 2020

It’s interesting how typing comments in Swift files in Xcode gets the fans spinning. Feels more so than typing actual code. Might be because I’m overall typing at a faster rate? »

28 April 2020

It’s not clear to me why Apple’s advice for UI state restoration has changed from save everything (scroll position, text selection etc.) to save only the bare minimum.


30 April 2020

It seems I now need to add contact info again for every new version on TestFlight. Is this really how it’s supposed to work?


4 May 2020

When will the iOS Mail app use self-sizing cells? Subjects are truncated to one line, which is not ideal for me using a small text size. It must be really annoying for people using a large text size. »

5 May 2020

The multitasking gestures really get me. They enabled them on all iPads but not iPhones.

It’s unfortunate that this code must exist

enableSuperiorMultitaskingUX = isPad || hasHomeButton == NO

Instead of

enableSuperiorMultitaskingUX = YES!!!!!! »

7 May 2020

My Apple Store purchase failed. My options for retrying are a card number I don’t recognise or enter card details. But my correct card details are already on the account! It would seem like phishing except I’m being linked to this website from the Apple Store app.

48 minutes later: This ended up being my card’s Apple Pay device account number on my iPad mini. I have no insight into why the payment failed and had to enter my card details that Apple already has on file so not ideal :( »

9 May 2020

I’ll be there! »

One of these logins matches the subdomain of the website I’m on. It’s a fun guessing minigame in iOS.


12 May 2020

Following along nicely from all the accessibility talks at #appbuilders20, I pushed an update to my app with much better VoiceOver support. »

15 May 2020

One specific issue with iPad multi-windowing is swiping up closes both splits in a space (and new windows really like being opened in split view). I think it would be better if the swipe up acted on a window (a split) instead of the space.

Or, you know, if there was a standard keyboard command to close windows.

I would create a lot more new windows if I could close them conveniently. »

18 May 2020

Pretty cool »

19 May 2020

Reminder that in Swift code you can add documentation comments (///) above local variables, which will show when option-clicking anywhere the variable is used.


24 May 2020

OmniFocus vs Things really tests my values. OF sync has better security/privacy since data is stored on a server I choose and only decrypted on the client. But the app is a bit slow at almost everything. The Things UI is soooo much nicer: all the friction is gone. »

27 May 2020

Here’s an interesting discussion on @_adaptfm about how a “developer actually did the nice thing” by not using the default size classes from UIKit. For best results, apps need to go beyond size classes.


No <3 allowed in App Store release notes ):

This is a recent change. Wasn’t a problem last week.


It’s a sticker pack. No code in it. Not configured differently to other targets. What can I do?


1 June 2020

The .5 on the end means this will end up as 13.6 right? Must be true. »

It’s five years to the day since I started work at @PSPDFKit as a junior-ish developer. I’ve learned sooooo much. How nice to wake up every morning and work with such a great team.

21 minutes later: It’s also one year since the weekend of arriving at WWDC. Last year was a really fun one. Saturday is best for adjusting to the time zone and starting catching up with people. And maybe visiting adorable bunnies.

23 hours later: On this day last year, @smileyborg and @krstnfx organised a behind-the-scenes Worldwide Costco Tour (WWCT). Fun afternoon, and a truly novel icebreaker for WWDC week.


This would be a good fit with Slide Over. Your colours out of the way, but there when you need them. »

2 June 2020

Here’s a little summary of all the menus in UIKit:

Agh mouse pointer in screenshot as always. At least it’s a very nice circle. »

I wrote about taking your iPad trackpad support up a level, covering: scrolling with pan recognisers, context menus with backwards compatibility, custom menus on right click, immediate dragging, and abstracting this nicely with UIInteraction. Read more »

18 June 2020

With just a few days to go, here’s my iPad-focused WWDC 2020 wish list. It’s the only wish list with things like improving the feel of UINavigationController. Read more »

19 June 2020

Good list! +1 to web inspector and I’ll take any improvements to iPad Spotlight. »

20 June 2020

Typical: I just came across a really weird issue that would be perfect for a WWDC lab. Sometimes system serif font is substituted with Times New Roman but it’s unbelievably sensitive. Even changing text colour makes the issue not occur, let alone moving to a sample project. »

22 June 2020

App Store Connect now has nice URLs! For example,<app-id>/testflight/crashes 💙

Pretty sure this was new in the update that appeared last week. »

This Apple Pencil stuff is epic. »

What about running Mac apps on iPad? »

Hmm. Hello @_mochs


Nice to see existing accessibility features that didn’t have API now have API. I’ll make use of this in @_readingapp for my custom dismiss button and transition.


23 June 2020

Coming Soon »

No multi-select but still pretty fast thanks to the awesome mouse support.


Here’s a four column layout with nested UISplitViewControllers. Some rough edges, but works a lot better than last time I tried.



I spent a while trying to work out how to hide home screen 2 on iPad. »

24 June 2020

With all this new API, this is a good time for a reminder that you can set up a search scope in Xcode to search the SDK headers. This can tell you things like where a particular type is used across the API.


It’s now possible to create UIActivityViewController (the share sheet) using NSItemProvider thanks to UIActivityItemsConfiguration.

The existing convention is to share multiple representations (e.g. URL and title) as separate items, and we should stop doing that because NSItemProvider offers a better way. But this means share and action extensions need updating to expect this. »

25 June 2020

Trying to come up with something for the Core Data lab but everything is working great. It can handle everything I throw at it. »

26 June 2020

Nearly. We have UIControl.Event.menuActionTriggered. »

Remote has so much lower environmental impact. It’s a big win on that front. »

They did this. Amazing. And as time goes on, this gives UIKit licence to more freely make further adjustments to be more Mac-native. »

27 June 2020

Now for the really hard question: Should I buy a Magic Trackpad in silver to match the Magic Keyboards or in space grey to match the Magic Mouse (and generally look better)? »

28 June 2020

The return of the Mac startup chime is curious. Not sure why you’d celebrate a computer needing to restart. »

1 July 2020

Please join me in not using the phrase ‘Apple engineers’ until it’s called WWEC. »

👍/👎 I posted my review of various aspects of the remote WWDC experience. Spoiler: It was a great success! Read more »

5 July 2020

Has anyone tried setting up a email account for someone who is less digitally fluent? Is it helpful, or have all the concepts been confusing? »

6 July 2020

If you want the simple case of a secondary click, you can also do this with tapRecogniser.buttonMaskRequired = .secondary because the system already maps control + primary click to secondary click. Easy!

(This is


7 July 2020

One thing I can do on a Mac that I haven’t worked out how to do on iOS is download an iOS beta installation profile so I can AirDrop it to my other devices. The system puts the profile straight in Settings rather than in your Downloads folder.

Otherwise you need to sign into the Apple developer website on every device, which is a bit tedious. »

8 July 2020

Fixed size widgets on iPad seem like the antithesis of all of the effort we’ve put into adaptive UIs in the last few years.

2 hours later: I do sympathise about the widget situation on iPad. The fixed sizes work nicely on iPhone where widgets live on a grid. Moving the platform forward incrementally vs doing everything in one go is a tricky balance to strike. »

Here’s a game: I take a screenshot from the Panoramas section in Photos. You name the cities.


9 July 2020

🎧 It was my pleasure to be on the iPhreaks podcast for an in-depth discussion covering the why and how of hardware keyboard control in UIKit apps. »

13 July 2020

Trouble with Siri on iOS 14 is you see stuff underneath so I think “oh I’ll just scroll down a bit while Siri is processing” but doing that cancels the request. »

14 July 2020

I‘d be really interested to know why iPad doesn’t support app switching with Magic Mouse. It could just be that trackpad was the focus, but the fact that mouse gestures are also more limited than trackpad on Mac makes me wonder if there’s some fundamental restriction I’m missing. »

Nice keyboard support! »

15 July 2020

Adding #AppleNewsToday in @CastroPodcasts 🐙🔄


This little one was outside my office today.


21 July 2020

Impossible to distinguish using UIKeyCommand. You need to use the lower-level UIPress API.

1 hour later: I looked into making KeyboardKit map enter as an equivalent for standard Done buttons but it was too fiddly to do as a framework, so I used cmd-return instead. »

22 July 2020

I better update my layout improvement swizzle. »

Exploring the power and flexibility offered by creating lists using UICollectionView. Read more »

New article is up looking at the benefits of lists in UICollectionView. It’s so easy to animate between lists and grids or mix lists with grids at the same time.


Sounds useful. Like »

29 July 2020

🏴󠁧󠁢󠁷󠁬󠁳󠁿 Does anyone have experience localising an app into a language not supported by iOS, such as Welsh? What do you do about text from UIKit like Done, Cancel, Cut, Copy, Paste? Just accept the mix of languages? Are users used to this? »

30 July 2020

Conclusion from replies:

5 August 2020

It’s nine twenty-five o’clock.


7 August 2020

I don’t understand these dialogs from Safari for Mac. It also occasionally asks you to confirm your user style sheet. Is it now good UI practice to randomly pop up dialogs asking users to confirm various settings. Or a sandbox limitation where Safari needs to renew its access?


11 August 2020

iOS 14 seems to have a reliability issues with the feature where Hey Siri is ignored when a device is face down so my iPhone needs forcibly expelling from my office. »

14 August 2020

It’s wild that there isn’t an “Archive and Upload to App Store” menu item in Xcode. Imagine if every time you built and ran an app from Xcode you had to go though a five step wizard confirming various build settings. »

Clearly Twitter is the future of documentation with @SceneStorage. Also, I respect this Twitter list:

Ugh the list link seems to (usually) not work. Look where @SceneStorage is listed — it’s fun! »

19 August 2020

On the one hand we have SwiftUI, which eliminates bugs by removing the need to sync state around the codebase. On the other hand iOS 14 adds a menu property on UIBarButtonItem, with no way to build the menu on-demand as far as we can tell.

You have to work out all the state that affects the menu and set the property again each time that state changes. Perhaps we could refactor a load of stuff and set the property via Combine. For something short-lived like a menu, building on demand seems like such a nice API. »

Putting things back to normal. UI conventions are over?


Updated KeyboardKit so arrow key selection in lists with UICollectionView works just as well as in UITableView. The nice thing is this improves behaviour in custom collection view layouts too! »

27 August 2020

It’s so strange that force quitting iOS apps removes them from the app switcher. What’s the most likely app I want next? Almost certainly the one that needed quitting. »

28 August 2020

Took me a while to work out the iOS 14 time picker on iPad with Magic Keyboard. You need to type on the keyboard, but there’s no visual indication of this — like a blinking insertion point or something. »

1 September 2020

Hi AirPods case. You have a new name.


2 September 2020

For future reference

(The user can customise these in Settings > Accessibility > VoiceOver > Commands > Touch Gestures, but this is the default mapping between swipes and scrolling.) »

3 September 2020

This tweak reduced the compilation time of @_readingapp from 20.8 s to 12.5 s. So speedy now! ❤️

40% of the whole app compile time was type checking three lines using + operators to concatenate arrays. 😱 »

I run into this a lot with the Mail toolbar being hidden by the keyboard bar in split view. Additional safe area insets are a nice way to handle this across the whole app, like this: »

8 September 2020

Whoever would have thought a good interface for a system that stores graphs of objects would be a GRAPHical user interface? 🙂

(I’m still using »

9 September 2020

I set up an @alfredapp workflow so I can type ‘files’ to open iCloud Drive in Finder. The iOS mindset is winning. »

10 September 2020

cc @MrBananas. Game changer, I believe. »

12 September 2020

“The one point of friction that remains is apps that use Safari View Controller as an in-app browser rather than sending you to a separate app when you tap a link.” »

Wanted: cooking app with Gantt charts. Pastry needs to chill and squash needs to roast; those can happen in parallel. But then pastry needs blind baking so needs the same resource as roasting. Then if I’m slow at one part, could the project still be delivered on time? »

Sometimes after putting iPad in Magic Keyboard (or any landscape stand) it’s stuck with screen in portrait. You could pick the whole thing up and rotate back and forth, or you could sit back and say this:

16 September 2020

Mac Catalyst existing but iOS and Mac releases not being synced up is not fun. To get our iOS 14 release out we have to add in conditional compilation around all new API use so it also compiles with the iOS 13 SDK. (Or remove Catalyst.) »

With only one day between the Xcode 12 GM and the iOS 14 public release, maybe the smart move was to keep using Xcode 11 and look up new API at runtime so you’re in control of when you prep your iOS 14 update. The world is kind to people who use NSSelectorFromString 😇

(I know this is no good for widgets. It’s a joke. Or is it?) »

17 September 2020

Idea for a new iPad system app: You open this app and plug your Mac into your iPad and it hides the icons on your desktop so you can take clean screenshots of your Mac app using your iPad. »

22 September 2020

I remember PSPDFKit 5. Time advanced and we somehow made it to 10! So many different things packed into this release. »

23 September 2020

It’s weird it seems that to show (Apple owned) Dark Sky next hour rain in a widget in the UK you have to use a third-party app like @weatherlineapp. »

Just noticed if I choose to send from with the iOS Mail app it sends from instead. Same for Fastmail — always sends from the first address in the account even when you pick an alias. »

24 September 2020

It’s out! »

26 September 2020

I just discovered Settings > Privacy > Files and Folders, but it doesn’t seem to do anything: If you remove an app, that app is re-added next time you open it. System document browser is secure and private by design, so the point of this list isn’t clear to me.


27 September 2020

Here’s a design challenge that might not come up in Fahrenheit. Quick: tell me at a glance which row of numbers is time and which is temperature?

And yes, the next pair of numbers are 14 and 13. »


4 October 2020

I think this post holds up well: Whatever works for you »

7 October 2020

A lot of these suggestions amuse me. My favourite is macOS √11 Big Surd.


8 October 2020

Some details about KeyboardKit’s new support for Swift Package Manager, sidebars and lists with UICollectionView. Read more »

Here’s a write up of everything new in KeyboardKit for iOS 14. It has support for Swift Package Manager, sidebars, and lists with UICollectionView.

The demo app has been updated to use a sidebar. Everything shown in this screenshot can be used from a keyboard.

Using tab and arrow keys to change focused column in a split view was really tricky to get right. So glad it’s finally working well. 😌


9 October 2020

Anyone managed to get a translucent blurry sidebar on Big Sur with Catalyst? Using UISVC.primaryBackgroundStyle = .sidebar comes out plain grey.



13 October 2020

Please someone tell me »

Tempted to downgrade to 64 GB.


OK maybe I do stick with my 2016 iPhone SE. »

17 October 2020

Don’t worry I’m OK


18 October 2020

Has anyone used Zoom breakout rooms to have a presentation followed by small discussion groups so people can chat? Did it work well? ( »

20 October 2020

We’re about to hit the end of the 4 year Keyboard Service Program for early buyers of the 2016 MacBook Pro. Now’s the time to get those top cases replaced… if there are any appointments available and if it’s safe to go out.

The MBP I bought in 2016 is in need of it’s third keyboard replacement. My current 2018 model has needed it’s first replacement since around March but it hasn’t been easy to arrange that. »

21 October 2020

So excited we’ll be back soon! Great opportunity for anyone to speak at a meet up because location is no longer an issue. »

📺 Videos from our January event are up too. »

This. The number of times I’ve wanted a property to be lazily loaded and also writable is close to zero. »

22 October 2020

There’s a conference every week next month:

Not sure what I’ll do. I could probably do with more non-tech time until the end of the year. »

Does anyone know what happens if you try to download an app from the Mac App Store and there’s a filename conflict in /Applications/? I.e. there’s already an app with the same name. Not sure how to test this except in production. »

In my testing on Big Sur, the Mac App Store does this:


24 October 2020

My brother was told in Apple store that they only replace MacBook keyboards free once. Seems wrong to me since they already replaced it free on that machine twice. Anyone else have a similar experience?

Support doc doesn’t specify: »

27 October 2020

Because Touch ID unlock doesn’t usually work on Big Sur and the MacBook keyboard double types so badly, I’ve changed my login password to be shorter and avoid the bad keys. 😕 »

29 October 2020

Don’t panic. DON’T PANIC!

There is so much wrong here. Apple says you can view exposure notifications in the app, but the NHS app doesn’t actually do this. After the system notifications are gone, the info is not recorded anywhere.

I don’t know on what basis they decided the risk is low. I’d like to know the date, duration and signal strength, but it doesn’t tell me. »

1 November 2020

Writing writing Swift, I miss ‘Jump to definition’ on system API being instant with no loading spinner. I don’t mind much whether I end up looking at Objective-C or Swift — just do what’s fastest. »

And movies are also great for learning languages — they were a big help for lots of my friends when they learned English. I have a list of German movies I want to watch, but they’re extremely hard to find.

On the flip side, it’s wonderful the Studio Ghibli movies are now on Netflix UK (and elsewhere) in their original Japanese. »

7 November 2020

Over the last ten days, COVID exposure notifications comprised a quarter of my iPhone’s battery use. Not sure if this is normal, but kind of awkward given this feature is so important for everyone. Still worth it though.

The energy usage seems relatively worse because I really really don’t go out much. 99% of the time, running exposure notifications isn’t doing anything useful. Hopefully something that can be optimised in an update. »

11 November 2020

Does everyone need to verify an iCloud account in the iOS Simulator every day by entering the password in Settings, or only me?

21 minutes later: Looking at this more I think my iCloud account in the Simulator is permanently slightly broken. Can’t even sign out (except by deleting the whole simulator). I’m guessing if I ignore these password prompts it will work just as well as if I enter the password. »

12 November 2020

I’m still puzzled why the iPhone 12 mini doesn’t render at its native size.

This is from

But it doesn’t answer the question to me.

If running at the same size as the iPhone X is important, why don’t all new iPhones do this?

If there no need to worry about a 1:1 pixel ratio, wouldn’t it make sense to have a slider on all iPhones to let users pick whatever display density they find most comfortable? It would go a lot further than what Dynamic Type can do. »

All my non-system Mac apps are taking multiple seconds to a minute to open right now. Turn off Wi-Fi => everything opens fast again. Thanks.

Ah here it is

Looks like a lot of poeple are seeing this.


Installation from Mac App Store has also been unreliable for me, following long propagation time for update. And App Store Connect returned from unusual errors a few mins ago.

And another. OK I’ll stop now. »

17 November 2020

This. Many times every day. »

We made the leap to universal purchase between iOS and Mac. Begone maccatalyst bundle ID prefix! »

18 November 2020

Looking forward to @NSSpain tomorrow. Soon! »

19 November 2020

Works in Grapher too — the built-in Mac app you didn’t know existed. (Precision is not great though.)


In Catalyst debug builds on my Intel Mac, my iOS share extension is being compiled for arm64. I made sure ONLY_ACTIVE_ARCH is YES. Only way to make it build I found so far is setting ONLY_ACTIVE_ARCH to NO everywhere.


22 November 2020

iPad Magic Keyboard. The 2018 iPad Pro was already my best computer so far and this makes it even more versatile. »

26 November 2020

Rich text editing was a mistake. Plain text is best text. »

28 November 2020

Making B the jump button instead of A should be illegal on Nintendo »

5 December 2020

My MacBook Pro just powered down needing charging… with the battery at 42%. It does this a lot. I’d take slower build times on battery power if the Mac had something like the iPhone’s peak performance limiting. »

8 December 2020

I see a lot of misinformation repeated about PHPickerViewController and UIImagePickerController (including from Apple).

UIImagePickerController hasn’t required the app to have permission to access the photo library since iOS 11. For picking a single image, it provides exactly the same user experience as PHPickerViewController, including supporting search.

PHPickerViewController does offer a slightly more granular callback API so the image can load without blocking the user.

If your app requires iOS 14 or you need multiple selection, use PHPickerViewController. If you support older versions, I think there’s little benefit having conditional code paths to support both pickers. »

13 December 2020

iPhone 12 mini colour choice is hard. Every iPhone I’ve owned since 2008 has been black & silver, so white is kinda closest to that to get the silver edges. But red looks fun. But should an iPhone look fun…? »

Current iPhone is doing the thing where it keeps going and going at 1% battery. For over 24 hours so far.


14 December 2020

The macOS Big Sur costal aerial photo is gorgeous on my 5k display, but it seems to switch to the late afternoon sun image before midday. Maybe it’s hardcoded to use a number of hours before sunset? »

The UK government is asking for, like, four factor authentication to sign in to their website. I gave up in protest. It feels like security out of control. »

15 December 2020

Setting up @airmeet_com


Today I realised you can use do { … } in Swift to create a scope, like using { … } in C. Useful for tests where you need to be careful not to accidentally use one of several similar variables. »

17 December 2020

Early impression of iPhone 12 mini: Exceedingly gorgeous object, but this screen is WAY TOO BIG for fast and comfortable one handed use, which is the whole point of the ‘smaller’ device. »

24 December 2020

Trying a new layout. Since iOS 13, I had the screen full of almost all apps I use, but I found I mostly didn’t remember them and searched anyway so I cleaned up.


31 December 2020

Rename .m4v to .mp4 so you can upload to @github. »