Douglas Hill’s posts in 2016

3 January 2016

I wrote up my favourite video games of 2015. Read more »

6 January 2016

Don’t worry: I’ve notified Slack their Mac app window isn’t rounded in the bottom-right corner.


Annoyed enough by iCloud mail not updating in the background to disable badges for iCloud accounts. »

7 January 2016

I’m writing awesome Swift code:

let null = UnsafePointer<Void>(bitPattern: 0)


10 January 2016

I’ve seen this many times before, but this is the first one that’s entirely my own. (And my first on the Mac.)


Met lots of new people at @sideprojectlon and made some good progress too. »

Website is up for Magic Spell: my upcoming Mac app for checking spelling in many files at once. »

I hadn’t considered that a Mac app that technically works with sandboxing might not be allowed on the Mac App Store. »

Now I’m trying to work out what Apple’s rules on writing files mean, asking in the officially sanctioned manner: »

11 January 2016

Ooo another UIKit bug. Layout is being animated. Will be pleased/annoyed if this is fixed in iOS 9.3. »

14 January 2016

Citymapper has Crossrail already, although it isn’t showing up for me when planning routes. »

18 January 2016

Huh, I had no idea @cocoacontrols was owned by @redgate. Interesting. »

20 January 2016

NSAttributedStringEnumerationLongestEffectiveRangeNotRequired »

22 January 2016

Creating an Apple ID. Password length limit only mentioned in the console several steps after entering the password.


26 January 2016

NSLayoutConstraints to layout guides don’t seem to show up in Xcode graphical debugger. Figuring that out look longer than I was hoping. »

27 January 2016

Spent a while trying to make phone calls from my Mac. Finally found it works if the Firewall is turned off.


Yay, the documentation of prefersStatusBarHidden now properly describes the default behaviour because I complained! »

28 January 2016

Feeling energised after a fun @NSLondonMeetup »

29 January 2016

Rejoice! iOS 9.3 fixes the shift key being deactivated if you press it while it was automatically activated. That was annoying me near daily »

31 January 2016

An online form. While this isn’t what I want and is irritating to me, overall this feature is probably a winner.


Nearly ready to launch Magic Spell, my simple Mac app for bulk spell checking. »

Shipping software products on your own is hard! Really excited to be so close. Aiming for sometime this week. »

5 February 2016

Magic Spell 1.0, my Mac app for bulk spell checking, is now available. »

I wrote about why I made Magic Spell. Read more »

6 February 2016

The Smash Bros paid DLC has bundles, but the price is the same as the components individually. That’s misleading. 👎 »

Also on Smash Bros: ‘AOC Shop’ is not the best marketing name. »

7 February 2016

Been warming up legs for skiing with the Touchfit @GeorgesStPierre app. »

I forgot how much I enjoyed rolling around on the floor doing funny exercises. »

8 February 2016

I somehow only just noticed the status bar is much bigger on the lock screen (bottom). Been like that since iOS 7.


11 February 2016

talagent having trouble with the ‘transparent’ part of its name.


13 February 2016

Goodbye London for now. Next up: a few weeks in Austria. »

15 February 2016

Settings > Wi-Fi > Other > Security on iPad showcases the form sheet layout caught in animation problem: »

I would imagine that UIKit bugs that can be observed in system apps get more attention. »

20 February 2016

I like how in Austria a salad can be 60% meat, 30% onion, and 10% other veg. »

24 February 2016

View from the office this morning.


7 March 2016

Trying to stop my iPad from spending weeks uploading photos that already exist in iCloud. Tried lots of things but everything is failing.

It’s getting ridiculous. I can’t even erase the iPad to start from scratch. It fails because ‘The connection to iCloud timed out’.

20 minutes later: I managed to erase the iPad using Find My iPad on Now restoring it from a backup of another (working) device. »

8 March 2016

I’m annoyed by unpronounceable Swift operators. The ~= operator should have a name »

