-
Resolving Conflict with Empathy
Note: I wrote the following note over a year ago, but only recently decided to send it to my newsletter. I’m not sure why I sat on it so long. Your [respectful] thoughts are welcome on Twitter. Empathy doesn’t always come easy, but it goes a very long way toward building trust with those around…
-
Finding Dependency Cycles in iOS Builds with llbuild UI
Did you know the swift-llbuild project contains a debugging tool called llbuild-ui that can find dependency cycles in your iOS build? To try it: Enable the New Build System (In Xcode it’s under File, Workspace Settings) Build your project Open the Derived Data directory on your machine and find the build.db file generated by the…
-
Diagnosing “Dependency Cycle Between Targets” in Xcode 9’s New Build System
Xcode 9 includes a new build system that can substantially improve build times. The new build system is more strict about build issues, but some of its diagnostic output can be difficult to reason about. One difficult to debug error is “Dependency cycle between targets,” which may appear during incremental builds where you may not…
-
Implementing Rich Notifications in iOS 10
I’ve spent a bit of time with notification extensions in iOS 10 and they’re pretty great. If you’re not familiar with notification extensions, check out Apple’s Introduction to Notifications talk before reading this post. Anywho, notification extensions improve your app’s notification experience giving you a chance to mutate notification payloads, download and display media, and…
-
GCD: Using Dispatch Groups for Fun and Profit
I’m republishing this article here so I can reference it later. I recently needed a way to perform an unknown number of asynchronous http requests and wait until they were all done before proceeding. dispatch_groups are a neat feature of Grand Central Dispatch (GCD) that made this easy to do. There are a couple of…