UIViewController Extension to Display Alert

Here are two extension functions you can add on UIViewController which make it easy to display alerts. One of the functions will show an alert with a single action option, and the other will show an alert with two options. Read more…

How to Use Combine with Network API Calls in Swift

The Combine framework provides an alternative to using callbacks or delegate methods when loading data from a web API. It’s actually based on a completely different paradigm: Reactive Programming. By using Combine’s publishers, you can observe for value changes and react accordingly (e.g. reload a table view, update label values, etc). Read more…

Is a Coding Bootcamp Right For Me?

A question I hear from people is whether or not a bootcamp is right for them. There isn’t a straightforward answer to this, as it really depends on the person. Some people are fine to learn on their own, and some get overwhelmed with it. Read more…

How to Avoid Print Logging in Production Apps with Swift

There are a few reasons it’s a good idea to print to the console only while developing. The most important of these is security. Very often projects will print JSON requests and responses for debug purposes. This logging may contain passwords, API keys or other sensitive information. A malicious actor who was intent on it, could make their way into low levels of the app and pull information that was logged. Read more…

Automatically Indent Switch Statement Cases in Xcode

One of the formatting defaults in Xcode I’m not a fan of is the lack of indentation for case labels in switch statements. There is a setting in Xcode preferences that will add an indentation before the case label. In my opinion this makes the switch block much easier to read. Read more…

Create iOS Build Configurations for Test and Release

Build configurations in iOS development allow us to create specifications about how we want our app to be built. This makes it easy to compile an app for a particular environment (test, development, release, etc). Changing property values and executing code conditionally, depending on the environment, becomes essentially automatic. We’ll go through the steps to set this up below. Read more…