Congratulations to our client Bleacher Report for unseating ESPN as the top free Sports app in the app store charts!
If your app tracks the user’s location, you may notice when you run it in iOS8, the location tracking alert asks for permission to “access your location even when you are not using the app“. If your app only accesses the user’s location when the app is running, you can present a less scary message […]
Shannon Levis and Alli Brian, Why People Are Turning Off Push: If you are in an industry that suffers from low push opt-in rates, can you overcome this inherent user bias? There is a preconceived notion that these kinds of apps only send self-promotional push notifications, and users have a hard time seeing their value […]
The projects we work on generally have have dependencies on one or more (often several) open source projects, including our own libraries. We’ve always managed those dependencies using git submodules. As submodules have some quirks, a few projects have cropped up trying to make dependency management easier. The one that’s gained the most traction is […]
We like to get functional prototypes to stakeholders as early as possible in the development process. Prototypes help frame the discussion by putting features in context, helping teams make better design decisions and uncovering edge cases. In this excellent piece on story-centered design, Braden Kowitz describes an approach that moves that kind of discussion back […]
I find myself doing more and more dynamic UI layout in iOS apps these days. When elements of a UI need to resize to fit their contents, or move to accommodate other elements, the layout code can get complex and verbose. We’ve developed a set of Objective-C UIKit macros that help make this code more […]
At Two Bit Labs we do a fair amount of unit testing. In places where we use singletons we use a variation on the the Objective-C dispatch_once pattern of thread safe singleton creation. This variation supports resetting the singleton or replacing it with a mock object. That way in our unit tests we can do […]