About / Blog

Suggested Reading
Air Lookout 1.4: All The Complications, Hello freelance!, My Favorite Podcasts, Kawasaki KLR 650 Rebuild Compilation

Monday, Feb. 4th

Undo And Redo On iOS #


I would’ve bet my house — because even if you’ve never even heard of Pixelmator, you of course know how to invoke Undo and Redo in any Mac app: Edit → Undo and Edit → Redo, with the shortcuts ⌘Z and ⇧⌘Z. In fact, even their placement in the Edit menu is always the same, in every Mac app: the first two items in the menu.

iOS does in fact have a standard convention for Undo, but it’s both awful and indiscoverable: Shake to Undo

Personally, if I were designing an iOS drawing app I’d go the first route, and follow Apple Notes’s lead with “⟲” and “⟳” buttons.

Think about that: iOS user interface conventions are so shallow, so widely and wildly inconsistent, that an app proclaimed by Apple as the very best of the year has to start, as the very first thing you see when you launch them, by teaching you how to use Undo. That’s a sad state of affairs.

Consistency is my favorite thing about mac apps. A good mac app feels like a mac app. iOS, on the other hand, is a design and interaction playground (jungle? smorgasbord?).

I think some of this is because iOS was so limited interaction-wise when it first came out. Therefore, every designer and design team came up with their own creative solutions to extend the interactions on iOS. I also think it has to do with how software design has come to prioritize uniqueness* (sometimes above all else). The amount of bespoke design in an iOS app is much higher than mac apps. Often, this can confuse users (including me).

Procreate Blog:

We think Procreate's Undo gesture is one of the best things we've ever made. Apple highlighted it as an exceptional user experience when Procreate Pocket was lucky enough to win iPhone App of the Year 2018, and it's one of our most beloved features. It's simple, fast, and takes full advantage of multi-touch.

It's also one of our most-stolen features (over a dozen apps and counting), and we're fine with that. In fact, we’re giving it away. Seriously. We've put together a sample project covered by the Simplified BSD License, which means you can add to or modify it as you wish.

Ok. I will. Github: ProcreateUndoGesture

*Uniqueness is something all apps should find the right balance of. But, perhaps, undo gestures are not the right place for this quality.

Friday, Feb. 1st

Air Lookout 1.4: All The Complications #

Living The Dream: On an evening run, checking the air quality and listening to Accidental Tech Podcast

The idea of having Air Lookout complications on the Apple Watch has been a dream of mine since complications on watchOS were announced. I have had a prototype complication working since the summer of 2016. However, I ran into some strange limitations, quirks or bugs where I couldn't get the complication to update as reliably as I wanted.

An Air Lookout complication is unusually demanding in that there's a fairly large amount of background tasks that it has to do (ideally once an hour as that's when new readings are published by the Environmental Protection Agency), namely:

  • Update the user's location
  • Send a network request to update the air quality readings
  • And of course: update the UI/complication

I needed this to happen reliably without draining battery or degrading performance of the watch. I also wanted all of this to happen independently of the phone.

While it's still not guaranteed that any of these events will be triggered at a regular interval (documentation suggests at least 50 updates per 24 hours), it's a huge improvement over watchOS 4 and 3. I may go further into the technical details on another post, but prior to watch OS 5, it wasn't reliable enough for me to promise and ship this to users.

This is no longer the case. This is now all possible and, from what I have seen, reliable on watchOS 5. I have been testing these Air Lookout complications every day since the watchOS 5 beta was released at WWDC 2018 and I’m pretty happy with the results.

Four Examples of Air Lookout Supported Complications

Air Lookout supports every complication in watchOS5. There are 11 different complications in watchOS 5 and Air Lookout supports all of them. Additionally, many of the complications that support an image I dynamically draw a sparkline graph. For complications that don’t support an image, where there is space, I draw a unicode arrow to indicate if the air quality is trending up, down or staying the same. I have tried to have the information density as tastefully high as possible.

Here are all the supported complications:

  • Modular Small (supports: Sparkline Graph)
  • Modular Large (supports: Sparkline Graph)
  • Utilitarian Small (supports: Trend Arrow)
  • Utilitarian Small Flat (supports: Trend Arrow)
  • Utilitarian Large (supports: Sparkline Graph)
  • Circular Small (supports: Trend Arrow)
  • Extra Large (supports: Sparkline Graph)
  • Graphic Corner
  • Graphic Bezel
  • Graphic Circular
  • Graphic Rectangular (supports: Full-Color Graph)

