Versioning database changes is as important as versioning source code. By using a database migration tool we can safely manage how the database evolves, instead of running a bunch of non versioned loose SQL files.

In some frameworks like Ruby On Rails, database versioning occurs along the development. But when it comes to Java world, I don’t see it happening so often.

In this article we’ll see how to integrate Liquibase with Spring Boot to evolve the database schema of a Java application using MySQL.

Meet Liquibase

Currently, the most popular database tools are Flyway and Liquibase. …

When it comes for validating input data, boiler plate code with a lot of if conditionals come right in the top of my head. Remembering my experience with Ruby On Rails, I was wondering if it was possible to use declarative validation in Golang, in a similar way of Active Record validations. In this article, we’ll see how to achieve that.

The domain model

Let’s assume this simple domain:

Benchmarking your application is often a good idea when it comes for fine tuning its performance.

The Golang testing package contains a benchmarking facility that can be used to examine the performance of your Golang code. In this article we’ll see how to write simple benchmark tests that are able to provide us good insights about a given algorithmic solution.

The good old Fibonacci number calculation

Fibonacci number is a classic numerical series where each subsequent number is the sum of the previous two numbers: 1 1 2 3 5 8 13…

Let’s explore two different implementations: recursive and sequential. We’ll write both unit and benchmark…

Makefile is an awesome tool and I use it a lot, mainly in Golang projects. In this quick article we’ll see how to display a useful help message with all targets that are available to be called.


If you’re using Makefile as your build tool to your project, chances are that you have several targets in there. Wouldn’t it be nice to properly document its usage, so a new developer coming to your project knows what are the available targets and what are they’re used for?


In real life, I have several targets in a Makefile for a bunch of…

Tiago Melo

Senior Software Engineer, commercial airplane pilot & flight instructor and self-taught bassist.

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