Michael's Blog

Stocks App, Seriously?

While I’m getting ready to dive into the real keynote from a developer’s perspective, the platforms state of the union, here’s my quick take on this morning’s keynote.

No Device Left Behind

iOS 12 will support all the devices currently supported by iOS 11, and Apple say they’re specifically focusing on performance improvements for those old devices. Great news for members of the real world who don’t get the highest end new iPhone every single year. This, along with apple again showing how quick they are to get everyone to update, should help us drop older OSs sooner as we won’t fear cutting off users of popular devices.

ARKit 2.0

This saw my first wishlist item ticked off with 3D object detection, but even more exciting is the multi-user shared experience support that was demoed. That could be a game changer for AR.


There had to be big news about Siri and thankfully there was. Shortcuts for Siri are more like defining a macro rather than Siri understanding the real meaning of your words which was SiriKit’s original pitch, but it will enable us to bring Siri to almost any app. If we take the example of a mobile network self care app, we can now create a shortcut to say ‘check my balance’ or ‘top up my credit’. Surfacing those shortcuts on the Siri watch face will be especially powerful I think.

The shortcuts app for chaining together multiple actions from different apps looks like what we’ll be getting out of the Workflow acquisition. It looks promising, will definitely be one to dig into more a bit later.

Managing Your Screen Time

Surfacing data about how much you’re using your phone and empowering you to take control of it is something the company I work at, Marino Software, helped pioneer with the Vero app and it’s great to see Google at I/O and now Apple bring system level controls for this.


New abilities for interactivity in notifications look great. More and more I’m coming to think that notifications are the watch apps we want, not actual watch apps. I like the idea of getting a low balance reminder and being able to select an amount and top up all from a notification on your watch, that’s the sort of thing we’ll be able to bring on watchOS 5.

WebKit was announced for watchOS, which may seem like sort of a strange one (who wants to read a web page on their wrist?) but there have been times when I’d have loved to be able to follow a link or have a quick read of something that it was a pain to go take out the phone so I think this is a win. Could we have WebKit on tvOS next please?

Another Wishlist item that got checked off was better audio support, looking forward to improved apps from Overcast and Castro.

Apple TV

Speaking of tvOS, there was a whole section on it … but I can’t remember them showing off anything by way of new developer features, I’m hoping for more in the state of the union for sure.


I couldn’t believe the stocks app was getting so much air time in the keynote and was worried at first that they were really struggling for filler but in the end it all made sense, they’d ported these apps from iPhone to iPad and the Mac using the much rumoured but even after today not terrible well understood new cross platform project. I strongly believe that apps on different platforms should have different UIs and I really don’t want to see a bunch of iOS apps showing up on Mac, so I’ll need to see more detail on this, probably at next years WWDC before I’m sold on it being a good thing.

Dark mode on Mojave looks great, I’m generally not a fan of dark modes and I like my white background and dark text in Xcode but I know a lot of people will love this, and it looks like they done a good job on it.

Being Next Door

I’ve watched this from next door at The Next Door conference, a much more relaxed atmosphere, with much less (no) queueing, it was much cheaper, the lunch was much nicer, and it was easier to get talking to new people. It’s been great so far and I’m looking forward to the rest of the week here.

I’m really glad I’m here, but I’d still rather be at WWDC!

Apple Does Not Share Your Face Id Data

Develop Apple Watch Apps

Free Unlimited Icloud Storage

Avaudioplayer Smart Speed

Following Humans

I used to follow blogs, almost exclusively tech or programming related blogs. There was a great RSS reader, Google Reader, that made it super easy. When that went away in 2013 I tried a bunch of alternative readers, some of them were ok but ultimately I decided to give up on consuming RSS feeds and switched to twitter. I’d already been using twitter for years, mostly just following real world friends that hardly tweeted and occasionally tweeting into the abyss, so changing how I used it wasn’t a big decision. My plan was to treat it just like a feed reader so I followed the accounts of several blogs that I was reading at the time and if a blog I wanted to keep up with didn’t have a dedicated twitter account for posting links as they went live, I followed the author instead. I’d changed how I consumed blogs - getting almost exactly the same content, just in a crappier interface. But a small part of what is good about Twitter had seeped in, which eventually would dramatically change what I read online entirely, and make twitter far more valuable for me than a mere feed reader.

It was those few annoying bloggers that didn’t have an account for their blogs. The tweets of those authors ended up being far more interesting than their blog posts alone, as they shared links to other people’s blogs, to news articles, comics, photos or their own 140 character thoughts. People I’d followed for their very narrow writing on a particular technical subject, it turned out, had things to say or share about other (sometimes interesting, sometimes baseball related) topics. Now the list of twitter accounts I follow is almost entirely made up of humans.

When I followed blogs, what I read every day never really changed. Now, from day to day, what I read can be dominated by entirely different subject matters, or not dominated by any subject in particular. I’ve learned so much that I otherwise wouldn’t have, and see and understand more of the world than I ever could have by reading proper news sources. Sometimes I end up not getting my techy blog fix from twitter at all, but that’s ok, I’ve a handful of my favourite blogs bookmarked that I visit on such occasions, and sometimes there are more important things going on in the world anyway.

Simulating Universal Gravitation With Spritekit

Detect Which Complication Launched Watchkit App

Deprecate Uilongpressgesturerecognizer

Is This The Apple Car?

The Apple Car


Still, it’s fun to speculate.

