The work of a Software Engineer is to solve problems. Everything can be reduced to this activity. This is why it is important to have a solid methodology to tackle problems. We are engineers after all, and we are trained to solve problems. We have to do it like an engineer.

Engineering Hubris — https://xkcd.com/319/

Understand the requirements

The first step is to understand the requirements. To solve a problem, you have to understand exactly what the problem is. It happened to me that a feature that would have been a 2/3 weeks work, became 3 useless months of “Oh, there is also that…”, “Oh, we didn’t…


Photo by me on Unsplash

The team leader is a key figure in a team of developers. It is a difficult role, involving both technical and social skills. This is the reason why not everyone is tailored for it.

The technical competence usually is not the problem (emphasis on usually). The social skills — let’s call that leadership — are a different story. Technical skills are fundamental, but leadership is not made of code. It is what keeps teams together and motivated.

Bad leadership can compromise not only the success of the product but the team itself. It is not uncommon to see good developers…


If you read my previous story about Scalachain, you probably noticed that it is far from being a distributed system. It lacks all the features to properly work with other nodes. Add to it that a blockchain composed by a single node is useless. For this reason I decided it is time to work on the issue.

Since Scalachain is powered by Akka, why not take the chance to play with Akka Cluster? I created a simple project to tinker a bit with Akka Cluster, and in this story I’m going to share my learnings. We are going to create…


Working in software engineering means always learn new things. We need to keep up to date with new technologies, tools, paradigms. This is one of the most beautiful aspects of the job, but also one of the most difficult. We are always busy, we have little free time, and learn something new in the workplace may be hard.

I like to study and research, but for this very reason I struggled to complete anything I started. There are always too many things I desire to learn, so I moved from one to another too often.

Once I realised I was…


I started to work with Scala few months ago. One of the concepts that I had the most difficulties to understand is the Either monad. So, I decided to play around with it and better understand its power.

In this story I share what I’ve learned, hoping to help coders approaching this beautiful language.

Photo by Jon Tyson on Unsplash

The Either monad

Either is one of the most useful monads in Scala. If you are wondering what a monad is, well… I cannot go into the details here, maybe in a future story!

Imagine Either like a box containing a computation. …


Me on Flickr

Scalachain is a blockchain built using the Scala programming language and the actor model (Akka Framework).

In this story I will show the development process to build this simple prototype of a blockchain. This means that the project is not perfect, and there may be better implementations. For all these reasons any contribution — may it be a suggestion, or a PR on the GitHub repository — is very welcome! :-)

Let’s start with a little introduction to the blockchain. After that we can define the simplified model that we will implement.

Quick Introduction to the blockchain

There a lot of good articles that explain…


Time to clean up our disk, removing some useless untagged Docker images. This is the command we need:

docker rmi $(docker images | grep "^<none>" | awk '{print $3}'

I know that you can find this line on the internet in 1 second, but if we understand what we are doing, maybe the next time we will remember this command without the help of Google.

docker rmi command is used to remove the images provided as an argument, so basically we are applying it to the result of the expression inside $(...).

Let’s analyse this part, the commands inside $(...)


I needed a container running an SVN server, and I knew that probably there are lots on the internet, so I started to search for it. I wasn’t satisfied of what I found: the requirement was to access the repository using both the WebDav protocol (i.e., http://) and the custom protocol (i.e., svn://), but all the images I was able to find offered just one of them. The conclusion is that I managed to create my own image. In this tutorial I want to show you the process I followed to create such image. It could be not perfect, but…

Luca Florio

PhD, passionate about Distributed Systems. Functional Programming Enthusiast. Krav Maga black belt.

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