These are specific technologies and programming related topics on which I've worked for some long time.

C++

I've been using C++ in various types of projects and tasks since 1995 together with different types of framework libraries from Borland OWL and Microsoft MFC to, more recently, Qt. In recent project I've used template libraries like Boost and Eigen.

In the beginning most relevant projects were related to core programs like a small compiler or an experimental Java VM.

The second largest project was the Master Thesis in which C++ was used for a 3D visualization tool for Web and immersive based on Information Landscapes. This involved, in 2002, the use of OpenGL, integration with SpiderMonkey JavaScript and dynamic loading of resources.

Since then I've worked, during PhD and later on, on multi-threaded applications for 3D interaction using Haptic interfaces, involving in this case multiple high-rate threads (from 200Hz to 1kHz) necessary to providing the realistic force feedback necessary for this type application. In addition to using internally developed framework in some projects I've adopted the CHAI library.

Several projects has required the integration with scripting engines like Python, Lua, SpiderMonkey and XVR.

OpenGL

I've approached OpenGL in 2001 on a Digital Tru64 Alpha Workstation and then worked more in 2002 during my Master Thesis on a 3D visualization system based on the concept of "Information Landscape" both on desktop and as a plugin. In 2003, during a period at VECG of UCL London, I've got my first encounter with a CAVE, powered at that time by a SGI Onyx2 Infinite Reality 2 experimenting the features of multi process development.

During my PhD, working on Haptic interaction, I've worked several times with OpenGL in C++, and then later as part of the XVR Framework for immersive 3D environment.

In 2006 experimented OpenGL with Java, using JOGL for porting the XVR Framework on that platform.

I've followed the evolution of OpenGL and more recently I've worked with WebGL.

In addition to development with OpenGL I've given some lectures on GPU processing and contributed with an Appendix to the "Computer Graphics with OpenGL" book 4th edition.

MATLAB

Mathworks MATLAB is one of the fundamental tools used in my research and I've approached it during University for the first time. In particular I've used Simulink for the simulation and control of the haptic and virtual environment systems during research.

In addition to using MATLAB as as tool for research I've worked on a framework for data storage embedded in Simulink inside the SKILLS project, the DataKit. Other pieces of reusable code have been contributed to the Mathworks File Exchange.

Finally in 2009 I've taught a Course on Simulink to undegrad students of Scuola Superiore S.Anna.

Java

My initial serious development started in 1997 and I've worked mostly on the Desktop side of Java. During 1998 I've worked on a simple Java VM written in C++ for understanding some of the inner workings.

Last major project has been JXVR in 2006, the porting to Java of the XVR 3D framework. This work involved first the development of the 3D library based on JOGL, and then the implementation of a compiler that translates XVR code into Java code. The translation process was based on ANTLR in addition to a simple inference framework for propagating the types in the XVR code that is inherently dynamically typed.

Python

My encounter with Python started in 2006 and since then I've used Python in many occasions both for everyday scripting, for complex applications, or just for solving Project Euler problems.

Some of the results have been contributed to the community, in particular in 2006, at EuroPython, I've presented the integration of Python with XVR with a paper entitled "Dual Scripting in a Virtual Reality Engine. Embedding Python in XVR" (here). PYXVR is a module that uses the C Python API for interfacing with another system and it is currently used for providing GUI to immersive applications.

And then in EuroPython 2007 with Walter Aprile we presented "Managing and displaying user track data with Python".

Then from 2007 I've pushed the adoption of Python in the context of the European SKILLS Project as a fast prototyping tool for data processing and machine learning.

Python has shown to be very useful also for processing textual information as the ones coming from Patent Data. For the Patent Mining research I've created patlib, a library for acquiring and manipulating USPTO/NBER patent information.

More recently I've moved to the used of Python for 3D and simulation using PyOpenGL and PyOpenCL, resulting also in a contribution to a book chapter on this topic.

More

See Also my Programmer's Timeline