Edoardo Morassutto
I'm Edoardo Morassutto!

@edomora97

I'm a Computer Science Engineering graduated at Politecnico di Milano, here you can find my Github, my résumé and some random stuff below.

Interesting stuff

task-maker-rust

Working in the Olympiads of Informatics may be challenge, there is a lot of automation and many aspects to take into consideration when preparing a contest. task-maker-rust is a collection of tools that allows us to prepare the tasks as efficiently as possible. It helps us in compiling, generating test cases and checking the correctness of the tasks, all with a nice interactive UI and a fast local cache. Since recently it is also used by the International Informatics Olympiads in Teams for the task preparation.

You can find the source code and the documentation on GitHub.

asciinema of task-maker-rust

stats.olinfo.it

Every year in Italy the Italian Olympiads of Informatics organizes a national competition, where the best high school students compete and are eventually selected as the Italian delegation at IOI. On this website there are loads of historical stats, from most of the held competitions.

Terry

Terry is a platform for making Google Codejam-like contests. It's currently used for the territorial (~regional) selection of the Italian Olympiads of Informatics. It is written by me and the rest of the technical committee and the source can be found on GitHub.

Noir: Design, Implementation and Evaluation of a Streaming and Batch Processing Framework

This is my Master's these. You can access it from here, download the PDF from here and the slides (with speaker's notes) here.

Abstract Nowadays, datasets have become so huge that it is impossible to analyze them using only the resources of a single computer. To be able to process them in a timely manner, computations need to be distributed on clusters of multiple machines. Unfortunately, programming distributed software systems is very difficult. Since the advent of distributed computing, researchers and practitioners have been striving to devise abstractions that are flexible and easy to use, yet efficient and scalable. On one extreme, the option is to implement ad-hoc solutions for each processing task, exploiting low-level facilities to handle the communication and the coordination between the different machines. This approach is very flexible, and it is able to extract as much performance as possible from the available resources. However, the development of these custom solutions is usually time-consuming, and the resulting code can be very complex and hard to maintain. To address these drawbacks, many data processing frameworks, such as Apache Spark and Apache Flink, were developed in the recent years. These systems automatically handle the parallelization of the computations, providing to the user a rich set of features that can be used to easily implement processing pipelines. These frameworks, however, are not able to provide performance on par with that of ad-hoc solutions. This thesis presents Noir, a novel stream-processing framework implemented in Rust. Its objective is to fill the gap existing between ad-hoc solutions and distributed processing frameworks, providing better performance than the latter while maintaining their simplicity and ease of use. Even providing similar expressiveness to Apache Flink, our evaluation shows that Noir is able to achieve up to 30× its throughput, and it rivals custom MPI solutions in some workloads.

Polimi Cheatsheets

Open books exams are fun only if you have good enough material to bring. @mark03 and I made the effort to write in good LaTeX most of the cheatsheets of the exams we encountered during our studies. They can be found on our GitHub organization

Map of the Internet

Have you ever wondered how the Internet looks like? Sure, there are many ways to represent it, the one I'm showing is based on an XKCD idea. Basically it places every host on the Internet on an Hilbert Curve, a way to wrap a 1-D line (like the IP addresses) to a 2-D surface (like an image), with the nice property that IPs that are near, will be always near in the image.

The first image shows exactly that, each pixel is a group of some hosts (a constant number you can figure out :P), the color of the pixel represents how many hosts in those addresses answered to a ping request. More red means more responses.

Nice right? Can you figure out why there is a big red square in the middle? And why didn't I ping all the addresses in the bottom-left corner? The answer can be found looking at this slightly different image.

Bird Issue: React Drastically

During the Computer Graphics course in my Master's degree at Politecnico di Milano, Marco and I worked on a OpenGL game. It's a simple 3D game where you move in a small procedurally generated map, and you have to search and click on a little bird to gain points.

You can access it from here.

Not so interesting stuff

Most of the things here are in Italian, be aware!
Tesina dell'esame di maturità

La tesina che ho portato all'esame di maturità può essere trovata qui con le rispettive slide.

Open Source

Alcune slide per un dibattito in inglese sull'open source.

Spanning Tree Protocol

Alcune slide per una presentazione di Sistemi e Reti sullo Spanning Tree Protocol.

Laboratorio Sistemi e Reti

Durante uno degli anni scolastici alle superiori un laboratorio è stato ristrutturato e uno degli esercizi che ci sono stati assegnati è stato quello di documentare la nuova topologia di rete realizzando un sito web.