In short: every watch face that supports 3rd party complications will support an Air Lookout complication.

Air Lookout Graphic Rectangular Complication

Graphic rectangular is the best complication for power users. This is the complication that I use every day. The thicker white line represents the Air Quality Index and the thinner light lines show the AQI of each individual pollutant. This has been really helpful to see if a change in AQI is due to improved conditions or temporarily missing measurements for pollutants (as shown in the first screenshot above). Most important to me is seeing if my local station is showing a change in air quality and the integrity of the reporting data.

Air Lookout WatchOS App

A Brand New watchOS App

Until fairly recently, the watch hardware wasn’t fast enough to process and display all the data and information that the iOS app could. The biggest thing holding this back was always the original (Series 0) Apple Watch. With watchOS 5 only supporting Series 1 and newer Apple Watches, this has enabled me to build a much more robust and rich watchOS app.

In fact, the watchOS app has a few features (such as sparklines for every pollutant) that the iOS app doesn’t have yet!

Air Lookout iOS App 1.4

A Refined iOS App

There are a handful of iOS app refinements in Air Lookout 1.4. This is all in preparation for a fairly big rewrite that I hope to get a good start on in early 2019.

  • Improved legibility for station names and page titles on moderate (yellow) background colors.
  • Added clarity if a station is not reporting PM2.5 or O3.

From now on, Air Lookout will require stations to report both particulate matter small (PM2.5) and ozone (O3) to be in the top 10 ranking.

This update also brings support to all the new iPhone hardware.

I hope you enjoy the updates as much as I do. I use Air Lookout every day and a lot of these features either came highly requested from users or improvements I have wanted for awhile. I’m really excited to continue working on Air Lookout, supporting more devices and continuing to add and improve features.

You can download Air Lookout on the iOS App Store for just $0.99.

If you enjoy it, please consider leaving a review. It really does help me.

Tuesday, Nov. 20th

Interaction Possibilities On The 2018 iPad Pro #

There’s a lot of really exciting and new interaction possibilities with the 2018 iPad Pro.

First, the easy addition and support of usb-c external monitors adds a whole new dimension for apps to explore. Imagine having a multitouch keyboard (the iPad) displaying any kind of possible UI that is also connected to a 5k display.

I made a quick demo that shows the specs and info of a connected external display (more on this later possibly…). It’s surprisingly easy and most of the external monitor support in UIScreen has been around since iOS 3.2. Funny enough, this was the first version of iOS that the iPad came with. However, I don’t think it has had much of a reason to exist (or developer interest) until the 2018 iPad Pro.

Second, the addition of a simple gesture recognizer on the 2018 Apple Pencil is interesting. Apparently there may be some private APIs that can detect more than just a double tap. Perhaps there will be more additions to this is future iOS versions?

I’m curious to see how well-adopted these features become from 3rd party developers.

John Sundell has posted a few demos on his twitter feed that I think are pretty interesting.


Here's another iPad Pro prototype! This time I'm using the Apple Pencil for text selection + copy & paste in a Markdown editor. I really love the idea of using the pencil as a dedicated pointing device - it adds a whole new layer of possible interactions


I added external display support to my iPad Pro Markdown editor prototype! While iOS has supported external displays for a long time, being able to connect one via USB-C is so nice - and as developers it gives us a whole new UIScreen to render on without delays!


I want to show you a super early preview of a new Imagine Engine feature I just started building with my new iPad Pro - live editing of a running game using the Apple Pencil! I think this sort of tools have enormous potential on the iPad - can't wait to build many more!

Wednesday, Nov. 14th

Which Complications Support TextProvider Tint Color? #

As I have been digging deeper into WatchKit and ClockKit for Air Lookout, I've had a hard time figuring out which watch complications support a tint color from CLKTextProvider.

I've made a small table below for reference.

Complication FamilyText Provider Tint Color?
Utilitarian SmallNo
Utilitarian Small FlatNo
Utilitarian LargeNo
CircularSmallNot Guaranteed1
Extra LargeNot Guaranteed1
Modular LargeNot Guaranteed1
Modular SmallNot Guaranteed1
Graphic BezelYes2
Graphic CircularYes
Graphic CornerYes
Graphic RectangularYes

1: Tint color is only supported if the watch face is configured to be multi-color by the user.

2: Tint color is not supported in the bezel text, but is supported within the gauge complication just as it is for Graphic Circular.

Friday, Nov. 9th

