Hello 👋

NVIDIA drivers and Ubuntu: an horror story

A short horror story (with a nice ending) featuring Ubuntu and NVIDIA drivers.

TIL: SSH Jump Host

The jump host is an option of the SSH client, that allows to use a third SSH server as “proxy” to access the final intended SSH server

How Duolingo uses Gamification to motivate the user

For the past month I’ve been daily using Duolingo to learn German, and I’m captured by the app’s dynamics, which uses some gamification devices that first hook you into forming an habit, and then challenge and reward you for studying and learning more. I’ve then decided to pack some examples of the gamification tools that Duolingo uses and why.

Replacing xfwm4 with Mutter

This is an ongoing experiment. One day I’ve decided to stop using the default XFCE’s window manager xfwm4 and start using Mutter instead, which is the one shipped with GNOME. Switching is easier than expected, but at the end there are a few usability issues, some of which are quickly solvable but others are trickier.

Deploying Hugo on GitHub Pages with GitHub Actions

A GitHub Action is the automatic execution of a job, after a specified trigger on a GitHub repository. For example, let’s say that we want to run a linter on each new commit, we can create a GitHub action to do it. In this post we’ll see a workflow to automatically deploy a Hugo site on GitHub Pages.

Self-hosting Umami with Docker Compose

Umami is an open-source, privacy oriented and lightweight web analytics service written in Node. Umami is super easy and quick to self-host, and in this post we’ll see a setup with Docker Compose.

Creating vocal interfaces is difficult

Why is it so complex to create a good voice interface? There are many factors that affect the quality and usability of the final product. There are many variables involved, and the technology choices are decisive. Let’s see why.

Paxos: a distributed consensus protocol

Let’s look at Paxos: a beautiful and fundamental safe, but not live, distributed consensus protocol. Let’s see how it works, what the main elements are, and have some examples.

Distributed Consensus, Atomic Commit and FLP Theorem

Let’s see the concept of consensus in distributed systems: what it is, why it is complex, when and if it is possible. We’ll see a protocol for achieving atomic commit, and finally we prove the FLP theorem.

Basics of Distributed Systems theory

In this introductory post on distributed systems we’ll see some basic concepts such as: local and global states, consistent and inconsistent cuts, vector clocks, Chandy-Lamport’s snapshot protocol.