JEE application with Docker + Glassfish + JavaDB (Derby)

With Docker it’s easy to develop applications in an isolated, deterministic and secure environment. So let’s see how we can leverage Docker features to develop JEE applications.

We will see how to create a container that features Glassfish (the reference implementation for JEE application servers) and it’s default database JavaDB (Derby).

To simply test how it works on a sample project you can use this one:
Continue reading “JEE application with Docker + Glassfish + JavaDB (Derby)”

University notes

I’ve decided to gather my university notes for easier consultation since they were useful for a lot of people (notes from foundations of telecommunications course were downloaded 2773 times!).
Published notes come from the bachelor of Software Engineering at Roma Tre University as well as from the master of Software Engineering at Politecnico di Milano (updates will come).

Of course errors will be present, so if you find any please tell me (a comment is fine) and I’ll try to correct them.

If you like my notes please consider buying me a beer with the following donation button (in person is even more appreciated :)), happy study!

Continue reading “University notes”

Arduino Basic Library

This is an ensemble of independent Arduino libraries to manage basic components such as buttons, potentiometers and leds.

Code and functionalities are intentionally trivial and independent to favor fast prototyping, modifications and customization.


  • modular – completely written in C++ with OOP programming principles and it doesn’t interfere with other libraries
  • non-blocking – delay() function is not used
  • easy to customize

This library was created with the help of PlatformIO.
Continue reading “Arduino Basic Library”

Multiboot USB drive for multiple OSes and tools

This is the successfull procedure I adopted to create my multiboot USB drive with Ubuntu linux and Windows 10 (but you can put every bootable .iso or .zip file you want).

I have also tried SARDU and YUMI, but I couldn’t get them to work with UEFI.

Unfortunately the entire procedure only works on a Windows OS, if someone knows a  way to do the same on linux just drop a comment line.
Continue reading “Multiboot USB drive for multiple OSes and tools”

Design and Implementation of a MPPT algorithm for photovoltaic panels based on neural networks

Bachelor thesis in computer science and engineering at Università degli Studi Roma Tre with title “Design and Implementation of a MPPT algorithm for photovoltaic panels based on neural networks”.
Supervisor: Francesco Riganti Fulginei


Lightweight and multipurpose list data structure in C

In the last C project I needed a versatile list data structure.

The needs for this list where:

  • lightweight on memory
  • easy to use
  • support for every kind of information I wanted to store

Given those premises, I decided to create a classic list data structure that instead of using the correct data type, it uses (void *) as the information holder.
Using a void pointer gives you a lot of flexibility because in this way you can store every kind of information you need. You can even obtain a list that holds different element types!
However the use of (void *) requires a bit of a consideration. In fact, deleting a node from the list becomes difficult because the information that is being held by the list node needs an appropriate deallocator function. Another reason of concern is that when you get the info from a node list, you have to cast it as the element type that you know it is.
Continue reading “Lightweight and multipurpose list data structure in C”