The online home of John Pollard

My WatchOS 3 Wish List

There have been lots of posts recently about what people would like to see in WatchOS 3, so I thought I’d add a few thoughts of my own.

A Brief Review

Mostly I’ll echo what it seems most Apple Watch owners say - they love it despite its obvious limitations. The apps are very slow to load, and despite changes to run apps natively on the device in WatchOS 2, that didn’t make any difference at all.

However, the really useful things are great:

  1. Fitness Tracking - I’ve had a FitBit before, but the additional information from the extra sensors on the watch make a big difference. I love both of David Smith’s excellent Activity++ and Pedometer++ apps for tracking standing/exercise/calories used and step tracking.
  2. Notifications - once the settings have been tuned so as not to overfire, having a subtle Haptic tap on your wrist for important notifications is really useful. You really do learn to recognise the subtlely different taps for different alerts, and it’s so much handier than having to keep getting your phone out.
  3. Music control - the one Glance I actively use is “Now Playing”, which lets you control the music playing on your phone (like the controls on the phone lock screen) - so much more handy when commuting.
  4. Watch face complications - the most useful feature of all, seeing quick pieces of useful information at a glance is fantastic and very powerful when done right.

The one improvement I’d love to see

Obviously I’d love to see general improvements in speed and battery life. Charging the watch every night, like I do my phone, is really no big deal, and I often have over 50% battery life left at the end of the day.

What I’d really love to trade off is some of the battery life for extra background processing to keep the watch face complications more up to date.

As I said above, the complications are possibly the most useful addition 3rd party apps can add, but very often the information shown isn’t always up to date.

I know from my own app that complications are only update on a slow background schedule. Seeing as a watch should by definition be all about timely information, it’s really sad that the complication info can’t be fresher.

Finding a way to do that would make such a difference - I’d love it if WatchOS 3 can do that (especially on the existing hardware so I wouldn’t have to buy a new watch!)

Swift and Watch Performance Improvements

One slightly strange and irritating issue with Count The Days Left is the app has a small but noticeable delay on startup.

I added a ton of instrumentation to help figure out what was going on, and was then able to make some micro-improvements which have helped a little. However this small decrease in loading time makes the app FEEL a lot quicker on startup.

Changes made:

  1. Move the Watch communication initialization code off a background queue onto the main thread
  2. Removed an additional and unnecessary call to update the badge number
  3. Moved updating of control settings into viewDidAppear() from viewWillAppear()
  4. Optimised watch app view updating logic to do minimum work necessary

The first point was unexpected, but after measuring the actual speed of the code the overhead of spinning up a new thread and running code in parallel was not actually worth doing. As ever, measurement trumps expected outcomes.

The third point clearly didn’t really any difference to the amount of code to be run, but perception is all and it feels a little faster.

The final point is obvious - the Apple Watch is very underpowered, so doing the absolute minimum amount of work at all times is essential.

Summary

The startup time is still a little slow - and my unproven suspicion is that Swift apps take a little longer to initialise in general anyway - but I’m a lot happier with it now.

As ever, more details can be found on the GitHub repository where all the code for the app lives.

I’ve just submitted v2.0.3 to the App Store for review, so unless we have any shenanigans as before hopefully it will be available in the next few days.

Daily Optimiser v3.0.1 Available

The latest version of Daily Optimiser - v3.0.1 - is now available on the App Store.

The release notes sound like the standard big company response:

A few small bug fixes and minor performance improvements

However to be honest that’s all I’ve done! I’ve fixed a few minor UI issues I’d missed in the original 3.0 release, and removed a little bit of code to make things marginally quicker.

Enjoy!

Web Server Consolidation

I’ve got multiple sites that I develop and host - sites for my mobile apps, my artist friend Josie’s website, my company website and other bits and pieces I’ve built over the years.

For a couple of years I’ve using A Small Orange as a hosting service. They’ve been very good, and if you’re looking for an inexpensive shared host with excellent reliability, I’d definitely recommend them.

However my yearly renewal was due, so I decided to take the plunge and move over to running my own virtual server with Digital Ocean.

I’ve been doing a lot more work on Unix systems recently, so I’m reasonably confident I mostly know what I’m doing. There are lots of useful guides at Digital Ocean to help you out, and I now have a working nginx server serving all of my sites, plus PostFix running as a mail forwarder.

I also ported my company website from a Python Google App Engine site to a static Jekyll one, and am hosting this on my own server now too.

I’m very happy I’m now in complete control of serving all my sites exactly how I want to.

Also it was quite fun setting up an Ubuntu server up from scratch exactly how I wanted it. I wouldn’t have said that a few years ago!

A Minor Change and we're through the App Store Review

So I finally made some progress after my rant last time and I’ve finally released the latest version of Count The Days Left to the App Store.

What I changed

The “problem” was that the watch complication was deemed too similar to the battery complication. This was because it’s using the CLKComplicationTemplateCircularSmallRingText template that is one of the few - and pretty restricted - template options available to a developer

Here’s a screenshot from my watch, with the battery complication in the center and the “problem” Count The Days Left one on the right:

Watch screenshot

I decided to make the most minimal change possible - simply change the style of the progress ring from Closed to Open

If you look closely, you can see the massive difference this made below:

Watch screenshot

I think this is actually a better choice, as the very small “open” gap at the bottom of the circle matches the main UI.

Anyway after a worrying delay of 3-4 days while the app was “In Review”, the change was accepted and version 2.0.2 has FINALLY been released!

Moral of the story is …

Never underestimate how crazy the app approval process can be!