An Interactive Environment for the Didactical Manipulation of Programs


Here is my work of the last 4 months.


Download PDF Thesis here


Video embedded in presentation


(To run it locally on your machine, you have to install Google App Engine for Python [which you can find it here at time of writing ] and then launch the google app engine program and ‘add existing…’ which will be the content of the zip from above, and press play to run it locally)

Web app

This work has been referenced in

and in

BloP: easy creation of Online Integrated Environments to learn custom and standard Programming Languages (Stefano Federici, Elisabetta Gola,università di cagliari, Italy)

at siremsiel2014  (sirem – sie – l 2014 )

Update on shell-fm

Today I found another excellent, really really excellent web interface! It is based on ruby, sinatra and jquery!
you can find it here:

I’ve installed git, ruby and sinatra on my raspberry pi , created the config.yml file and I was good to go!
(shell-fm was already installed on my r-pi following my precedent blog post)
Look here! Isn’t it nice? There’s also Album cover!!!
Nice work!Image

Arduino, Midi driven Leds/Stuff

Here are a few step to set-up the basis for an interactive installation with lights(or solenoids, or whatever you can imagine) driven via midi commands, an easy way to planning what has to light up and what has to shut down via a midi track, like this sample image show(a note in time sets light up or shut them off).

I’m using Serial <> MIDI converter from spikenzielabs.
All the stuff, inner working, files, installation and usage steps are explained here

Basically you need to create two midi ports via you’re preferred audio configuration system in your preferred operative system, and the map them to be used in your serial midi tool.
The serial midi tool acts like a proxy, if you want to put it in this way.
Here is a drawing to explain a little bit the underlying architecture.(made with balsamiq mockups webdemo -> code )

You need Processing to run the converter program(script), but you can create the application once for all with processing itself.
The example in the site linked above does only a write on the serial port, and it makes arduino send midi to the computer.
I’ve done it the other way, my computer sends midi to the arduino and the arduino acts accordingly to what I’ve told him to do.

Steps to follow:

  1. connect arduino and if you haven’t already done it, upload sketch(once you’ve done it, you’re ok with arduino)
  2. start serial <> midi (select midi ports you’ve previously created)
  3. start midi software(and if you haven’t configured it yet, do it)

All this happens via software, no hardware needer other than an arduino board with some resistors and Leds.
There are many guides out there that open apart a midi connector and plug it in the arduino to make an arduino talk directly to midi devices, but this is not the case.

Here is the arduino code (sketch) that I’ve put up (with some help of internet) 

Here is a screenshot of my desktop during the process

Here is a (bad quality)video of me sending midi notes to the board.

Java Screen Viewer

This evening my friend Mauro asked me if I knew some software that would allow him to have a preview on its main display of what his secondary display was showing, as this secondary display is far from the main display.
I made my classic Google researches without getting many results.
Idea behind the software itself is simple, but all I found was licensed software, not free and not opensource.
I decided to try to implement it by myself, first with no success using C++ and QT 4.6(I’m not yet that good with QT), then switching to an implementation in Java, using multi-purpose class called ‘Robot’.

Here you can find a screenshot of my dual-monitor setup and  a screenshot of what the java app is capturing.

You can choose fps and how big the area that you want to preview has to be.

It loads simple parameters from a configuration file that must be on the same directory of the executable jar.

It also save configurations to that file

Windows has a contiguous area of desktop, also when you have a multi monitor setup: depending on how you’ve placed the monitor in the Screen configuration setting, you can easily find the correct values of configuration parameters that allow you, for example, to fully preview the secondary display.

Given a start position (x,y) and width and heigth of the preview rectangle, it captures only that pixels in that area.

In my example, my secondary monitor start showing pixels from coordinate (1280,0) within a rectangle of 800 by 600 pixels.


Full desktop screenshot

Java App screenshot

Source code and executable

[Be sure to have a java runtime environment installed, then lanch with ‘java – jar <xxxx>’ from your prompt/terminal o double-click gui mode]
[Netbeans project, 6.5.1]

3d Graffiti – 3d tag : a concept of augmented reality for mobile devices

On scribd

On slideshare

Creative Commons License
3D graffiti – augmented reality for mobile devices + georeferentiated data by Pier Giuliano Nioi is licensed under a Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
Based on a work at
Permissions beyond the scope of this license may be available at