Override docker-compose.yml files

Override docker-compose.yml files Sometimes we want to have different versions of docker-compose.yml files (one for production and one for development). Each environment has their own characteristics (slightly different images for example) we show here a good way to override sections of a docker-compose.yml file easily. Why? Sometimes we have several environments that share almost all docker configuration. Having a common docker-compose.yml file and several docker-compose.override.yml files is a great way to manage your service configurations. [Read More]

Actual integration tests

Many times we have some piece of code that is tested but is still failing in production. How is that possible? Is that because of bad tests or we have a greater hidden issue? Protect your vital functionality with integration tests Integration tests are the best way make sure that a functionality does not degradate when adding new features. What are integration tests Integration tests are tests that check a full feature of the project. [Read More]

Add changes to your last commit

Have you ever created a commit with a meaningful message and, later wanted to add or modify something to it? And what about if you pushed that commit? Here we are going to see how you add changes to a commit, independently of if it was pushed or not. How-to Let’s suppose we have just pushed a commit and we want to add another change to it. This process is called amend. [Read More]

Rewrite git branch history

Rewrite your git branch history Ever had a pushed branch that is completed and ready for review but the git history is too long and full of commits wit. How to The process is very clear. You only have to get the changes, move your point to the branch you want to merge (usually master), unstage everything, creating new committs, and force push the changes. Let us see the process step by step: [Read More]

EyesOnly

Secrets are usually involuntary leaked by developers. Sometimes they are sent to external services like or written in a log by accident. Would not be useful to have a tool to limit the access to secrets? Enter EyesOnly. EyesOnly: a package to limit access to secrets Dealing last years with containerazing applications has left me thinking in how we are passing some secrets as environment variables to the container. This is standard practice by the Cloud Native practitioners. [Read More]

Allow writing of files in docker in Linux

Docker is a container system that allow developers to have a common environment to develop and SRE/devops to have machine-independent deployment process. Allow writing of files in docker in Linux I have been working on a small project in Python: functainer. The goal of this project is to provide a Python package to run functions in docker seamlessly: you only will docker and Python to run it. Anyway, that project uses files as a mean of communication, i. [Read More]
docker  linux  tips 

Asking and receiving feedback on your software project

Introduction A month ago I asked the HN Community for some feedback about my project: Gelidum. The experience was very positive and I have learned that asking for feedback in a software project is crucial. Why feedback is important? We know that feedback is important because it gives us a different point of view about a matter or in my case, a project. But, feedback is not limited to giving different points of view. [Read More]

Immutability

Introduction In this post I will explain the rationale about working with immutable objects and will present a personal project I’ve been working on the last few days: Gelidum. La nevada by Francisco de Goya Why immutability? Nowadays, most processors have some kind of parallelism or concurrency embedded in themselves. Single-flow-execution software is limited by the lowest speed unit in the system. There are some solutions that try to hide the wait for these slow sub-systems by computing in other execution-flows (threads or processes). [Read More]

Ethical issues of Artificial Intelligence

Introduction There is a mooc in the University of Helsinki about the ethics of artificial intelligence. I just started it and it’s great. The triumph of technicism Us engineers tend to think that there is no problem (technical or else) that cannot be resolved by technological means. That’s called technicism. Usually that’s right for small-scale problems or systems, but in the case of artificial intelligence, or being more precise machine learning that’s not true. [Read More]

What is the most useful skill for software engineers?

What is the most useful skill for software engineers? Programming? Algorithms? Knowing many language or the internals of some languages? No. The best skill for a software engineer is knowing how to write well. There are some studies that establish a relationship between language skills and programming skills. It seems having strong language skills is better than being good at math when talking about developing software. I can imagine that that’s because communication is a foundation of software engineering. [Read More]