9 March 2016

Bad things can happen when you try to reload a collection view while it is reloading. (All the cells disappear into the reuse pool.) »

12 March 2016

Levitating? That’s new to me.


17 March 2016

First day in Japan. I’ve woken up at the right time, successfully read some stuff (とまと), been to a nice park, eaten at a sushi-go-round. »

I’m annoyed by Xcode showing me the generated interface when switching from a Swift file to an Objective-C header. »

18 March 2016

One nice thing in Japan is (so far) tap water is always available to help yourself when out to eat. Perfect if that’s all you want to drink. »

19 March 2016

There’s something for everyone here in Tokyo »

20 March 2016

As expected, Tokyo is way better than London for 3DS StreetPass. Super Smash Bros maxes out every day.


iMessage SIM swap has been working great for me. J-SIM is data only, so my phone number was simply removed. »

22 March 2016

Wow Xcode, this latest Swift syntax sure is repetitive.


23 March 2016

So I need to active my iPhone after updating to iOS 9.3, and the activation server is temporarily unavailable.

Try a bit later and it activates — after forgetting the email address and password I just typed.

Then as soon as the home screen appears I’m thrown into the iOS update flow thingy and have to enter my iCloud password for a third time.

Then I see the patronising ‘Welcome to iPhone’ message. I don’t blame normal people for ignoring software updates. »

Not sure I like the new cmd-left behaviour in Xcode 7.3. (Goes to first non-whitespace char instead of start of line.) More key presses now. »

Using Air Display to add an iPad Pro screen to my 11" MacBook Air is pretty awesome. (Slightly laggy but worth it.)


I’m finding Air Display performs much better than Duel Display for my admittedly strained setup. »

25 March 2016

I thought Xcode fuzzy suggestions would be too noisy, but it often finds useful matches and nearly always suggests exactly what I want. Nice. »

26 March 2016

iBooks in iOS 9.3 has immediate Apple Pencil highlighting (no need to hold still first). Much more natural and useful than Pencil scrolling. »

27 March 2016

Google blocks sign in in a foreign country and needs phone number to unblock. I’m using a foreign data-only SIM. Ugh. Hunts for a paperclip.

The lesson from my Google sign in challenges is to turn on 2FA immediately for all accounts. »

1 April 2016

It seems the prompt to use iCloud in iBooks after updating to iOS 9.3 is the only chance to turn this feature on.

I chose not to use iCloud because I was busy at the time. Now there’s no way for me to sync my books and PDFs. I’ll stick with Dropbox then. »

2 April 2016

Japanese train app Hyperdia offers a timed free trial on the App Store. Is this allowed now?

Do free trials violate 11.9 in the review guidelines? There are so many exceptions: renewing subscriptions, films… »

13 April 2016

Spend a while looking into Swift selector syntax not working with properties. Eventually found this proposal

As a workaround for now, I think I’m going to declare some read-only properties as functions instead. Seems least horrible. »

19 April 2016

Took over a month in Japan before I saw any mobile signal that wasn’t LTE. Now, having only 3G seems completely unreasonable. »

21 April 2016

I’m in Osaka now. Not sure yet if the internet is fast here, neither is


22 April 2016

Swift == lets you compare a SomeType to a SomeType? and returns true if the unwrapped RHS is equal to the LHS.

This makes sense: the LHS is implicitly wrapped, but seems uncharacteristically lenient and surprised me at first. »

24 April 2016

For all Objective-C code, time saved by avoiding nil bugs similar to time spent annotating and fixing silly warnings »

26 April 2016

I wanted to remove payment info on an Apple ID. Turns out you can’t do this on Have to use iTunes or iOS Settings.

Weird signing into a music app with a work account used for software development. »

So @remoteyear have addressed the most off-putting part of their application process.

This fee was previously non-refundable, and they don’t tell you about it until after passing initial screening. »

I get annoyed when JavaScript blocks browser and OS features. In this case Tender blocks Use Selection for Find.

