Category: Programming
-
Approaching Code Review
Code review is great way to maintain and improve your team’s codebase, and like a lot of team process having an intentional, positive culture around it makes it better. One of my earliest patches at Twitter was adding a short-lived token-based system for logged out requests (think login, signup, etc.). The patch itself wasn’t so…
-
Software Engineering Isn’t Magic
The other day I was chatting with a friend who is both very competent and early in their software engineering career. They had noticed it sometimes took others less time to solve problems than it took them, and when they’d ask for help, these folks knew the answer or could often point them in the…
-
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…