David Cordero


HLS Timed Metadata with AVPlayer

Published on 01 Feb 2021

As documented by Apple, HTTP Live Streaming (HLS) supports the inclusion of timed metadata in ID3 format.

In order to get this in-stream timed metadata from the client, we can make use of AVPlayerItemMetadataOutputPushDelegate.

Continue reading...

How to use an AppleTv box for development, without a TV

Published on 20 Oct 2020

If you ever tried to use QuickTime Movie Recording to get video output from an AppleTv that does not have a connected TV, you might have discovered that it does not work.

This is a pain in the situations when you can’t have a TV with you, for example when traveling, or when you are in home office and your family wants to watch TV.

Continue reading...

Supporting AirPods in your iOS and tvOS media Apps

Published on 19 Oct 2020

The AirPods are equipped with sensors that allow users to trigger some gestures like double-tap or automatic ear detection, to control media playback.

The behavior of each of these gestures can be configured in the Settings of the operating system among the options: Siri, Play/Pause, Next Track, Previous Track, or Off.

Continue reading...

How to implement a 'Skip Intro' button in tvOS

Published on 20 Aug 2020

Even though I am one of the few persons who actually like watching series intros and never uses this button, the truth is that the ‘Skip Intro’ button introduced by Netflix a few years ago is most probably one of the most beloved features in their Apps.

Continue reading...

Conda cheat sheet

Published on 20 Jun 2020

My personal cheat sheet for working with Conda.

Continue reading...

Showing HTML content in tvOS

Published on 15 Jun 2020

If you ever tried to display HTML content in tvOS, you might have discovered that it is not as easy as initially expected.

That is because there is no web browser, UIWebView, or even WKWebView available in tvOS.

Nevertheless, there is an alternative solution that can be useful to present simple HTML content as Term and Conditions, Privacy Policies, etc…

Continue reading...

How to free up space in your CI or iOS Development machine

Published on 01 Oct 2019

As a result of working in iOS Development, it is quite common to see how your machine eventually run out of space.

The reason is that, as things go, some files like archives, simulators, or caches from building are created, but never deleted.

Continue reading...

Cooling the Raspberry Pi 4

Published on 27 Jul 2019

Some weeks ago the Raspberry Pi Foundation released the Raspberry Pi 4, a new version of their amazing board that will allow us to go even further in our projects.

This new model means a huge bump in terms of performance, being nowadays closer to be a mini-computer than the educational board that it was originally aiming to be.

Continue reading...

SwiftUI, personal thoughts and Model-View-Presenter

Published on 12 Jun 2019

It was just a few days ago that Apple presented SwiftUI, a brand new framework to create the user interface of our Apps that might eventually replace UIKit in our Apps.

Despite the hype, SwiftUI is still just a baby framework, and it will need patience, love and tender to become a strong and useful adult framework. As we already saw on the first version of Swift, new tools need some iterations and some patterns created by the community until they get really useful in our daily basis.

Continue reading...

Improving the iOS development cycle with breakpoints

Published on 28 Mar 2019

The Development, Build and Run cycle is by far one of the most annoying parts when working in native iOS development. Your thinking and creativity flows are suddenly stopped by unnecessary waiting times, just because for some reason Xcode decided that it was a good moment to build again certain files that were not modified at all.

Apart from that, one always ends up having to navigate over and over again to the screen in which you are working on.

Continue reading...

Librem 5, a mobile platform which focuses on your privacy

Published on 30 Dec 2018

The world of operating systems for mobile devices has been dominated by Apple and Google for the last ten years.

Both android and iOS have been around for quite a while already, and in their current versions, 9 and 12 respectively, they have reached a huge level of stability and customer satisfaction.

They also offer a huge number of Apps available in their App stores which make of them great platforms to smoothly achieve every kind of daily tasks.

Continue reading...

Apple Tv, designing beyond Siri Remote

Published on 23 Nov 2018

Together with Apple Tv 4th Generation, Apple introduced its new remote control, Siri Remote, a completely new concept to navigate on big screen interfaces.

In a world of remote controls with tons of buttons, Apple had the courage 😜 to release a box controlled by only six buttons and a little digitizer, having only two of the buttons and the digitizer available for developers….

Continue reading...

Extending TVML with custom templates

Published on 07 Jun 2018

TVML templates are the base of every App based on TVMLKit. They ease the creation of Apps following the UI patterns of tvOS.

Continue reading...

Mind the cup

Published on 07 Mar 2018

It was a few weeks ago that I went to Google.

Google has great offices here in Zurich, and I thought that having them organizing a technical meetup was a really good opportunity to see them from the inside.

It was a great and interesting day, and I am happy to have met nice people in a very friendly environment.

Continue reading...

Bumping the performance of TVML with Prototypes and Data Binding… or not

Published on 25 Nov 2017

The low performance of TVMLKit has been one of its biggest bottle necks since tvOS was launched. Not only when performing heavy computing task, which could be after all derived to Swift, but also when dealing with a lot of UI elements.

You only have to load a screen with several items and layers and you will start noticing delays and glitches when loading your views.

Continue reading...

TvOSScribble, building Scribble for tvOS

Published on 20 Aug 2017

As I mentioned in Being a tvOS Developer, the lack of buttons on its remote control is one of the biggest challenges when creating Apps for Apple Tv.

