Staff eng lead for Google Design on platforms. ex-: Robot/Pixel Heart, Google Maps iOS (v1), Nimbus, Three20, fb iOS, Sony, Waterloo. Opinions are my own. 🪶
Jan 21, 2022 • 18 tweets • 3 min read
SwiftUI is great until it isn’t, and I think the biggest limiting factor is that you aren’t able to control the realization of the DSL as UI.
Some thoughts on this as a 🧵
Purely declarative systems are only as powerful as the underlying mechanisms that realize them. It doesn’t matter how nice the DSL is if you can’t express a concept due to the underlying mechanisms.
Jan 20, 2022 • 15 tweets • 5 min read
Some of the things I've learned over my vacation while having to use my iPad Pro as my sole programming device for UIKit-based app development (RIP my 2019 macbook pro), a 🧵:
Swift Playgrounds, for a "first release", is pretty darn good.
It's clear the MVP for v1 was "idea to App Store", and all the parts are there to let you do that.
There's quite a few features Swift Playgrounds will need if it wants to go beyond that, though.
Jan 1, 2022 • 11 tweets • 4 min read
UIKit design fundamental #84
Switches are only meant to be used as accessory views in table view cells. In most other places, consider using a UIButton built as a "toggle button" instead.
Why?
It's actually a bit nuanced! A 🧵.
UISwitch controls are quite small by tap area standards, measuring in at 31pt tall.
Dec 4, 2021 • 24 tweets • 5 min read
Dark Mode, Bold Text, Increase Contrast, Dynamic Type, right-to-left languages, what do they all have in common?
They're often overlooked during testing.
A 🧵 on ways to improve test coverage for these important features — Dynamic Type alone is used by ~30% of iOS users!
"Combinatorial explosion"
That's usually the first thing someone says when you bring up automating tests for all of iOS' personalization features. And there's some truth to this concern: there are a *lot* of ways someone can personalize their phone to meet their wants and needs.
Nov 27, 2021 • 13 tweets • 4 min read
Tiny signs that, to me, show that an iOS app’s probably being designed and engineered primarily for cross-platform alignment at the expense of familiarity within the platform. A 🧵 of some of the more common ones I’ve seen lately in the wild:
Using other platforms’ back button icons instead of the standard back chevron.
Oct 7, 2021 • 14 tweets • 3 min read
This year my team shifted the open source Material components libraries for iOS into maintenance mode. Why?
A 🧵...
Since 2012 and the original launch of Google Maps iOS, my team has supported the creation and maintenance of shared UI components across Google. This was originally born out of a need to fill gaps in UIKit's design language.
Been digging into details about UIFont and Dynamic Type recently. Come swim with me in a sea of tiny details for a moment. 🧵
So generally speaking there's two canonical ways to get fonts that support Dynamic Type: preferred fonts and system fonts + UIFontMetrics.
The preferred font APIs are great if you just need default point sizes, but if you need different point sizes or weights, things get...weird