I use to do some developments during my free time. You will find below a list of little softwares or scripts I have written. Some projects are hosted directly on this server, some others are hosted on other cloud services. Source codes of projects are mostly hosted on Github.

Most of the time I am writing web based applications because they are easy to set up. There is a lot of things you can do with HTML and Javascript, from audio file analysis to 3D rendering with OpenGL. For most cases, you don't even have to use an HTTP server. Moreover, web apps are really easy to share or deploy and can be run on plenty of devices. Anyway, I am convinced that whatever the language, it is the idea that is important.

BMP280 adapterJavascript, Node.js

BMP280 adapter

I am closely following the news around IOT and home automation. I've watched a lot of projects dedicated to the management of different sensors and devices but I've always been repelled by their complexity or their lack of quality (no name here...). Then I discovered Mozilla Things Gateway which seems to offer a good user experience and the support of a lot of devices, especially Zigbee enabled stuff.

One of my coworker owns a Raspberry Pi and a BMP280 (a small temperature and humidity sensor that can be attached to the Pi GPIOs). What a perfect opportunity to test Things Gateway and to develop my own add-on (BMP280 was not natively supported)! I found an excellent Javascript library for the BMP280 so I just had to write the code of the adapter that allows Things Gateway and the sensor to communicate. The result is quite simple but it was difficult to write because of the poor quality of the documentation. I submitted the add-on to Mozilla and they accepted it so it can now be installed directly from your instance of Things Gateway.

Mozilla Things Gateway is far from being finished and is missing a lot of features. However it's a very good start. I'm now thinking about buying a Zigbee USB key and some sensors to continue experimenting with home automation.

Code is available on Github and the add-on is directly available in Things Gateway.

DICOM cleanerJavascript, DICOM

As part of my job, I've heard a lot about DICOM, a standard for the communication and management of medical imaging information and related data. To understand the DICOM file format, I decided to write a web application that extracts and displays the attributes contained in a DICOM file. Parsing the file looking for textual attributes was an easy task once I built the dictionary that lists the types of data usually found in a DICOM file. However, I didn't even try to display the images because they are often stored in formats that are not natively supported by web browsers and require a library to be rendered in a canvas. Finally, I added the possibility to clean the attributes that contain personal information.

This was a good opportunity to manipulate binary data in Javascript and to use a web worker. I think the DICOM file format would benefit from a new architecture based on a zip file containing an XML file for textual data beside images in their own files.

Code is available on Github.

CubemindPawn, Futuro Cube


After some times playing with the Futuro Cube, I wished to develop my own game. I chose to adapt the famous Mastermind game. Futuro Cube programs are written in Pawn, a simple language that looks like C. Pawn is very poor in terms of features compared to the languages I usually work with and it was interesting to be reminded how modern languages hide complexity.

The Futuro Cube SDK works very well. The documentation, however, is really poor and is missing use cases and examples. The biggest challenge in developing this game was to find the good design to make the Mastermind playable on a cube.

Code is available on Github.

Kaamelott SoundbotGo, Google App Engine

Since everybody is talking about Go, I thought I had to give it at least a small try. It's also one of the language available on Google App Engine "standard" environment (compared to "flexible" environment) which means you have a comfortable free quota to run your scripts. Besides, we're big fans of Kaamelott at work and heavy users of the Kaamelott Soundboard. And we're also using Slack. Perfect match for a Slack command that is able to add links to sounds from Kaamelott Soundboard in our Slack channels.

I enjoyed writing these few lines of Go. It's like a mix of old and new programming concepts. However I was a bit disappointed by the lack of native features.

Code is available on Github and an instance is available on Google App Engine.

WheeltabJavascript, Chrome, Firefox


I heard very recently that a -more or less- standard API for browser extensions has been created, supported by Google Chrome and Mozilla Firefox. I would like to give it a try. I created Wheeltab, a browser extension that allows you to navigate through your open tabs using your mouse wheel.

I am disappointed that the API does not allow to use native components of browsers. It is very limited in some way.

Code is available on Github and extension is available here for Firefox and here for Chrome.

SimCity BuildIt HelperNeo4j, Java