Regarding The iPad Pro 3rd Generation #

Arstechnica: Apple walks Ars through the iPad Pro’s A12X system on a chip

The iPad Pro outperforms every MacBook Pro we tested except for the most recent, most powerful 15-inch MacBook Pro with an 8th generation Intel Core i9 CPU. Generally, these laptops cost three times as much as the iPad Pro.

Shimpi offered a pitch for the GPU. “It's our first 7-core implementation of our own custom-designed GPU,” he said. “Each one of these cores is both faster and more efficient than what we had in the A10X and the result is, that’s how you get to the 2x improved graphics performance. It’s unheard of in this form factor, this is really an Xbox One S class GPU. And again, it's in a completely fanless design.”

Typically when you get this type of CPU and GPU performance, a combination of the two, you have a discrete memory system. So the CPU has its own set of memory and the GPU has its own set of memory, and for a lot of media workloads or pro workflows where you actually want both working on the same data set, you copy back and forth, generally over a very narrow slow bus, and so developers tend to not create their applications that way, because you don't want to copy back and forth.

We don't have any of those problems. We have the unified architecture, the CPU, the GPU, the ISP, the Neural Engine—everything sits behind the exact same memory interface, and you have one pool of memory.

On top of that, this is the only type of memory interface that iOS knows. You don't have the problem of, well, sometimes the unified pool may be a discrete pool, sometimes it may not. iOS, our frameworks, this is all it’s ever known, and so as a result developers benefit from that. By default, this is what they're optimized for, whereas in other ecosystems you might have to worry about, well, OK, sometimes I have to treat the two things as discrete; sometimes they share.

Apple has come to dominate in mobile SoCs. In a lot of ways, though, Qualcomm has been an easy dragon to slay. Should Apple choose to go custom silicon route on the Mac platform, Intel will not be quite as easy to beat. But the rapid iteration that has led to the iPad Pro's A12X makes a compelling case that it's possible.

Now, if only there were iOS versions of Final Cut, Xcode, and Logic. Powerful hardware is nothing without strong software support, and as we've noted in our review, that's the area where we need to see some improvement for the iPad Pro to truly live up to its considerable potential.

Arstechnica: 2018 iPad Pro review: “What’s a computer?”

With that kind of performance, the iPad Pro seems like it should make a strong case that it can replace powerful laptops as a designer, photographer, video editor, musician, or artist's primary on-the-go workhorse. Unfortunately, that incredible potential is hindered by insufficient software support.

But what about full versions of Illustrator or Adobe Premiere? Or Apple’s own Final Cut, for that matter? What about Xcode? What about Logic? What about… this could go on.

These things could be solved. Maybe—just maybe—this feat of design and engineering will inspire Apple’s iOS team to branch out an iPad Pro-specific version of the OS that takes off the training wheels. Maybe—yes, just maybe—this tablet will make such an impression that it draws developers to bring their pro apps to the platform, or to update the stripped-down versions they already offer to unleash their full power.

There’s a few additional items that I would like to add:


  • It really is as fast as everyone says.

Industrial Design

  • It really is as beautiful and well-crafted of a device as everyone says.

External Displays

  • The external monitor support is currently pretty bad. I plugged my 2018 iPad Pro into my 4k LG usb-c monitor to find that my iPad’s springboard and aspect ratio was mirrored to the display. This included large black letterboxing because the iPad’s 4:3 ratio couldn’t properly fill the LG’s aspect ratio.
  • I opened a few of my favorite (and popular) apps to see if there was external display support for any of them. None of them supported it beyond the basic mirroring. This is especially awkward when the onscreen keyboard fills a large amount of the external (non-touch) display’s screen.

Apple Pencil

  • The new matte finish and the flat edge make it considerably more enjoyable to use.


  • I wonder if software support would be better or could be improved to support the iPad Pro faster if users were not stuck in the habit of expecting all software to be practically free.


  • I love the new 12.9" form factor. Keeping the same large gorgeous display but shrinking the bezels and the device’s outer diameter is really nice. I would probably buy a 15" iPad if they made one (and I could afford one).
  • The 12.9 size, as with before, does really expose which app layouts are adjusted for the larger dimension. iOS and its apps aren’t ready for a 15” iPad let alone a desktop iOS device if there were to ever be one. If iOS is ever going to be a serious desktop replacement, the OS and apps need to be preparing for a 27" or 30" today.


  • 11/13/18—Added Hardware, Industrial Design and Size sections