10 hours later: Impressed with @tenderapp: I report an annoyance and it’s fixed and deployed by the time I wake up the next day. »

It seems @VirginAtlantic plays inaudible audio while you’re booking a flight. Suspicious.


27 April 2016

Uh oh. Received a spam email on my @FastMailFM account. I think that’s the first one, or if one came before it was so long I forgot. »

29 April 2016

The ultimate distraction free writing UI »

Fantastic. The latest version of @GitUpApp persists map view options. This will make every day a little bit better.

That’s these view options. I want them nearly the opposite of the defaults.


1 May 2016

I wonder how the Camera app went into this state. See HDR is flipped too. On dismissing it animated to the top-right


2 May 2016

Truncating domains to the second level can yield poor results.


6 May 2016

App Store review times have changed dramatically since I last paid attention. I assumed it still took around a week. »

8 May 2016

The way @Dropbox names non-shared conflicts is not very useful. ‘Douglas Hill’s conflicted copy’ isn’t more informative than ‘conflicted’. »

Q: Can you tell by looking if code used Stack Exchange?

A: If there’s a comment referencing a SE site, then yes. »

9 May 2016

Continuos. There’s a case for some real words to not be included in the spell check dictionary by default.


Lots of credit to @OmniOutliner for Mac for not shifting the main content when showing and hiding the left sidebar. »

11 May 2016

NSNotificationCenter docs: “The method specified by notificationSelector must have one and only one argument”

I often see that NSNotificationCenter API violated by using selectors without any arguments. »

13 May 2016

Just learned UITextView finds its height automatically if you disable scrollEnabled. Exactly what I needed. »

14 May 2016

I made an app to help avoid situations like this:

You know you can check spelling in Xcode with cmd-;

And the OS X spell checker copes with camel case fine. »

Had a nice time at @TokyoiOSMeetup today. Met lots of interesting people. »

One different thing is people in Japan use Facebook as a professional network and communication tool.

I use Facebook for real friends. Doesn’t work very well when you span both uses. »

16 May 2016

Long pressing links doesn’t work in a UITextView, UIWebView or WKWebView presented modally. I filed a bug report: »

When you rename a file in Xcode then Xcode loses its reference to that file. 💢😡💢😡 »

18 May 2016

The new iTunes for Mac uses real Cocoa menus. This is good.

Oh. iTunes still uses the old custom menus in some places though. 😐 »

19 May 2016

I’m at the end of two fabulous months in Japan. So culturally rich. Next up: heading to Berlin for UIKonf. »

20 May 2016


In Berlin, yay. Any recommendations for cafes with Wi-Fi to work in? »

21 May 2016

I sometimes thought about making a proper OO API on top of libdispatch. You could get most of the benefits in Obj-C. »

Looking forward to @olebegemann’s Berlin cycling tour tomorrow. It’s going to be hot! »

Can’t believe this shipped. Screen shot from @GitUpApp but I think the error is from further down the stack.


22 May 2016

English language thing that’s been bothering me lately: saying “amount of” for countable nouns. I think “number of” sounds much better.

Other people agree

The nicest Apple Store I’ve been to is the one in Harajuku, Tokyo. Huge glass front wall. The new SF store expands on that design.

26 May 2016

Thank you to @evenly_io for letting me use their office this afternoon. It’s an awesome team, and a nice working space! »

People complain about Facebook background energy use. There’s a handy switch in Settings. Easier than manual killing


27 May 2016

When you cmd-click a selector and Xcode jumps to a method in another file that happens to have the same name 😠💢 »

Leaving Berlin today. #UIKonf was the first conference I’ve been to. I had a really great time: awesome meeting so many nice people. »

Next up: a couple of calm weeks in the UK before jumping into the madness of SF for WWDC. »

28 May 2016

A friend has an event on Facebook and it seems to be erroneously in Pacific time. I’ve seen this before. Wonder what’s going on here. »