SimCity BuildIt Helper

Last year I discovered the game SimCity BuildIt on the Google Play Store. A part of the game consists in the creation of small objects. These objects depend on each other, creating a kind of a tree. I found it was a good use case for a graph database and decided to import game data in Neo4j. I have then created a small website that will help you build these objects by displaying their dependencies and the buildings where you must build them.

I really like how easy it is to write query for Neo4j using their query language "Cypher". However, I am a bit disappointed by their REST API. Currently, it is not possible to configure users access to the database.

Code is available on Github and application is available here.

Badminton Score TrackerMonkeyC

Badminton Score Tracker

After I bought my Garmin Fenix 3, I decided to test Connect IQ which is Garmin platform to create applications for their products. As I practice badminton and always forget my score, I developed this small application to keep track of the score during a badminton match.

It was nice to think a UI for such a tiny device and to use Garmin SDK. Connect IQ works already quite well given it is only the beginning of their platform. I wished to continue the development of the app and try to detect how many strokes you make during a match but it seems the SDK does not allow an access to raw data from the accelerometer. I hope this will be improved soon.

Code is available on Github and application can be downloaded from Garmin Connect IQ store.

Next development steps:

WebwatcherPython, Google App Engine


I decided to test Google App Engine for real. I choose Python to build this small application which has basically 3 features: configure some websites you want to watch and how you'll be warned in case of failure, check these websites and display a dashboard to show their current status and recorded downtimes. I must say that Python and App Engine work very well. Google Datastore is impressive because of its simplicity.

I use this little project to monitor this website. It sends me an e-mail if a specified text is not found on the home page.

Code is available on Github and application is deployed on Google App Engine.

PeerchatJavascript, WebRTC


I've been watching WebRTC for a long time. I have tried to use it before but browser support was too bad to build something reliable. But I think this technology is now ready for great applications so I wrote a small proof of concept which allow you to chat and to send files to your buddies inside a browser in peer to peer mode.

I also took the opportunity to test Heroku for the small Node.js script server side. I'm pretty amazed by how easy it is to deploy applications with these new providers: a git push and you're ready to go. And you can rollback to a previous version or boost you server in a click. This is crazy. In the case of Heroku, I'm a bit disappointed by the management console which is super slow.

Code is available on Github and application is available on Heroku (no HTTPS because Heroku requires you to pay for it).

Next development steps:

CheckmateJava, Android


A friend of mine would like to learn how to develop an Android application. We decided to build a chess game because we didn't found a descent one on the Play Store. This is my first pet project in cooperation and it is very interesting.

Chess is a very interesting game to program. It may look very simple at the beginning but movements like rook, promotion or "en passant" capture can kill your implementation if you don't take them in consideration at the beginning. This is particularly true for "en passant" capture which prevent you to analyze chessboard statically because you can't say what movements are available if you don't know the moves history.

We would like to rely as far as possible on Google API to build a fully multiplayer game and to synchronize your games across all your devices.

Code is available on Github and application will hopefully be released soon on the Google Play Store.

Philips HueJavascript, Philips API

Philips Hue

A friend of mine bought a Philips Hue kit. As soon as I learned there was an open API, I tried to build an app.

The API is pretty easy to use except for setting light color... The fact is that lights take their color in a special color space and Philips does not provide a documentation about how to transform a simple RGB color to this color space. A lot of smart people found the right way to do so, but I found that lights does not behave as expected according to the documentation for colors which are out of the color space. That irritated me a little bit: what is the purpose of an API if it is not well documented?

Anyway, I'll finish what I started and put it here.

Better LatitudeJavascript, Google API

Unfortunately (again), Google closed the Latitude API. The application no longer works.

Better Latitude

I wanted to test Google APIs for a long time, particularly OAuth. It's now done with this application written entirely in Javascript. Yeah once more, Javascript, but it's a key language nowadays.
This application helps you to manage your Google Latitude history. I'm not happy with the official one because it does not allow to delete more than one record at once, it's very frustrating. It can also show your some nice stats. Feel free to use this application with your data.

Although this application won't mess up your data, be kind and don't try exotic actions. There is a lot a asynchronous stuff and some will just not work.

