Projects Portfolio

It follows a list of some of the projects undertaken as contractor or as employee

* AGORA SecureWare SA, Manno – AGORA 3 for iPad

Contribution to design and development of next version of the app for iPad. Direct interaction with UX team. Writing modules for server communication (with JSON), unit tests and various features of the app.

* AGORA SecureWare SA, Manno – Cryptolib

Writing iOS code to enhance existing Agora app. Our customer demanded a secure way to store data on the iPad. I coded a library that in addition to use NCipher and SQLite, was ecrypting data using a key created with user profile characteristics.

A separate module was working with the library to ensure smooth synchronisation with a remote server, in a transparent way from the user. 

 

* CSR, Cambridge – Android BLE positioning library

I ported a BLE proximity/positioning library from iOS to Android, using Java and C++ (NDK); taking care of security and encryption functionalities, test cases and writing demo Android applications.

BLE beacons were from CSR and through the library it was possible to configure them in different ways, including with encryption. I was directly responsible for communication, problem solving and customer satisfaction of the business unit driving this project (which was in India).

 

* Qualcomm – iOS application with BLE

I wrote an app for iPhone, iPad and Android to present Qualcomm Museum. Using Bluetooth Low Energy (on iOS) the App assists the Museum visitor helping to establish his/her indoor position and suggests proper content, location-based, on the fly. Graphics for the App has been designed by UX team and therefore I coded customized widgets (Using Core Graphic as well). I coded the same App for Android tablets and handsets (but without BLE).

Because of the particular shape of the museum the signal from beacons was not regular, so I wrote a calibration app that was gathering data in the museum and send them over to me: in this way I could remotely calibrate the values and fix the ambiguous measurements.

 

* Novalia Ltd – Connect paper to internet through iOS devices
We equipped Novalia printed posters with a TI BLE chip, for which I coded the profile (in C). Then I developed several iOS applications for iPhone 5 and iPad 3 that talked to the posters via BLE. Few of them were shown at TED. The most complete one (on iTunes AppStore) is “Novalia Switchboard”, which uses a Novalia 8-keys postcard as remote controller to allow a Jazz or Latin Jam session (each key pressed on paper makes an instrument to play/mute in the iPhone/iPad), controls iTunes play lists or allows sending customized Twitter messages.

* Novalia Ltd – Development of an Android Audio Protocol
Novalia postcards are equipped with a small speaker that plays a different sound when a specific area of the paper is touched. I first developed an Android application that recognized the sound and took an action (like touching an icon of a tiger on paper, made a video of a tiger to launch in the mobile – shown at TED). I used an FFT modified function that I coded in C++ and compiled with NDK. On a second step I developed a protocol that rather than recognizing a note was analysing a sound pattern. For prototyping I used an Arduino Uno board.

* Novalia Ltd – Connect paper to internet through Linux dev boards
Designed and implemented several complete applications that run on Linux dev boards (Raspberry Pi and Beagle Board) to connect paper to internet via Bluetooth low energy. A Python script would capture a touch event on paper and take a corresponding action (like play, pause, update an audio file or register a like or a vote). Then data were transferred to a remote database that I implemented using MySql and analytic where shown into a web page that I wrote in PHP.

* Polatis Ltd – Porting of eCos application software to Linux
Polatis Optical Network Switches software was written for eCos and Cygwin. I was hired to support the transaction towards a new processor running Linux. In addition to the software application maintenance (in C++) I have rewritten all Makefiles to support building for Linux (PC and ARM) and eCos (cygwin and ARM). I took care of issues related to the upgrade of the tool chain (including fltk, nanoX, microwindows).

* Polatis Ltd – Python testing suite
I created a Python test suite that would interact with the Eprom of Polatis NIC board via serial port. The goal was to write at specific addresses and verify the correctness of data after reboot.

* Airvana Ltd – Development of Service API for femtocell
I designed and developed Service API application for Airvana's Femtocell. The multithreaded C++ software was aiming to allow remote configuration and maintenance of the Femtocell using UDP communication. In addition to coding and decoding of requests, the software included a finite state machine, centralized messaging system and unit tests. According to Airvana's development process code was reviewed and statically analysed. Aside the development and design documentation, I took care of interaction with System Team for specifications review; with test team for feedback and problem solving and with FAE to provide customer support.

 

* Airvana Ltd – Python testing suite for Service API

I created a testing suite in Python to test all API calls supported by the Service API application. Calls where given by coding requests into UDP packets and results were analysed by decoding UDP responses.

 

* Airvana Ltd – QoS
I was responsible for QoS of Airvana Femtocel regarding implementation, support to testing team and to FAE to help meeting customer needs. Configuration was read from a server and discrimination of packets was done via DSCP packets. I hacked the ipnet Linux kernel module in order to carry on the packet header after encryption.

 

* Airvana Ltd – Python code to generate C++ source code headers from XML data model
Airvana femtocell was using a complex data model that periodically was provided by a remote server like TR069 xml files. I developed a Python script that would parse the XML data model(s) and generate header files and structures to be used by developers. Following this approach led not to miss any feature from every data model update into the code.

 

* NemeriX Ltd – Porting of GPS Hosted solution into Symbian S60
NemeriX Hosted GPS solution was a multi-threaded complex framework written in C. I have created  Adapter layers to allow bindings into Symbian OS. Using Bluetooth communication we could demonstrate NemeriX GPS chip working with its hosted navigation solution running into a Nokia N80.

 

* NemeriX Ltd – Porting of GPS Hosted solution into Linux Omap board and PC
I have created Adapter layers for NemeriX GPS Hosted solution (written in C) for Linux, using POSIX libraries. First I targeted Linux PC, for which I have created a Linux live CD distribution that was given to FAE and salesman to demonstrate NemeriX GPS chip operating into a Linux based device. In a second phase I moved the porting into a TI Omap board.

 

* Nokia – Porting of Python into Symbian S60
Symbian S60 programming had a steep learning curve. To simplify applications development we ported Python scripting language into S60 mobile phones. I initially helped porting the main interpreter, then I took responsibility for the socket module, Bluetooth communication, sms, database and most of the graphics widgets. The project was then release in Forum Nokia and finally made Open Source.

 

* Nokia – Distributed Phonebook prototyping
For proof of concept in the program 'Next generation mobile phone' I developed a distributed phone book for Symbian S60/S80, using J2ME MIDP2. The application (for Company internal use) was querying the Nokia contacts directory to provide business cards of employees matching the name while typing.