The blog

Ideas worth
writing down.

Notes from the workbench: software architecture, functional programming, Swift, and the craft of building mobile products.

20 articles2017 — now
Concurrency 8 min read

Debouncing with Swift concurrency

When developing an iOS application, it is a common need to handle the frequency at which information is processed. For example, when making changes to a search field, we might want to request a remote API for each…

Concurrency 12 min read

AsyncSequence extensions

Swift 5.5 introduced structured concurrency, and with it came AsyncSequence, a new way to provide a flow of values over time. Wait, what? Isn't this what Combine is all about? From Apple, "The Combine framework provides…

language 9 min read

Equatable Errors in Swift

Error is a base type in Swift that aims to represent an issue happening in the application flow; thus, it is very common to use it as an existential type that will cross the application layers. With Error being a…

architecture 14 min read

A DSL for state machines in Swift

State machines are great tools to describe systems with a finite number of states. They are predictable and testable, which is something we praise for as developers. State machines can be defined in a pretty abstract…

architecture 13 min read

Functions as dependencies in Swift

Implementing an architecture within an application can be challenging. There are rules we can follow (SOLID, Clean Architecture) and patterns to guide us (MVVM, MVP, MVI, Redux, …) but sometimes, things we thought were…

architecture 13 min read

Introducing Spin

Introducing Spin, a universal feedback loop system in Swift. A Feedback Loop is a system that is able to self-regulate by using the resulting value from its computations as the next input to itself, constantly adjusting…

language 13 min read

Swift - An Aspect Oriented Programming Language ?

To answer this question, we must first understand what is Aspect Oriented Programming (aka AOP). I like to see AOP as a response to a certain kind of failure of Object Oriented conceptions.

architecture 11 min read

RxReduce - Reactive State Container Architecture Part 2

As we saw in “RxReduce - A Reactive State Container Architecture Part 1”, State is a central concern in applications. I strongly invite you to take a look at this first article. So far, we haven’t introduced the concept…

architecture 6 min read

RxReduce - Reactive State Container Architecture Part 1

State management has become a very popular concern lately in mobile applications. The idea of a state that should be the single source of truth within an application is quite attractive ! The views would only be a…

architecture 5 min read

Type safe network layer

There are plenty of posts about doing a network layer in a type safe way with Swift. No matter the used network API, those approaches all rely on returning a data type that is precisely what we expect. In this post we…

language 7 min read

A glance at conditional conformance

Swift 4.1 is available since a few days now and it comes with an interesting feature - Conditional conformance. This is a new tool for achieving Protocol Oriented Programming as well as API designing. This post is a…

uikit 6 min read

Elegantly chaining UIViewPropertyAnimators

Usually my posts are mostly about design patterns, software architectures (or RxFlow 😀), but this time it will be different and frankly I didn't think I would write about this kind of topic. But I think I have something…

tips 8 min read

Protocol Oriented Tips For MVVM in Swift

Hi folks. Lately MVVM has become some sort of standard as an architecture for iOS apps. It offers a good separation of concerns, a good way to format data and great view binding mechanisms with frameworks such as…

open source 8 min read

RxFlow Part 3 - Tips and tricks

This is the final chapter of our journey within RxFlow. I’ve already exposed all the key features/principles of the framework in these 2 previous parts, let’s dive into some tips and tricks I used thanks to Reactive…

open source 10 min read

RxFlow Part 2 - In Practice

A few weeks ago I introduced in this blog an iOS framework called RxFlow. I’ve been working on this framework for several months, and it is now ready to be used. If you haven’t read it yet, I suggest you take a look at…

tips 4 min read

Versatile Namespace

In Swift, some APIs such as RxSwift use a technic that confines the code they’re exposing in a dedicated namespace. In this post we will figure out how this is done in the most generic and versatile way.

tips 8 min read

Type erasure in Swift

With Swift, you can define protocols by associating one or more generic types. These types are defined using the associatedtype keyword. The name “Generic Type” is a bit usurped here, we should talk about a placeholder…

open source 5 min read

RxFlow Part 1 - In Theory

This is a first article in a series that will be the heart of this blog for a while. I’m going to introduce RxFlow - a framework of my design implementing Reactive Flow Coordinator within iOS applications. RxFlow relies…

open source 1 min read

EZStream

EZStream is the easiest way to stream your device camera in any web browser.