# All what developers need to know about proxy servers

Proxy servers are a fundamental component of almost every distributed system. This post explains what proxies are, which are the different kind of proxies and why they are so useful.

Proxies are a fundamental component of almost every distributed system. The average person has only a vague understanding of the purpose of proxy servers and often associate them with unblocking some media content from other countries. As a developer however, you should know that proxy servers do much more and are vital for businesses.

# Three effective ways to create modulo n integer sequences.

This post compare different ways of generating integer sequences.

A modulo n integer sequence is just a (potentially infinite) integer sequence that wrap to 0 when the current value is n. For example, $0,1,2,3,4,0,1,2,3,4,...$ is a modulo 4 integer sequence.

# The complete guide to the Disjoint Set Union data structure.

A complete introduction to the Disjoint Set Union (DSU) data structure. Read thid post to know what DSU is, how to implement it and when to use it.

The Disjoint Set Union (DSU) is a data structure representing a collection of disjoint sets. It is extremely helpful in solving problems where it is required to track the connectivity of elements belonging to a specific subset and to connect different subsets with each other. Each subset is represented in the form of tree and the root of the tree is the representative element of the set.

# Docker Laboratory

Hands on the Docker platform using different Scenarios.

This post goes through a set of exercises and tasks regarding the Docker platform. The goal is getting familiar with Docker and with the most frequently commands of the Docker CLI. This post requires a basic knowledge of Docker. You can refer to this other post for an introduction to Docker. All the material used in this post is freely available at my Github repository.

# How to efficiently compare strings with rolling hash

This post explains in details the Rolling Hash technique and how it can be used to efficiently compare strings.

Hashing algorithms are useful to solve a lot of problems. In this post we will discuss the rolling hash, an interesting algorithm used in the context of string comparison.

# What exactly are containers and what is Docker?

This post explains the main concepts behind containers, focusing on Docker as containerization platform.

Containers are a streamlined way to package and run software applications. They allow to build any application in any programming language using any operating system (OS). Containerized applications can run anywhere on anything and can also be more efficiently deployed into cloud environments.

# How to efficiently represent strings using a Trie data structure

This post gives an introduction to the Trie data structure and explain how to efficiently use it to store and represent strings.

A trie, or a prefix tree, is a data structure that is used to represent and store a set of words. Although there are many other structures used to store and represent words, the trie is particularly efficient in performing the following operations:

• find all the words with a common prefix.
• enumerate the words in lexicographical order.

# Concurrency in C++

This post is about concurrent programming fundamentals in C++.

This post is a summary of how multithreading and concurrency are managed in C++.

# A step by step guide to the Counting Sort algorithm

A detailed guide to the counting sort algorithm with implementations in C++, C# and Python.

While all comparison-based algorithms have a time complexity of O(nlogn) to sort an array of n elements, there are sorting algorithms running in linear time provided that some assumptions are verified.

# A quick introduction to the ring buffer data structure

This post presents the Ring Buffer data structure, showing a possible implementation in C++ using templates.

Ring buffers (also known as circular buffers) are fixed-size buffers that works as if the memory were contiguous and circular.