Don't work more than enough

Don’t work more than enough Sometimes we push ourselves to the max. maybe because it is there are some deadlines when we are not going to be able to release the new version, maybe it is because our life outside work is not good enough or maybe because we are excited to be working in such a company/technology/team. However, our mental health is going to be damaged by overworking. The question is not how much, but when we are going to get burned out by overworking. [Read More]

Bike sheding in merge reviews

Bike sheding in merge reviews Focusing on the important things is a crucial matter. When trying to solve a problem, sometimes we subconsciously focus on the easy part, the known part, the part we know we can tackle, and forget about the other parts. The hard parts. Prelude Humans are falible, we know that we are not as rational, impartial and intelligent as we like. We are full of flaws. [Read More]

Git History in PRs

Git History in PRs Suppose you have a big feature, and you are creating a pull-request with all your changes. How do you organize the changes? Only one commit? One per sub-feature or sub-fix? How do you make that division? Or maybe you could organize the commits in a way that is helpful for reviewers… But how? This post try to show different approaches I have found during my years in the workforce. [Read More]

Open Source dependencies in software projects

Open Source dependencies in software projects Most of the foundations of current commercial software projects are open source. But what happens when an open source project becomens unmaintained? Dependencies, dependencies everywhere! Most software projects have a miriad of depedendencies. Why? Because we (as software engineers) are not going to reinvent the wheel. Having your software depend on a well-tested, maintained, and supported is a bliss. It saves you time, and work very easily: you only have to be aware of two things: [Read More]

FOSDEM 2023

FOSDEM 2023 Past week I assisted the FOSSDEM 2023 conference in Brussels. It was two days of talks of different topics like programming languages, containers, security, etc. It was a blast! I am these days watching the videos of the talks I could not see in person My advice for future FOSDEMs Travel Pack light. Do not bring a suitcase, bring a 40L backpack with a couple of change of clothes. [Read More]

Dockerfile stages must have a command

Dockerfile stages must have a command In multi-stage Dockerfile, you have to be careful for what stages you run. Want to avoid having misteriously exit 0 errors in containers? Add a CMD at the end of the Dockerfile stage with some dummy command like CMD ["/bin/bash", "echo", "Command for stage X"]Any stage that has no command will exit without informing the user of what happened. This could cause some mysterious errors if you are getting up all containers and not overwritting the command of the ones that have none. [Read More]
docker 

Use the builder stage pattern in Dockerfiles

Use the builder stage pattern in Dockerfiles Most of the time, some libraries that we install in a docker image are only used for the construction of our executables. Could we just not include in our final docker image? Docker images should be minimal As we saw in our previous post, docker images should be minimal for several reasons, but the aim is to reduce the cost of the transference of the docker image. [Read More]
docker 

Reduce the size of your builder images

Reduce the size of your builder images Docker images should have a small size. For example, Alpine Linux images have a mere 50MB of size, debian-slim is 50-60MB of size. Why do we seek a small size footprint? One reason is simply because the docker images are usually pushed to, and download from, docker repositories like dockerhub or other private docker repositories. Use a small base image Alpine and debian-slim-stable are like 50MB. [Read More]
docker 

Don't be Percival

Don’t be Percival Percival is a mythologic figure, a mighty knight associated with King Arthur, the knights of the round table, and the search for the grail. How is the myth related with starting working in a new team? The myth In Chrétien De Troyes' poem The Story of the Grail, Percival, a young boy that dreams of becoming a knight lives in a farm with his mother. He descends from a long tradition of knights (his deceased father and grandfather were knights) but he does not know. [Read More]

Fail fast and often

Fail fast and often Being fail-tolerant is valued in organizations as in a changing world where requirements, technologies or even team members can change from one day to the next, having adaptative capacities is gold. Wait, what are you talking about? I am talking about having the ability to prioritize our work as developers. Everything has not the same importance and our resources are finite. You have to know what is the aim of your organization. [Read More]