Skip to content

Latest commit

 

History

History
119 lines (97 loc) · 5.78 KB

README.md

File metadata and controls

119 lines (97 loc) · 5.78 KB

About me

Hi! My name is Gianvito and I am a curious, passionate, sturdy computer scientist from Bari (Italy), always looking for thrilling problems to solve.

This page will provide you some information about me, my projects and the things I love. If you are interested in my academic background and my work experience you can have a look at my curriculum vitae. You can also find my contacts there. Feel free to send me an email (taneburgo_at_gmail_dot_com) for any question: I will be more than happy to reply!

I'm interested in deep learning, distributed systems and algorithms, cloud computing and concurrency. My most interesting GitHub projects cover these topics. In the future I'd love to have the possibility to also delve into other fields, such as algebra and statistics, computability and computational complexity. Above all, quantum computing is polarizing my curiosity these days.

I see myself as a computer scientist more than a software engineer, since I love analysing and solving complex problems from a theoretical point of view, in front of a whiteboard, rather than just building software. However, I also like the practical part of my profession and few things in the world can give me satisfaction like an expressive, clean, elegant code does. I believe coding is an art involving a unique form of creativity. For this reason I always strive to implement algorithms in the best way I can and to develop robust, efficient and maintainable software. I really like studying new paradigms, languages, design patterns, libraries and tools and I've become acquainted with the practical aspects of development, such as those involving testing, optimization, scalability and profiling.


About my projects

In my GitHub profile you will find repositories for most of the code I've written in my life, from my first Hello World in C up to my master's degree machine learning thesis on Constrained Adversarial Networks, a deep generative model.

I've created a simple README template to keep project information organised. Most of my projects conform to this template and you should be able to easily retrieve the most important details for any of them.

They include programs written in Python, Java, C++, C, Scilab, JavaScript, HTML and CSS, using a wide variety of libraries (TensorFlow, NumPy, SciPy, Akka, Spark, scikit-learn, SimPy, Lombok, Numba, Selenium), platforms (Google Cloud Platform, Heroku) and technologies (Hadoop, Java EE, git, Ant, Maven, WSDL, stem).

If you wish to have a quick idea on my coding skills, you can have a look at one of these projects:

A deep generative model to instil prior knowledge on discrete domains in the form of constraints into Boundary-seeking Generative Adversarial Networks. This repository contains both the TensorFlow model and the testing suite to generate data sets, run experiments, train Constrained Adversarial Networks and collect results.

A black-box testing platform for message-based distributed algorithms. This tool provides a handy way to deploy a distributed environment, execute a distributed algorithm, orchestrate a series of tests and visualize the results. The environment can be either pseudo-distributed or fully-distributed on Google Compute Engine. Distributed algorithms must rely on message passing and tests are performed by modifying the underlying network to introduce packet delay/loss/corruption/inversion via netem, a low-level Linux kernel tool.

A collection of elegant Java 8 implementations of linked-list-based concurrent set. The algorithms are described in the book The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit.

A didactic implementation of Raft consensus algorithm in Akka.

You may be surprised at not finding appropriate tests for the code. If this is the case, either you've forgotten your good old university days or you have had very good mentors. Honestly, I've learnt the true importance of testing only while working for companies. I once had a discussion about testing my thesis code with my co-supervisor. He told me: "Experiments are your tests". So, the absence of proper testing is just one compromise I've been forced to accept to respect deadlines. It was hard, but necessary. Sorry, TDD guys. I hope things will be different in the future.


Beyond my projects

Some of you may be interested in finding out something about me not strictly related to computer science. This is the right place and I'm happy you are reading this paragraph because I consider myself a programmer with a human face, as in the wonderful story of little printf.

In my spare time I try to cultivate my hobbies: reading manga and comics, building LEGO sets, running and playing Magic or other board games. I also like experimenting new things and I'm always open to new adventures and experiences. In general, I like being pushed outside my comfort zone and being challenged. This is one reason for running OPPY (One Project Per Year), my meta-project started in 2014: every year I try to complete at least one personal project to add some value to my life.

Ad maiora!