Xcode configuration for multiple environments

I recently stumbled upon yet another article that explains different techniques to configure an Xcode project for multiple environments. Most of the articles out there propose the same solutions and...

Linting licenses

Dependencies are at the core of programming. In iOS, we often use Cocoapods to manage dependencies in our projects. But if we are not careful, we can add a...

Make impossible states impossible

Swift is a strongly typed language and in this article I want to focus on how to strengthen some part of our code using Swift types. Optionals Optionals are...

Visit Monitoring

As Covid-19 started to spread, we tried to find a way to help as developers, with the tools at our disposal. One idea was to use out of the box...

Using intents to leave the app

In an iOS application, we often have to redirect the user outside of the application for a variety of reasons: calling a number, sharing content, writing an email, etc. UIKit...

UIAlertController with Function Builders

I always found the UIAlertController API too verbose. You first have to create an instance of UIAlertController, then create multiple instances of UIAlertAction and...

Github Actions

I recently wrote a public pod to share some common classes in my team. Since Github Actions came out I never had the chance to test them. So...

Property based testing

You will always hear that writing tests is a good thing. But are you 100% sure about the pertinence of your test suite? What if you test only edges cases...

UIView styling with functions

Today I want to talk about UIView styling. The common approach when we want to customize the display of native UI controls (for instance UIButton or...

Swinject in practice

I guess you already have heard of Dependency Injection. Dependency injection (DI) is a software design pattern that implements Inversion of Control for resolving dependencies. On iOS, one of the...