It is sometimes quite hard to find intuitive gestures for very common actions. One of those actions is definitely the one to zap among channels.

Continue reading...

Directional clicks on tvOS

Published on 10 Jul 2017

If you have tried to detect directional clicks on tvOS you might have notice that it is not that easy.

Continue reading...

Being a tvOS Developer

Published on 10 Jul 2017

It is already more than one year ago that I came to Zürich and I joined Zattoo.

Zattoo is a small company based in Switzerland, dedicated to the distribution of television through the internet, regardless of the device the users have.

Among these devices are iPhone, iPad, and now that it has an App Store, the 4th generation of Apple Tv “recently” released by Apple.

Continue reading...

TVML and UIKit as happy roommates

Published on 06 Jul 2017

There is a classical beginning for every tvOS tutorial and it is a question: Are you creating a TVKit application or a native UIKit application?

Depending on the answer to that question, you will end up with one of two completely different ways of working to create your application.

Continue reading...

NSTimer stands for NoSwiftyTimer

Published on 22 May 2017

NSTimer is one of the simplest mechanism provided by Apple to create timers.

You probably saw it applied to several purposes: Views being shown or hidden after a certain delay, periodically updated views, or any other task being executed periodically or with a delay. They are without any question a very generic and powerful tool.

Continue reading...

Working with TapGestures in Swift

Published on 02 Mar 2017

A lot of great improvements have been released as part of the last major update of Swift. Swift is growing and growing and, in my opinion, the direction that it is taking is really promising.

On the other hand, it is also true that certain Apple APIs do not have yet the most desirable interface one could wish taking advantage of all those new capabilites of Swift.

Continue reading...

UX / Dev

Published on 08 Oct 2016

One of the most important things to keep in mind when building mobile Apps, is thinking about the user. It is not that easy trying to understand the problems or needs of our users, and the reason that led them to use our App to solve those problems or needs.

No matter how great is your app, and how well it was developed and designed. Apps are always a handicap, the handicap that users have to suffer to get the valuable part of your product, the part that is actually giving a solution for their problem or need.

Continue reading...

Danshari Oriented Development

Published on 15 Aug 2016

Despite of that title I am not going to speak here about any new paradigm, or about any new programming pattern, but about an attitude, and about how we applied that attitude to improve our iOS App in Zattoo.

If you don’t know the concept of Danshari, it is a Japanese made up word consisting of three kanji, meaning in sequence: refusal, disposal and separation.

Continue reading...

Data Sources in Swift… or how to avoid that this new trendy persistence framework determines the architecture of your App

Published on 13 Jun 2016

There are really good frameworks to deal with the persistency of our data in the world of iOS.

Core Data for instance is a great solution offered by Apple that provides an incredible good performance even when dealing with a really huge amount of data. But there are also, some other alternatives poping around. One of these alternatives is Realm which is said to offer even better performance than Core Data, with a simpler syntax.

Continue reading...

A different way to deal with Localized strings in Swift

Published on 31 May 2016

Dealing with localized strings has never been an easy task in iOS development. Apple has never provided a good way to deal with this issue in a clean and organized way, and our strings at the end tends to be scattered all around the project.

In addition Localizable.strings files, without any syntax validation at all, are a very error prone way to deal with strings, making very easy to have problems in runtime or even in Production.

Continue reading...

My first month with Swift

Published on 31 Jan 2016

Yes you don’t have to say that, you are fully right, I am indeed late to the party and I know it. But as the saying goes… better late than never, isn’t it?

On the other hand, since I have worked in iOS (using Objective C) for the last years, I have to say that I am not a one hundred percent rookie in this world of iOS, but I’ve never done any Swift coding apart from really minor things… So, now that I am for a while apart from the iOS development in my current position. I have decided to take advantage of this period to improve my knowledge about Swift.

Continue reading...

Swift: Avoid auto return in closures

Published on 06 Dec 2014

In Swift, you have several options for writing closures more concisely.

When a closure’s type is already known, such as the callback for a delegate, you can omit the type of its parameters, its return type, or both. Single statement closures implicitly return the value of their only statement.

Continue reading...

Swift: Raiders of the Lost Nib

Published on 03 Dec 2014

If you are used to work with Objective-C you are most probably familiar with the following documentation from UIViewController.nibName property:

Continue reading...

Strings validation with Rubustrings

Published on 29 Sep 2014

Rubustrings is a format validator for Localizable.string files.

Continue reading...


Published on 29 Jun 2014

SwiftyVersion provides a simpler way to manage Versions in Swift.

Continue reading...


Published on 28 Jun 2014

TimeBlock is a simple set of macros to measure the time spent for executing a block in Objective-C, you can find it published on my GitHub.

Continue reading...

A tour of Mantle

Published on 28 Jun 2014

Mantle is most probably the best library nowadays for parsing JSON responses with Objective-C, but I am not going to say so much here about what is Mantle since that is not the proposal of this post.

There is already a quite good explanation about what Mantle is and what problems it solves on the oficial github page of the project. So I am not going to repeat the same things here.

The problems I had with Mantle were mainly related with the lack of example code in this project. Mainly about how to do specific things, so that is what I am going to explain here using some examples.

Continue reading...