Blog

Insights about the app design and development ecosystem.

Tools Technical Development

Apollo – The GraphQL client that makes API integration a breeze

Integrating apps and servers is not an easy task, we all know that. Even with great tools like Alamofire and Retrofit there are still a lot of things to take care of in the app side: different endpoints, encoding / decoding JSON strings, API versions, data consistency and so on…

Recently I have worked in a project with server integration and we had the opportunity to choose new technologies to work with and to try to avoid some of these problems. The choice was a GraphQL server and in the app side the Apollo framework.

Continue Reading

Technical Mobile Development

How custom UI controls in Xcode’s Interface Builder boosted my UI development

To use or not to use Xcode’s Interface Builder (let’s call it IB) is a very common discussion between iOS developers. There are many arguments against using it like version control issues and difficulties in debugging. This post in our blog have some considerations about it for example. But I believe that if the project is well structured and the team knows how to use it, these issues can be avoided and IB can become a very powerful tool.

Continue Reading

Tools Technical Opinion DevOps Development Back-end

What really annoys me about Django migrations

Automated database migrations have been a convenient way of dealing with schema changes for a long time in Django. It’s been only 3 years since migrations have been incorporated into Django but South had been the de-facto solution since 2008.

The same way an ORM allows us to forget about SQL when writing queries to the database, migrations make sure we don’t write a single ‘ALTER TABLE’ in our schema changes. Some may argue that’s bad: we “lose control” over a critical part of our infrastructure, we don’t know how to write SQL anymore when needed, we’re not sure how that operation is really translated into SQL, etc, etc. Ok, these points are actually valid. However, Django migrations module is more than just a way of automatically generating and applying SQL statements, it’s also a transparent API to write your own database changes in Python. It comes with wheels for those who need it (or trust enough) and tools for those who like to get their hands dirty.

Continue Reading

Technical Opinion

VIPER architecture: Our best practices to build an app like a boss

The dev team at Cheesecake Labs has been using VIPER for iOS and Android mobile app development for over one year and we just love this clean architecture!

This article summarizes our best practices on the VIPER architecture, using code examples from our VIPER boilerplate. The code samples used here are in Swift, but all concepts mentioned may be applied to an Android project developed with VIPER, either using Java or Kotlin.

Continue Reading

Technical Opinion Business

TDD on mobile dev, a matter of timing

When we start the development of a product, there is always a desire to make it as perfect as possible: fulfilling client’s expectations, offering a good learning opportunity to the developer and delivering a system with high maintainability and scalability.

As the code base grows, keeping it problem-free becomes a harder challenge. Testing manually each module of the application can take so much time that developers may become unproductive.

Continue Reading

Technical Opinion

Using the VIPER architecture on Android

Starting as an Android developer and later working with iOS as well, I had contact with several different projects’ architectures – some good and some bad.

I was happily using the MVP architecture for Android until I met – and worked eight months with – the VIPER architecture in an iOS project. When I came back to Android, I decided to adapt and implement VIPER on it, despite some other devs suggesting it wouldn’t make sense to use an iOS architecture on Android. Given the fundamental difference between Android and iOS’ frameworks, I had some questions about how useful would VIPER be for Android. Would it be doable and worth the effort? Let’s start with the basics.

Continue Reading

Technical Design

5 Quick Tips To Increase User Engagement on Your App

If you are not considering the user experience when designing a new mobile application, it’s time to start thinking about it. One of the most important things to have in mind when you design a mobile app is making sure that it is useful and intuitive for the users. If it’s not useful, it won’t have a practical value. At the same time, if the application is useful, but it takes too much time and effort to be used, people won’t engage with it.

Continue Reading