Firefighters are portrayed, quite rightly, in our society as heroes. They courageous run into dangerous situations and save people. However, let's think about why we need firefighters…
We are often told that no matter where we end up, we shouldn't forget where we came from. Usually, this applies to people, but it can also apply to code. Specifically, code that runs on a different queue from the queue it was scheduled on…
Every app has at least one flow - a sequence of screens that allow the user to complete a given task, i.e. read a news article, post a status update, favourite a photo, etc. Most apps have multiple flows…
A really common task in iOS development is to validate input from a form. But just because something is common doesn't mean it is easy…
Growing up I watched a lot of Hollywood movies that involved some sort of computing and while some of those portrays left a lot to be desired in terms of realism, one common theme in those movies was what I call ghost typing 👻…
Interviews are a necessary evil. They allow the interviewer a chance to determine if the interviewee has the skill set and mindset to be successful. They also allow the interviewee to determine if the company would be an place…
In our industry, data-driven decision making has really taken root. We are increasingly interested in the actions that our users are performing inside our apps. The aim being to get users to buy more products, share more photos, open one more post, etc - generally just stay in our apps for longer…
Most iOS apps will have a networking component, in previous posts I've written about treating the network call and parsing as one task [https://williamboles.com/networking-with-nsoperation-as-your-wingman/] or how to cut down on unneeded network calls by coalescing [https://williamboles.com/remo…
For years I've used Preprocessor Macros in Build Settings as a convenient place to store configuration specific details - this allowed different schemes to have different settings without code changes…