Personal Projects

I work on a lot of personal projects in my free time. Here are some of them (mostly in English, but there may be some French stuff).

ARM Global Intern Innovation Challenge 2016

key-1024x768During my summer internship at ARM, I took part in a two-week innovation challenge with my teammates Dale Whinham and Alex Gilday. The goal was to create a cool demonstration/lesson to teach kids about IoT using BBC micro:bits. We chose to work on security in internet communications, by using two of our micro:bits to exchange encrypted messages. The third micro:bit was a “sniffer” that could intercept un-encrypted messages.

We had a blog for progress updates, and the code of the Android app as well as the micro:bit’s firmware is on Dale’s GitHub.

Dice Recognition in OpenCV using K-Nearest Neighbor algorithm and Support Vector Machines

13320522_10207169188054174_1627061999523166802_o
Recognition of one die

I am a huge fan of tabletop Role Playing Games, such as Dugeons&Dragons, and this is what inspired this project. The goal is to read numbers on dice and compute the score using OpenCV and the K-Nearest Neighbor algorithm or Support Vector Machines. The code for this project can be found on Github.

This project was then continued during my summer internship at ARM Holdings in 2016. It was made into an Android app and optimized using ARM NEON assembly.

Music genre recognition using Fourier Transform and Wavelets

“Flux” of an electronic music track

This project is a Scilab implementation of what we can find in a paper from Tzanetakis et al. The goal is to recognize the genre of a music piece using features extracted from the FFT and DWT. I added a logit regression, computed using R, that is able to separate electronic music from classical music. This project could be continued in different ways:

  • Use Support Vector Machines to recognize more genres
  • Make a C implementation to recognize the genre in real-time (could be fun to do on a smartphone, for example)

This code is on Github.

Fixing and modifying an old arcade machine to play SEGA Genesis games

img_20160519_162552This old JEUTEL arcade machine had been sitting in the cafeteria at Ensimag for more than 10 years (or so I’ve been told). I decided to fix it so we could play Genesis games on it. A LOT of work was put into this, because it was one of these projects where the moment something starts working, you find out something else is broken (this thing was made in the 80’s, after all).

I learned tons of stuff during this project: a lot of electronics and hadware, but also some kernel hacking. The arcade machine now contains a PC with an old Pentium 4 and an ATI 9200 that runs Archlinux.

All the resources that were used to fix it can be found in this Github repo. A tutorial (in french) is also there so that people can fix it again if breaks.