Andrea Cognolato

About me

I am a student and developer interested in web development, machine learning, functional programming, compilers and finance. I am studying Computer Engineering at Politecnico di Torino.

Currently seeking an internship for Summer 2019.


See it here.


How much of npm can you break

Built a website to check which and how many npm packages would break if one of its dependecies was removed from

To build this application I've used the Rust programming language. I have chosen this language because of its excellent performance and concurrency safety guarantees which, along with some ad-hoc algorithm choiches, let me get very high performance while processing a 1.8GiB JSON file.

Rust Data Structures JSON


Created, along with Daniele Monteleone, registro-react: an alternative frontend for the online grade register our school used.

The backend, written in typescript with expressjs, crawled the original website, parsed its html and exposed the grades and communications as a JSON api. The frontend, written in typescript with React, communicated with the backend api and handled login, notifications and showing the data to the users in an graphically appealing manner.

React Typescript Front-end development


Comments-as-a-graph is an experiment in visualizing comments from communities such as, reddit and Hacker News using a graph.

A Python script downloads the comments from a thread and parses them to output a graphviz dot language file which describes the graph. Then the client side javascript downloads the .gv file, and using Viz.js renders it to the screen. The Viz.js was custom compiled using emscripten to reduce the payload size by 25%.

Graphviz Emscripten Front-end development

PURK Blockchain explorer

As a contractor on Upwork one of my tasks was to port a blockchain explorer written for the BoolBerry (BBR) coin to PURK. This involved fixing some of the frontend Javascript code but most importantly implementing new JSON-RPC 2.0 methods directly into the coin's daemon source code, written in C++.

C++ Blockchain Cryptocurrencies

Other things


  • (Unfinished) Wrote react-parser-viz: a react based web application to visualize how a recursive descent parser works.

  • Implemented test-lang: a programming language based on lambda calculus in both Ocaml and Haskell.

  • Worked as a freelancer on (my profile)

    A large section of my work consisted in working with cryptocurrencies and porting software such as blockchain explorers and mining pools to new currencies, ensuring that the compatibility issues between implementations were fixed.

  • Contributed to facebook/reason.


  • Wrote channed: an small 4chan client built with ReactJS.

  • Wrote rust-editorconfig: a Rust library which implemented the editorconfig file format for text editor plugins.

  • Tinkered with the ESP8266 and wrote a custom web UI to control my IKEA led strips.

  • Competed at regional level in flatwater kayaking.

  • Read and implemented my neural network to learn on the MNIST digit dataset in numpy+pandas and Tensorflow.


  • Wrote an online shopping list for my family.

  • Wrote a >crawler in F# for the latin dictionary

  • Wrote for a friend magicBot: a python crawler with a web UI which parsed an online market of Magic: The Gathering cards to show the average price of a card between various editions.

  • Tinkered with elm and wrote a simple web app to show data from a local api.

  • Competed at regional level in flatwater kayaking.

  • Read Real World Haskell and Real World OCaml which sparked my interest in functional programming and compilers.


  • Wrote xresthemechanger: a python script to change the .Xresources color theme.

  • Wrote a tiny TPC server in C using the unix system calls.

  • Wrote Drinkcraft: a simple Minecraft mod in Java.

  • Switched to Archlinux and installed and configured it.

  • Won my school's Informatics Olympiad and competed in the regional selections.

  • Won, along with two other students, the science fair with a project on the effects of exposure to non ionizing radiations.