I know how to say gist, but it only just occurred to me that the words in “GitHub Gist” don’t begin with the same sound.

| ɡɪthʌb dʒɪst | »

29 May 2016

I’m at @sideprojectlon today. If you’re in London come along and code, learn from others, or just chat. »

30 May 2016

I wrote up my wish list for iOS 10 and OS X 10.12. Synchronised notifications, tones, faster share sheet, and more. Read more »

3 June 2016

Firstly: UTC is not a city.

Secondly: my real time zone is BST which is UTC+1

The weird time zone setting seems to be something that happens in @timberyarduk »

4 June 2016

Dark mode is indeed nasty in a light environment, but bright UIs aren’t nice in dark places. Adaptivity is king. »

Looks interesting: WWDC session 705: How iOS Security Really Works »

7 June 2016

I’m going to @SwiftLDN this evening. Look forward to seeing everyone. »

9 June 2016

Flying to San Fransisco tomorrow. Haven’t been to the US since I was pretty young.

So much stuff to do before going I hardly realise how exciting this is. Busy busy busy. »

13 June 2016

Xcode Editor Extensions »

Change of plan. Not going to Jillian’s because it not open until 5. »

14 June 2016

#WWDC16 Is anyone out not at the beard bash? »

16 June 2016

I would go so far as to check the base SDK setting into version control and make the build fail if it’s wrong.

I make iOS builds fail if the SDK is not as expected using »

Anyone have plans in SF not going to the bash?

2 hours later: I’m at the AltConf party and its pretty great. »

18 June 2016

PDF is hard

(use @PSPDFKit) »

I use QuickTime Player which can do up to 1.9x with audio if you option-click fast-forward. Want this on iPad. »

19 June 2016

Wrapped up my week in SF with an Oreo milkshake, mac & cheese burger, and cheesecake at Cheesecake Factory. Ready to leave now. 🇺🇸🇺🇸🇺🇸 »

Checking out an old branch with a new Xcode:



Amazing experience for my first WWDC week; so pleased I’m in this profession. Thank you everyone for being so nice. »

22 June 2016

Trying out this new user CSS rule on all pages. Light fonts are not appropriate for body text.

