David Cordero

Blog

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....

As we saw in Being a tvOS Developer, due to these limitations, Siri Remote is in practice one of the biggest handicaps to create tvOS Apps.

Continue reading...

Extending TVML with Custom Templates

Published on 7 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.

Apple provides a set of TVML templates, exactly 18 of them: alertTemplate, catalogTemplate, compilationTemplate, descritiveAlertTemplate, divTemplate, formTemplate, listTemplate, loadingTemplate, mainTemplate, menuBarTemplate, oneupTemplate, paradeTemplate, productBundleTemplate, productTemplate, ratingTemplate, searchTemplate, showcaseTemplate and stackTemplate

The divTemplate is by far the most flexible one. It basically allows throwing into it most of the TVML components and to align them with a high level of flexibility. But it also has some limitations, for example not being scrollable.

Continue reading...

Mind the cup

Published on 7 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 working with 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.

There is basically no way to zap using a numpad, P+ or P- buttons, which are present in any other Tv platform, but not in Apple Tv.

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 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...

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.

Checking the documentation of UITapRecognizers and UIPressType, you will find an interesting list of available press types:

Continue reading...

TVML and UIKit as happy roommates

Published on 6 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 2 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 8 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 6 Dec 2014

Due to this feature of closures 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.

We can create super neat closures like this one:

Continue reading...

Swift: Raiders of the Lost Nib

Published on 3 Dec 2014

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

If you use a nib file to store your view controller’s view, it is recommended that you specify that nib file explicitly when initializing your view controller. However, if you do not specify a nib name, and do not override the loadView method in your custom subclass, the view controller searches for a nib file using other means. Specifically, it looks for a nib file with an appropriate name (without the .nib extension) and loads that nib file whenever its view is requested. Specifically, it looks (in order) for a nib file with one of the following names:

Continue reading...

Strings validation with Rubustrings

Published on 29 Sept 2014

Rubustrings, a format validator for Localizable.string files.

Usage: It only needs the files to validate as arguments

./rubustrings Localizable.strings

Continue reading...

SwiftVersion

Published on 29 Jun 2014

SwiftyVersion A simpler way to manage Versions in Swift

Initialization

Using the default separator (which is a single point)

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.

Continue reading...

TimeBlock

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...