Code is available on Github and application is available here.

UniverseJava, Javascript

After a fail with my previous Android application I decided to build an other one. I started to build a small Universe simulator using Canvas. After some hours spent and a disillusion about native applications, I realized that I could do the same application in HTML/Javascript.

To make it more difficult, I choose to use 3D with WebGL. Unfortunately, after some more hours and one or two headaches trying to debugging code, I realized that my old Geforce 7800GT does not support OpenGL ES 2.0. I gave up leaving everything unfinished.

As always when you don't have any direction, I gave up both projects.

SMS OVHJava, Android, OVH API

I give up. OVH does not even answer my e-mails. They've found the right way to disgust a developer.

Unfortunately the application has been removed from the Android market by OVH due to trademark violation. I'm currently in discussion with the legal department from OVH to find a solution, but it really makes me sick to see how they have acted. They removed the application without any warning whereas I spent spare time to develop it.


I own an Android phone for a while now so I couldn't not try to develop an application. As I also own an OVH account which allow me to send SMS from Internet and avoid roaming fees when I'm traveling, I thought this was the perfect use case for my first Android app. OVH is a big hosting provider in Europe and is also selling SMS packs.

I had to use the OVH SOAP API which is really a pain because there is no native support for XML and WSDL in Android. After I decided to write the XML by hand, I really worked hard to handle network calls. Build a robust application which rely entirely on network services on a mobile device where connection can be killed at every moment is really difficult. And it's even worst when you know that Android apps can be paused or resumed anytime. Anyway, after some hours and a research on Android forums to know how to use Android unpublished SMS API, I managed to make it work pretty well.

If you own an OVH SMS account, try it on the market:


I have lost all my faith in PHP. I was believing they could build a real language with PHP 6 but I now know this will never happen. The ubiquity of PHP on the web is decreasing as old hosting providers are replaced by new ones which purpose languages like Python, Java or Node.js. I think this is beginning of the end for the PHP era.


Inspired by the Apache Tapestry Java web framework, I'm working on a tiny MVC framework in PHP. I would like to show what you can do in PHP. I think there is still a market share for this language as it can be used by everyone to quickly create a website which can be hosted almost everywhere.
The purpose of this project is to allow the creation of prototypes very quickly thanks to MVC. Separation in layers is a good idea to keep a project clean, specifically with PHP. The framework is totally component based and manage data binding. It strongly relies on PHP DOM API.

I never released Pastry as a stand alone package. Instead, I wrote this demo website called Tracks that uses the framework and data generated from my other project Scanlan. This web application allows a logged user to search a track among a catalog of music files, then listen and review the track.

Code is available on Github and application is available here.

Next development steps:

Google Wave robot and gadgetJava, Javascript, Google API

You all know what happened to Wave: killed and buried. Anyway, it was a nice try with Google App Engine API.

Google Wave

As an early adopter of Google Wave, I've created a tiny robot. He's counting every user messages in waves where he has been invited. You can invoke him with the command !stats and reset data with !reset. Try him!

Wave robotJust add in your wave.

I've also created a tic-tac-toe gadget.

Wave gadgetInstall this gadget from by clicking on the "New extension installer" button while writing a new blip.

SVN PythonPython, SVN

I wrote a small web application in Python to manage SVN configuration file using a LDAP as a source to find users.
Details coming soon.



I'm tired from people saying that Javascript is a boring language, cabbalistic and difficult to use. That's why I decided to start a little prototype in Javascript to prove that this language is really interesting with some nice concepts.
The goal is to emulate an OS desktop in a browser. All has been developed from scratch without any usage of common Javascript libraries. This use really bleeding edge code so you must use latest version of Gecko or Webkit to render it.

Go here to give it a try.

Next development steps:



Written in Perl, Scanlan is a bunch of scripts which can index files from a local hard drive or a network location. It creates a database to record some details about each file and try to identify identical files.
The goal was to use this little piece of software during a LAN to index all files on all computers to make sharing easier (LANers would know what I mean).

Unfortunately, I never finished the network part required to discover all computers on the network to find shared files. Today I use it to index all media files on my NAS.