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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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:
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:
Published on 29 Sept 2014
Rubustrings, a format validator for Localizable.string files.
Usage: It only needs the files to validate as arguments
Published on 29 Jun 2014
SwiftyVersion A simpler way to manage Versions in Swift
Using the default separator (which is a single point)
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.
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