Interactors over fat models
When we use Rails, we are encouraged by the framework to use the MVC pattern. It is also a common practice to follow a popular advice Skinny Controller, Fat Model....
Synchronize your tests with your documentation
When you develop your API, a part of the job is to write the documentation. At Fabernovel, we used to write our documentation on a tool called Slate. However, by...
Build a custom player on top of AVFoundation
When building an iOS/tvOS application with video playback, the best player solution can be to build a custom one to match the exact application requirements. This article is a technical...
UIKit rendering - The run loop
On the previous post, we discovered that the commit of the current implicit transaction is responsible of our initial interrupted layout phase. So we only have one question left: when...
UIKit rendering - CATransaction
On the previous post, we discovered a mysterious CATransaction.commit at the bottom of our interrupted layout phase stack. Let’s find out its role in the layout process. Experimentation The CATransaction...
UIKit rendering - Tracking a layout phase
On iOS, the layout of a view hierarchy is expressed dynamically using the Auto Layout constraint system. Thus a view hierarchy can adapt itself to all the possible device screens...
Android, from LiveData to StateFlow
The following article will detail how we can replace the presentation layer’s livedatas with stateFlows and some caveats we encountered along the way. On the 30th of October, kotlinx.coroutines 1.4.0...
Video playback on iOS & tvOS
When developping an application on iOS and/or tvOS, video playback can be a strategic or accessory component. There are different solutions available on iOS/tvOS, each of them with pros and...
Understanding Copy on Write
In a previous article we saw the difference between reference and value types in Swift. Let’s look at the memory management a bit closer! Heap, Stack, value types and reference...
Implementing fastlane in 50 lines of code
Fastlane is a tool used by almost every mobile developer. The main advantages are its simplicity, the time it saves us and the fact that it’s built on top of...