7 reasons why every software engineer should write articles

This article is my 100th article since I started, back in January 2020. It also marks another personal achievement: starting from January 2022, I’ll be working for Meta as a Software Engineer. I’m both excited and scared about this new adventure.

To celebrate these milestones, I wanted to share what…

How to implement pervasive features without sweeping changes

When developing an app, there are non-functional requirements that may affect the whole codebase. Consider logging, for example. To inspect an error, we could need to add logs in many different components to track the current state and what the user was doing.

Different concerns share the same pervasive characteristic…

How to use generics and value types to reduce boilerplate in previews and other protocol implementations

One of the most annoying things in iOS development when working with UIKit is the slow feedback loop between implementing a piece of UI and seeing it on screen.

When developing with UIKit, especially when working with code-first UI, we have to write all our UI code, before we can…

Thread-safe resources testing and actors

When working on big apps, we often need to share data among different components. Whether they are modules or just screens, they could need to read and write data from the same source.

This introduces a problem: if the same date structure is used in different threads, we need to…

How to keep your app state updated with SwiftUI views

Mutable state is the root cause of issues in several apps. It generates inconsistent states that lead to wrong displayed information or, in the worse case, to crashes.

We face this problem when two different components use the same information with different representations and, if the user updates the information…

Shortcomings of the default SwiftUI dependency injection mechanism

One of the main topics to master to create scalable and maintainable applications is Dependency Injection. SwiftUI comes with a comfortable API for injecting dependencies: the EnvironmentObject API, composed of a property wrapper and a view modifier.

Despite these APIs being very comfortable, they have several limitations that make them…

Adapting your network layer to different interfaces

This year, Swift introduced the new async and await keyword. With them, we now have three ways to perform network operations:

  • By using the old callbacks model
  • By using Combine
  • By using async-await

In some cases, we make a decision early on one technology and we try to use it…

Riccardo Cipolleschi

Hey there, I’m Riccardo. Senior iOS Engineer at TrueLayer and ex-Spooner. I breathe iOS development: apps and tools. I love to share my knowledge with others.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store