My guess is that you won’t go to a showroom to pick out your Apple Car, you won’t take one for a test drive and you won’t leave it charging in your driveway at night. Instead, you’ll just ask Siri for one when you’ve got someplace you need to be.

It’s not just another ride sharing service, nor mere self driving Uber that I’m imagining. I see a car personalised just for you, customised in app while it was on the way: selecting exterior colours and adornments to match your style, interior lighting to suit your mood, configuring a sporty or relaxed ride, with your playlist starting as you open the door, and all set to be driven by an overly entusiastic t-shirt clad human driver (high fives available on request) or by you if you prefer.

If, as many speculate, the future of cars doesn’t involve owning your own or even driving all that much, the most interesting innovation in cars might be how to continue to allow people to express themselves (and show off their wealth or various other kinds of superiority) through their car. You wouldn’t be seen dead in some random could be a Toyota Lyft - no, you’re picked up in the electric Apple Car (not the Sport) with rose gold trim, you drive yourself because you’re into that sort of thing, and you adorn the outside with retro geek stickers and funny gifs.

Basically it’s the automotive version of the messages app from iOS 10, app platform and all.

(Or, perhas more likely, it’s just a regular car but a bit fancier and more expenseive. The edges will be unapologetically chamfered, the range lacking compared to a Tesla but forgivable for some reason and the biggest ovation of the introduction will be when Phil Schiller shows us how the wipers won’t stop halfway across the windshield if you turn it off in the rain.)

Marge Be Not Proud

A lot of people like to rationalise why they block ads on the web. It’s the trackers, the load times, the lack of a contract …. Here’s why I block ads:

Because ads suck.

I don’t want to pay for the content I read online with my attention, and fortunately I don’t have to. I also fast forward through TV ads, turn off the car radio during breaks and skip podcast ads unless it’s also a toaster oven review.

Screen capture from The Simpsons eipisode: Marge Be Not Proud

I do whitelist some sites that I both read with regularity and that have less sucky ads. For some sites if they detected my blocker and asked for some money instead I’d happily give it, but for most I wouldn’t.

If all this means some websites I read have to die, I don’t mind much.

Cheating On Swift Substrings

Death By Date Format String

Swift Optional Optionals

Do You Even Swift?

Just some thoughts on how I came to go all in learning Swift at home while still advocating Objective-C as our primary language in the office.

Taylor Swift, flexing massive arm muscles

When Apple annouced Swift at WWDC I was super excited at the chance to be in on the ground floor of a new and modern language, one that I expect to become widespread and long lived. I could fastrack to greybeard-dom and be one of the crusty old devs that was there at the beginning1. But of course there were projects to get done and old apps to support. Swift is sold as easy to integrate into existing projects and easy to interoperate with Objective-C, and it is in many respects, but the few tries I gave it brought frustration in the shape of Xcode crashes, debugger bugginess, confusing compiler errors and the additional cognative load that comes with juggling two languages at once. So Objective-C kept its place and while I toyed with the idea of writng a class or two in Swift I never bothered, it didn’t seem worth the hassle right now and I wasn’t missing out on much.

Fast forward a few months and, through no endevour of my own, I find myself in the middle of a large Swift codebase, helping out on the team that’s writing an app that will be responsible for selling flights and checking in passangers for one of the worlds largest airlines. I’ve been working full time with Swift for about a month now and I’ve been pleasantly surprised at how productive I’ve been with it. There are still a whole lot of Xcode frustrations for sure, but not so many more than any developer who jumped into Storyboards or Auto-layout when they first emerged will be accustomed to and obviously each release should improve the situation.

It only took about a week before Objecive-C became the wrong looking language, and the couple of side projects I work on at home have already been converted to Swift. I really like the language and I’m excited about it again just as I was when it was first announced and I expect most code snippets on this blog to be Swift from now on. But the interest in the new language, and my desire to use it personally still wouldn’t change my mind on the decision I made last summer, the next big project for a client that I choose the language on will not be Swift. The decision making process here is simple2 Swift is young and evolving rapidly and during this Swift version 1.1 project Swift version 1.2 appeared. For science I downloaded the Xcode beta and opened up the project - no surprises for guessing - it doesn’t build anymore.

There is a handy Edit > Convert > To Latest Swift menu option in Xcode, but the number of build errors before and after was roughly the same (interestingly you can run it multiple times and get a few more to go away) and while some of the remaining ones are simple renames and a lot of changing as to as! (why the tool couldn’t find all of these I don’t understand) there are a few that will require a bit more investigation.

Maybe there’s only an hour in fixing up all these build errors, but it would warrant another round of testing and I suspect at least one or two additional bugs would emerge. Not a huge problem for this particular project which will be actively worked on for the foreseeable future, when each Swift version can be migrated to in turn, but for the kinds of projects I often work on there could be a couple of years between releases. In that time Swift will probably change several times, perhaps in significant ways, and we’d likely be required to use latest Xcode versions to submit to the App Store for even the most minor bug fix. Swift could be the thing that turns an essential bug fix release from a simple 1 day turnaround to a weeks long nightmare.

  1. As opposed to joining the Objective-C party the same time as the iOS gold rush kids. 

  2. Which doesn’t nessecerily make my decision correct of course 

Orm On Fmdb Sqlite Ios

Upload Xcode Bot Builds Testflight Launchd

Dynamic Image Lighting Coreimage

Uiimageview Animation Performance

Create Rope With Uidynamics

Storyboards Multiple Developers Git

Drawing Physics Spritekit

Uibezierpath Cashapelayer Fun