Image for post
Image for post
Photo by Nikita Bren on Unsplash

The iOS Team at YOOX NET-A-PORTER GROUP doubled in size in 2020.

Growing our Team like this allows us to do more and be even more ambitious than before, but this rapid growth has created challenges of its own, in particular when it comes to developing, merging and delivering features.

So, over the course of 2019 we spent time thinking about how our engineers could best cooperate and release code smoothly, with a focus on fostering a culture of continuous improvement and continuous knowledge sharing across the Team.

Continuous Improvement

As part of a Product Team, our main job is to deliver features that our colleagues across the business want and need. Sometimes that makes it difficult to schedule in time to polish the existing architecture, especially because it can be difficult to measure the business value of the changes. …


When working on an app that is released worldwide, one of the common topics is how to stylise the text based on the user language.

At the WWDC 2018, Apple Engineers gave an awesome talk about Creating Apps for a Global Audience during which they provided countless interesting suggestions about managing different languages in apps.

So, what’s the problem?

When we want to provide different styles to our text-based controls, we usually use the NSAttributedString. By doing so, we can easily provide different fonts or different text colours to parts of our text. You can find tons of articles on the internet about this.

Instead, what we want to achieve is the dynamic application of different styles to the UI, based on the language itself (to be precise, to the current text Unicode script)…


Image for post
Image for post

You can read perfectly this post on my blog ennioma.com. 🚀

StorageKit?

We tried to explain what StorageKit is here:

StorageKit is a framework that reduces the complexity of managing a persistent layer. You can easily manage your favorite persistent framework (Core Data / Realm at the moment), accessing them through a high-level interface.Our mission is keeping the persistence layer isolated as much as possible from the client codebase. In this way, you can just focus on developing your app. Moreover, you can migrate to another persistent framework easily, keeping the same interface: StorageKit will do almost everything for you.

The idea is to take off the persistency complexity in order to let you focusing on what you have to develop. …


You can read perfectly this post on my blog ennioma.com. 🚀

In the latest period I decided to read again the amazing Cormen and co. — Introduction to Algorithms book and it threw me back to an age ago when I attended the University.

So I wanted to write this post for personal knowledge but also because I’ve read a lot of complains around the web about questions like “What’s the fastest sorting algorithm?” or “Write down the bubble sort” during the iOS interviews. So maybe this post could help you to prepare the next interview 🙂

The topics covered in this article…


You can perfectly read this post on my blog ennioma.com 🚀

If you are an iOS developer and you haven’t been hidden in the middle of nowhere for the last three years, you should know what Realm is: basically it’s an awesome dependency to you app.

We have seen during the latest years that other dependencies that helped a lot of people to build thousand of apps have been shut down. Yes I’m referring to Parse.

So I’m going to use Realm for my latest side project but the main goal for me now is to completely (or as much as possible) isolate the persistence layer from it’s concrete implementation (yes, you know, SOLID is just around the corner). …


You can perfectly read this post on my blog ennioma.com 🚀

Well, when Apple presented iBeacon during the WWDC 2013, I bet that one year later they would have presented the NFC support. But it’s well known that I’m a terrible punter and Apple has finally introduce the support to NFC this year.

This means that starting from iOS 11 (and on iPhone 7/iPhone7+ and future deveices) our apps can leverage on NFC tags to get contextual info about the physical world around the user (especially for location aware apps, physical marketing campaigns, ..).

As described in the documentation:

Using Core NFC, you can read Near Field Communication (NFC) tags of types 1 through 5 that contain data in the NFC Data Exchange Format…


You can perfectly read this post on my blog ennioma.com 🚀

This is a quick post about a new feature added by Apple in Xcode8.3 that let me test an edge case through UITests.

The problem

Let’s consider to have a business logic only applied when the app is resumed from background. And let’s say that if the app is resumed from background then your app navigation changes due to your business logic.

Until XCode8.2 every time a new UITest is executed, the app process is killed and the app is executed from scratch.

Browsing the Apple doc I’ve noticed that they have added the access to Siri through XCUIDevice and the only method exposed by it…


You can perfectly read this post on my blog ennioma.com 🚀

The last feature I have implemented on the NowTV app is a cache that stores a complex data structure, basically a subset of a JSON response containing multiple and nested models.

Let’s consider a basic JSON like the following one:

This JSON in translated in something like

Lately I’m studying theory behind Functional Programming and I was wondering how to access/update data stored in the cache in a functional way. …

About

Ennio Masi

Clean code lover. Dad of 2. Enthusiast developer. | https://twitter.com/ennioma | https://github.com/ennioma

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store