Message-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 use device fingerprinting to work around Apple’s provided APIs to track users without their consent or...
View ArticleSecret Management on iOS
One of the great unsolved questions in iOS development is, “How do I store secrets securely on the client?”Baked into this question is the assumption that, without taking proper measures, those secrets...
View ArticleKeyValuePairs
Cosmologies seek to create order by dividing existence into discrete, interdependent parts. Thinkers in every society throughout history have posited various arrangements — though Natural numbers being...
View Articlebless
This Thursday is Thanksgiving in the United States, a holiday in which we’ll gather together to cultivate and express gratitude against a backdrop of turkey, mashed potatoes, and origin-myths of...
View ArticleAVSpeechSynthesizer
Though we’re a long way off from Hal or Her, we shouldn’t forget about the billions of people out there for us to talk to.Of the thousands of languages in existence, an individual is fortunate to gain...
View ArticleSwift API Availability
Code exists in a world of infinite abundance. Whatever you can imagine is willed into being — so long as you know how to express your desires.As developers, we know that code will eventually be...
View ArticleObjective-C Direct Methods
It’s hard to get excited when new features come to Objective-C. These days, any such improvements are in service of Swift interoperability rather than an investment in the language itself (see...
View Article#pragma
#pragma declarations are a mark of craftsmanship in Objective-C. Although originally used to make source code compatible across different compilers, Xcode-savvy programmers use #pragma declarations to...
View Article@
Birdwatchers refer to it as (and I swear I’m not making this up)“Jizz”: the general characteristics that form an overall impression of a thing.Walking through the forests of the Pacific Northwest, a...
View ArticleRawRepresentable
Programming is about typing. And programming languages are typically judged by how much they make you type — in both senses of the word.Swift is beloved for being able to save us a few keystrokes...
View ArticleSwift Development with Visual Studio Code
Visual Studio Code (VSCode) is a cross-platform text and source code editor from Microsoft. It’s one of the most exciting open source projects today, with regular updates from hundreds of contributors....
View ArticleLanguage Server Protocol
In October 2018, Apple announced on the Swift.org forums that it was starting work to adopt the Language Server Protocol (LSP) for Swift and C languages.At Apple we are making it a priority to support...
View ArticleStatic and Dynamic Callable Types in Swift
Last week, Apple released the first beta of Xcode 11.4, and it’s proving to be one of the most substantial updates in recent memory. XCTest got a huge boost, with numerous quality of life improvements,...
View ArticleXcode Build Configuration Files
Software development best practices prescribe strict separation of configuration from code. Yet developers on Apple platforms often struggle to square these guidelines with Xcode’s project-heavy...
View ArticleSwift Logging
In 2002, the United States Congress enacted the Sarbanes–Oxley Act, which introduced broad oversight to corporations in response to accounting scandals at companies like Enron and MCI WorldCom around...
View ArticleContact Tracing
An ounce of prevention is worth a pound of cure.Early intervention is among the most effective strategies for treating illness. This is true not only for the human body, for society as a whole. That’s...
View ArticleCross-Pollination
April is the month when apple trees start to bloom up here in the Pacific Northwest. All across Oregon’s Willamette Valley, from Portland stretching south to Eugene, long-barren branches sprout white,...
View ArticleWWDC 2020
Like everything else in 2020, this year’s WWDC had to be a little different if it was going to happen at all.When Apple first announced that the conference would be fully remote, nobody knew what that...
View ArticleAs We May Code
Chris Lattner often describes LLVM as a process of lowering.You start at the highest level of abstraction, source code written in a programming language like Swift or Objective-C. That code is parsed...
View Articleop run
.env files. If you’ve worked on a web application, you’ve probably seen one.While they certainly get the job done, .env files have shortcomings that can create friction in development workflows.We’ve...
View Article