Blog

Insights about the app design and development ecosystem.

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

Opinion Development

What is Serverless all about?

Serverless. The new hype buzzword is taking over the development universe, promising big savings in infrastructure for applications and less deployment headaches to developers. In an agile world, shipping scalable software with budget constraints has become a big puzzle: one that Serverless may solve.

Today I’m going to give you an overview of its history, basic concepts, providers, frameworks, benefits and drawbacks. One thing, though: personally, I don’t like the term Serverless, as it was coined by the Serverless Framework, but now it stuck and everybody is using it. What can I do?

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

Opinion Business

A girl who codes: Why that matters

Think of a professional who has changed the history of IT for a second. If the person who came to your mind was Steve Jobs, Bill Gates or any other male name, it’s no wonder. Although the history of computing is marked by contributions from great women, such as Ada Lovelace, Grace Hopper, Sister Mary Kenneth Keller and Hedy Lamarr, women are still seen as if they played a secondary role in this market.

Continue Reading

Technical Opinion Design

API Design: Think First, Code Later

As a software developer, I know how hard it is to contain the urge to start coding as soon as we can. After the first sprint planning, our fingers – uncontrolled, hungry creatures – want to start smashing the keyboard, translating our ideas into code fastly and furiously.

Despite how great we feel while developing, it’s always a good idea to take a step back, especially when building something that could be used by many different users – like an API is. A. In this post, I’ll show you why and how to design a properly-thought API.

Continue Reading

Technical Opinion

Code Review: Easier Better Faster Stronger

Yes, you read it right. I took the liberty to adapt Daft Punk’s song title to talk about code review. As I write this, I’m wondering  if it is going to pass the thorough examination of the chief editor, but I like how the title sounds (and it really describes how a Pull Request should be). And you see, even this harmless piece of text is going over a rvesoin revision process before you can have the chance to be struck by my insights, so why shouldn’t we do the same with our code?

Continue Reading

Technical Opinion

My experience with ReactiveX and asynchronous programming

As a software developer, I must deal with asynchronous programming on a daily basis. In order to provide the best user experience possible, all tasks like performing a server request, getting data from my database, waiting for some background process to finish or downloading an image should be executed asynchronously.

Even with some years of experience, I sometimes forget the syntax for a particular asynchronous call. How should I implement the callback for a specific task and how should I handle the error if anything goes wrong? There are hundred of ways of dealing with responses, and as a developer it’s my job to know which one fits best in every situation. When I first read about ReactiveX I thought: “Great, another asynchronous API to memorize…”. Well, I couldn’t be more wrong.

Continue Reading