UIKeyCommand
Adding a new feature to a product is always a tradeoff. Will the added utility of a new feature be enough to offset the added complexity? Shortcuts would seem to side-step this issue—after all, they’re...
View Articleguard & defer
“We should do (as wise programmers aware of our limitations) our utmost best to … make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial...
View ArticleReader Submissions - New Year's 2016
With 2015 behind us and the new year begun, it’s time again for an NSHipster tradition: reader submissions! As inyear’spast, this installment is chock full of tips and tricks that can help ease your...
View ArticleUITextChecker
Make no mistake, a tiny keyboard on a slab of glass doesn’t always lend itself to perfect typing. Whether for accuracy or hilarity, anyone typing on an iOS device notices when autocorrect steps in to...
View ArticleNSHipster Quiz #8
This year’s WWDC edition of the NSHipster Pub Quiz was held on June 14th, once again testing the assembled developers with questions both random and obscure. We’re enormously grateful to Realm, who...
View ArticleNSRegularExpression
“Some people, when confronted with a problem, think ‘I know, I’ll use NSRegularExpression.’ Now they have three problems.” Regular expressions fill a controversial role in the programming world. Some...
View ArticleSwift Property Wrappers
Years ago, we remarked that the “at sign” (@) — along with square brackets and ridiculously-long method names — was as characteristic of Objective-C as parentheses are to Lisp or punctuation is to...
View ArticleUIStackView
When I was a student in Japan, I worked part-time at a restaurant — アルバイト(arubaito) as the locals call it — where I was tasked with putting away dishes during downtime. Every plate had to be stacked...
View ArticleCAEmitterLayer
Etymologically, confetti comes from the Italian word for the sugar-coated almond sweet thrown at celebrations, which, in turn, get their name from the Latin conficio:con- (“with, together”) +facio...
View ArticleFormatter
Conversion is a tireless errand in software development. Most programs boil down to some variation of transforming data into something more useful.In the case of user-facing software, making data...
View ArticleNetwork Link Conditioner
Product design is about empathy. Knowing what a user wants, what they like, what they dislike, what causes them frustration, and learning to understand and embody those motivations — this is what it...
View ArticlemacOS Accessibility Keyboard
For a while now, the distinction between “desktop” and “mobile” has become increasingly tenuous. As the computers in our pockets grow ever more capable, they more closely resemble the computers...
View ArticleIdentifiable
What constitutes the identity of an object?Philosophers have contemplated such matters throughout the ages. Whether it’s to do with reconstructed seafaring vessels from antiquity or spacefaring vessels...
View ArticleDark Mode on iOS 13
Today is Labor Day in the United States (and Labour Day in Canada), a day to celebrate the achievement of the workers who organized to bring about fair and safe conditions for employees — protections...
View ArticleApple Push Notification Device Tokens
In law, the latin phrasestare decisis (“to stand by things decided”) is often used to refer to the doctrine of precedent — the idea that, when deciding a case, a court should look to previous decisions...
View ArticleiOS 13
Apple announced a lot at WWDC this year. During the conference and the days that followed, a lot of us walked around in a daze, attempting to recover from have our minds “hashtag-mindblown’d” (#🤯). But...
View ArticleSwiftUI Previews on macOS Catalina and Xcode 11
Working on a large iOS codebase often involves a lot of waiting: Waiting for Xcode to index your files, waiting for Swift and Objective-C code to compile, waiting for the Simulator to boot and your app...
View ArticleMetricKit
As an undergraduate student, I had a radio show called“Goodbye, Blue Monday” (I was really into Vonnegut at the time). It was nothing glamorous — just a weekly, 2-hour slot at the end of the night...
View ArticleDevice Identifiers and Fingerprinting on iOS
For every era, there’s a monster that embodies the anxieties of the age.At the dawn of the Holocene, our ancestors traced the contours of shadows cast by the campfire as they kept watch over the...
View ArticleMessage-ID and Mail.app Deep Linking on iOS and macOS
Last week, we concluded our discussion of device identifiers with a brief foray into the ways apps usedevice fingerprinting to work around Apple’s provided APIs to track users without their consent or...
View Article