API Client in Swift

Consuming a web service API was a major part of almost all the projects that I’ve worked on. Each one of them had a different approach to networking.

Read more »

Introducing RxNuke

I’m excited to introduce a new addition to Nuke - RxNuke which brings the power of RxSwift to your image loading pipelines.

Read more »

RxSwift Testing

One of my favorite features of RxSwift is its testing infrastructure, RxTest. And it’s an undersold one too, it’s not even mentioned on a Why RxSwift page. Let’s take at look at it on a real world example - paging in a scroll view.

Read more »

Interface Builder: UI Testing

The recent changes to Interface Builder made me change my mind about it. I was sold on the Preview feature which allows to test the UI on different screen sizes and in different orientations. Let’s see how to make the best use of this feature.

Read more »

Let's Build UIStackView

UIStackView is a great showcase of Auto Layout. It’s built using constraints which makes building an open source replacement easier. If you’re not in business of building one this article will give you a better understanding of how UIStackView interacts with Auto Layout.

Read more »

Core Data Progressive Migrations

Schema migration is a daunting process but you must get it right. Otherwise you might end up breaking your app and corrupting user data in the process. This articles aims to make custom Core Data migrations more approachable.

Read more »

Image Caching

Caching is a great way to improve application performance and end-user experience. Some popular iOS libraries try to reinvent caching, especially when it comes to storing images. They frequently overlook HTTP cache in Foundation’s URL Loading System.

Read more »

Preheating Images

Preheating (prefetching/precaching) resources is an effective way to improve user experience for many apps. Prefetching is a common term that refers to software that downloads data ahead of time in anticipation of its use.

Read more »

Immutability and Builder Pattern

We all know about the advantages of immutable objects. Most of the immutable objects that we use are model objects that tend to have a lot or properties. The question is how to initialize those properties without creating a telescoping initializer.

Read more »