How to leverage the power of Property Wrappers to save and retrieve App Settings with a unique Default Value

Photo by Rudy Dong on Unsplash

With the release of property wrappers together with Swift 5 and Xcode 11, many patterns can now be reimplemented in an easier, cleaner and faster approach. For instance, we use them at WELT to add an extra layer of logic to some UIColor instances, so the appropriate color value is provided depending on the user setting selected color mode. In the same way, we implemented a property wrapper that access Firebase Remote Config that provides the value specified by a key parameter. …


Or how we started using SwiftUI in Production Code without (major) Headaches

With the Product Owner’s green light for dropping the support of iOS 12 downwards, a new world of juicy possibilities emerged in our development horizon. Together with iOS 13 two major new Apple frameworks were released: Combine and SwiftUI, the new framework to design and develop user interfaces declaratively and with less code. For the former we lost no time in replacing our aged third party library and start using Combine everywhere Reactive Programming or Promises were applied. …


Revive an outdated Package with a new and fresh Look

Photo by Sonja Langford on Unsplash

Yeah, it happens. Time flies. “Tempus Fugit” as the cool people used to say. It could be a new grey hair or wrinkle when facing the merciless mirror, the sudden realisation that your team did not win the league in few years or an iOS library written for iOS 8. And the sooner we accept that fact, the sooner we can cope with it and go on with our lives. Accept the things I cannot change, don’t look back and all this. Only that there is something we can change here. …


Get notified reactively when the user changes the face expression with Wink

In my previous stories Warhol and Warhol II I talked about how we can easily detect the user face features and render our desired overlay on top of them thanks to Warhol, a library of my own. For that I used the Apple Vision Framework, that among other things supports the detection of items such and face and face landmarks. Furthermore the Warhol client shall not deal with Vision at all, as it is hidden behind the library interface thus alleviating the effort of the client implementation.

During Warhol’s development process something came to my mind. Wouldn’t it be cool…


Hide your Implementation Details to make your Code cleaner and safer

Photo by Daria Nepriakhina on Unsplash

Our iOS Team at WELT got recently very good news, we could set our App iOS Deployment Target to 13.0. That means not only that we should not support old versions anymore, but also that we can start using the cool APIs that were introduced in that version, especially SwiftUI and Combine.

With Combine we can write functional reactive code to process values over time through a declarative Swift API. It can be compared to other takes on this approach for Swift, such as RxSwift and ReactiveSwift.

Tip: If your app still cannot fully support Combine because the minimum deployment…


Create your own website without taking a sweat

Today I’ll cover a different topic than usual. In fact, i am not going to mention the word Swift (oops, just did) or iOS in the whole article. On this occasion I will talk about a personal project I developed while enjoying my summer holidays in the south of Spain: my personal website.

Why a personal website?

To be honest, the main reason why I created my own website was to learn the technologies involved in the process. We as mobile developers sometimes see the web and its environment as something obscure and arcane. Nothing further from the truth. …


Bear this in mind before creating or adding a 3rd Party Library to your project

So many things we do not need!

We as developers are usually advised to search in the Open Source Community before adding new functionality. The odds are that most likely some other engineer faced the same problem and, in a remarkable act of charity, published their solution so we can also reuse it. Or perhaps we are that caring developer, who content with their work, decided that more people should benefit from it.

In any case, we should make sure that the component will adhere to the Common Reuse Principle (CRP): Don’t force users of a component to depend on things they don’t need. Oh ok, could…


Or how to avoid Merging Nightmares and Long Compilation Times

More and more we see how the iOS community strives for more modularized architectures. And it is obviously not just a fad. The benefits are clearly evident, the most immediate being much shorter compilation times given that you can just focus on the working framework. Furthermore, you are aiming for a cleaner architecture, one much more readable and testable. On top of that, you can just reuse your component in any other application, or exchange it as you wish.

But same as when creating your object oriented design you rely on the SOLID principles to make it easy to maintain…


Add your Filter Overlay without having to deal with coordinates in Warhol

Some time ago I talked about Warhol, a library of my own that detects a Face from a Camera or Image input and passes the related information to the client. That way, the latter can draw on top or process the face data to accomplish its requirements.

I find it very convenient because the application using Warhol can forget about the cumbersome process of dealing with Vision and AVFoundation frameworks of Apple, focusing of what really makes an application different.

With the same goal in mind, to make the developer’s life easier, I proposed then that we can go one…


A journey from Slash Commands to Fastlane

In WELT we rely heavily on our Continuous Integration implementation. We use it not only to compile the code and run unit tests to ensure a valid app status at any time, but also deliver our product to TestFlight. Besides creating a new build automatically each time a new feature is merged, we can trigger those whenever a new release is requested. Automatizing this step we are sure that no human error spoils the process, as might happen when building and uploading manually from Xcode.

Given the expense of maintaining a local CI Server such as Jenkins, we moved to…

César Vargas Casaseca

cesarvargas.es Senior iOS Developer at WELT. Allegedly a clean pragmatic one. Yes, sometimes I do backend. Yes, in Kotlin, Javascript or even Swift.

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