body {
    font-weight: normal !important;


25 June 2016

Bad stuff going on. I don’t think the social media echo chamber is helping me. »

Lineup of London meet ups this week: @sideprojectlon tomorrow, @SwiftLDN ok Tuesday and @NSLondonMeetup on Thursday. I’ll be at all three. »

Found @BBC Worldwide webpages ‘not accessible from the UK’ as they’re ‘not funded by the licence fee’. Makes no sense. Found a cached copy. »

29 June 2016

About to file a radar that the iTunes playhead does not move smoothly, but I suppose I ought to test on 10.12 first in case it’s fixed. »

9 July 2016

The notion that not using Auto Layout is ‘manual layout’ is nonsensical. »

20 July 2016

Some unexpected things found when looking into presenting action sheets and activity view controllers. Read more »

I looked into presenting action sheets and activity view controllers, and wrote about some unexpected things I found:

It all started with this

Then I saw this and couldn’t reproduce it.

Eventually found reading a property changed behaviour, so I wrote a Radar.

And in the end I could not reproduce what Pages did, so another Radar. »

22 July 2016

I just noticed out @tweetbot for Mac opens rdar links on Open Radar. Like this one: »

This is weird in @alfredapp. Fortunately I have my katakana flash cards handy, and it simply says imejioputeimu.

It’s a transliteration.

Ah, nothing to do with @alfredapp. Spotlight does this too. Must be because my language settings prefer Japanese to American or something. »

23 July 2016

Hey Siri, you have an off-by-one error. We’re now at the last day of this forecast and it’s not 22nd.

Siri is more varied on iOS 10 though and this does not seem to happen. »

25 July 2016

Updates to the @cambugs education apps I help make are out. Less than half-price this week. The first app is free.

We added example words to Cambugs Phonics so it’s easier to teach and learn correct sounds. »

31 July 2016

Waiting to take off to join the @PSPDFKit team for a sunny week near Barcelona. »

7 August 2016

End of a fun and useful week on the @PSPDFKit retreat. Was great to give an iOS workshop in a Catalonian castle.

I’m in Barcelona this week, then heading to Amsterdam for @nrdrlnds. »

8 August 2016

Swift 3: the type of NSURL.path is String? but the type of Foundation.URL.path is String. I can sort of see the logic, but ugh. »

11 August 2016

Whoops. Need to do some cleanup.


12 August 2016


Had a great week working as normal in Barcelona and also seeing lots of cool stuff. ❤️ remote work at @PSPDFKit. »

English language tip of the day: watch out for the difference between rouge and rogue. Unfortunately spell check won’t help you here. »

14 August 2016

Can’t pass LazyMapCollection to Objective-C API. Workaround is to resolve the laziness.


15 August 2016

I was surprised to find the Keychain seems to not work on the iOS 10 simulator. »

Annoys me a little bit everyday that once you highlight a row in a @github issues list you can’t unhighlight without reloading the page. »

16 August 2016

Excited to be in Amsterdam learning about Uber’s tech stack this evening. »

18 August 2016

Wishing there was a bit more Swift 3 documentation in between the overview and the long form

For example: closure arguments are non-escaping unless you say (at)escaping. I can’t find this documented on

Only the proposal »

19 August 2016

Am I missing something, or is going from searching for a contact with iOS 10 Spotlight to editing that contact extremely difficult? »

21 August 2016

Does anyone know the UX benefit of replacing every other letter with • on the right? Been baffling me for some time.


23 August 2016

🚄 Amsterdam > London

So much more comfortable than ✈️ »

24 August 2016 gives such pessimistic summaries. ‘Mostly cloudy starting in the evening’. I would say ‘Hot and sunny until evening’ »

28 August 2016

Doesn’t look like the lock screen physics parameters were tested holding iPad Pro like this.


31 August 2016

Safari’s auto fill always swaps the first two lines of my address. One of those things that makes computers look like idiots. Maddening. »

Rebirth! Unexpected, but Pastebot was one of my favourite iPhone apps back in the day.

Also, make speech synthesis (e.g. VoiceOver) say Pastebot. 🍝 »

1 September 2016

Eh, Pastebot for Mac is sandboxed, but can self-update. How does that work? »

Really excited about this one. »

All Wii-U games should mute the TV and send all audio to the GamePad when headphones are plugged in. Deus Ex HR does this. »

4 September 2016

A surprisingly upfront marketing email


8 September 2016

Top sites linked by @iOSDevWeekly. Good work @olebegemann @kharrison and @brentsimmons.


Delighted to see an app I helped make back in the day is now featured, right next to Mario.


Here’s some background on PSPDF Instant, our real-time collaboration platform, which I’ve been working on. »

Mapping from 360° camera for the #dysonHackathon. I wrote this as a Core Image kernel.


9 September 2016

Was a really great conference. Felt like I was back at university, mostly in a good way. »

13 September 2016

Some words are in the dictionary, but should be ignored for spell check because they’re almost certainly typos.

Today’s example: therefor. It basically means ‘there for’. Note it has a different meaning to therefore. »

18 September 2016

Not a fan of @github’s new reply buttons that look like text fields. Turns into a different text field when clicked.


[NSBundle bundleForClass:[self class]] is commonly done, but is a bad idea in a framework: your class might have been subclassed.

If subclassed, self will be a different class and you’ll get the bundle of the subclass. »

19 September 2016

In most cases when writing you can remove ‘just’ and preserve meaning while reducing petulance. »

20 September 2016

🙁 macOS Sierra isn’t compatible with my 2007 MacBook Pro. It’s been a great 9 year run. »

25 September 2016

TIL you can double tap images in iBooks epub books for full screen. Hidden gestures => poor discoverability »

26 September 2016

Looks like NSItemProvider’s loadItem still doesn’t work in Swift. Does some fancy reflection on the block. »

28 September 2016

Very neat debugging tip. »

30 September 2016

Great read on API design. Moving delegate senders to the end is better in Objective-C too. The thing holding it back is convention. »

5 October 2016

Today’s English word that ought to be flagged as a spelling error by default: wether — meaning: a castrated ram. »

10 October 2016

This trick to view the Safari Reader source code still works. Interesting to see what’s in there. »

14 October 2016

I would love to see map data extensions in Apple’s Maps apps to show cool stuff like this. by @cambecc


15 October 2016

The @Nintendo_NWR #NWRTelethon is live!

Use this to listen on iOS or without Flash: »

16 October 2016

So outdated…


People were having trouble loading items from NSItemProvider in Swift in 2014. This API is still broken in Swift. »

17 October 2016

This is why you should always specify isDirectory if you know. Only run that 5.3%. For fileURLWithPath and URLByAppendingPathComponent.


arc4random: A Replacement Call for Random 😂


deicide |ˈdeɪɪsʌɪd, ˈdiːɪsʌɪd|

  1. the killer of a god.
  2. a misspelling of decide. »

18 October 2016

See if you can spot Cambridge and Oxford. »

21 October 2016

Why are there so many planes but only five cows? »

27 October 2016

Thanks @Uber, I guess. I have no idea.


28 October 2016

Something to watch out for when refreshing collection view cells with prefetching enabled (the default on iOS 10). »

1 November 2016

Hooray! The end of force quitting Xcode when switching branches (because that was faster than clicking ‘read from disk’ a bazillion times). »

6 November 2016

Some potential customers will always rationalise not paying for software. »

22 November 2016

Stumped by my Mac failing to connect to anything using the AlphaSSL certificate. Affects all apps except Firefox. »

24 November 2016

Done with AKL ✈️ BKK ✈️ LHR. That was a lot of flying. Loved the Airbus A380-800 — quieter and smoother. »

“all wireless devices … broadcast all access point names it remembers each time it looks for a network” —

Past Wi-Fi network names make it pretty clear who I am, who I work for, and where I’ve been to. Creepy. »

26 November 2016

I’m seeing the same spam calendar invitations to my iCloud email address as this from a month ago. Poor job. »

27 November 2016

Why are we moving to wide colour displays when the only colours are blue, black and white?


Aha, dropping MagSafe would be well worth it if that let’s me use the same charger for MacBook, iPhone and iPad. »

That thing about Siri not remembering context.


28 November 2016

This is all very well, but how do you get rid of spam invitations that have already been sent? »

I did a test and found this DOES notify the sender of your existence. (Although I used a Mac rather than on iOS.) »

1 December 2016

I’ve been working on PSPDF Instant for a while now — the beta is out right now. It syncs documents like magic. »

New in the latest Slack on iOS: automatic time zone. Overdue, but very welcome.


2 December 2016

I updated former Apple sample code PDF Voyeur to build with 10.12.


3 December 2016

Received my £0.74 monthly invoice for backup to Google Nearline storage. I rate this good value. »

I’ve found no way to delete spam iCloud calendar notifications without notifying the sender. Tried temp calendars, Fantastical, Mac/iOS/web. »

8 December 2016

Along with the second beta of PSPDF Instant, our drop in framework for document collaboration. »

9 December 2016

And I was refactoring a shell script. Everything is fine! »

15 December 2016

The LG UltraFine 5K Display Apple showed off at the MBP event still ‘Available December’ and ‘Currently unavailable’

22 minutes later: Even the smaller LG UltraFine 4K Display is ‘Dispatched: 8 - 10 weeks’ »

23 December 2016

This is a nice trick. »

Pinch-to-PDF: the hot new gesture. »