Projects I have written

The following are some personal and school related projects that I thoroughly enjoyed.
However, because Epitech is a very time-consuming school, I unfortunately didn't have as much time as I would have liked for personal projects.

Backelite work projects

Eurostar is the company that operates the train connecting London to both Paris and Brussels through the Channel Tunnel.
The Eurostar iPhone application can be used for mobile ticketing thanks to QRCode Tickets.
Voyages-SNCF is the leading website to book travels in France, and is almost the only one available to buy train tickets online.
The application is available on both iPhone and iPad.

Elle à Table
Elle à Table is a paper magazine, now ported to the iPad. The application is both a magazine reader, and a recipe cookbook. Every month, new magazines and recipe packs can be downloaded.


Adium is a multi-protocol client, using libpurple as a backend. It is a very powerful application, and is one of the most used chat applications on Mac OS X.
However, the protocol that Epitech uses in not a standard one. It is an in-house protocol, named "Netsoul", created by and for the school.
At the time, the only client available on Mac OS X was old, and did not work correctly. That is how AdiumSoul was born. It was not a school project per say. Just a personal one, related to school.

The first step on creating this plugin was obviously to look at how to create an Adium plugin.
Unfortunately, only two tutorials existed, and they were both outdated, and too short anyway. The only step that was left was simply to use Adium's code source to find the available APIs. Most of Adium's developers are also on IRC, and they have been really helpful when I was hitting some hard wall.
The biggest difficulty, however, was not the plugin part, but the protocol part. For example, for some reason, the server would not return anything if a specific command was successful, but it would return something if it failed. And there was no way to know from the return message which command failed.

There isn't much to see, since the UI is simply Adium's UI. There is, however, a preference pane, so I guess that can be used as a screenshot.
The project is hosted on Google Code, and is still being maintained with newer versions of Adium.


Skreenics is a very simple and lighweight application that I wrote to generate thumbnails of videos. I keep a lot of videos on my harddrive (encoded TVShows, humor videos, etc.), and sometimes, it is quite hard to remember which one is which.
Quicklook is very useful for that, but sometimes I need a quicker look, and I wrote Skreenics to fit that purpose for me.

I first started using bindings and a NSCollectionView, which was *really* easy to setup. However, the way binding works did not suit me. I wanted to be able to select multiple videos by shift-clicking two videos, selecting all videos inbetween.
In the end, I just basically created my own cells, and created my own (animated) progress indicators, just so that I could have different colors.
The whole process simply uses QTKit (to open videos and get frame images), and NSOperation(Queues) to manage concurrent operations.

The project is also hosted on Google Code.

Zia (HTTP Server)

The goal of this project was to create a usable HTTP server, following the RFC 2616, using standard C++ (with no external library), with the support of loadable modules through an API.
One of the biggest part of the project is also to create the said API. Near the middle of the assignment, there is a vote for the best API (only students get to vote), and that API has to be implemented by every groups.
You can find more about what was asked by reading the assignment subject.

I did not work alone on this project, because the assignment required to form groups of at least 4 or 5, so there was 5 of us working on this project.
Each of us was responsible for some very specific part, but in the end, everyone wrote some code on every "components". The teamwork on this project was a really good experience.
One of the main feature of our server was that it was using the real HTTP BNF, extracted from RFC (most groups were not using the BNF).

The project received the grade of 65 out of 80. The average grade was 22.5.
It received the following comment: "Tenacious server, even if there are leaks on Windows (Some memory leaks after the pylot test). Very good C++ code, a real working BNF parser (awesome!). Very good work."

As required, the project is portable, and is meant to work on Windows, Linux, and Mac OS X.

Shell (42sh)

42sh is a unix shell we had to write during our first year at Epitech. Even though it is supposed to be a working shell, there were a lot of limitations, the main one being that only the standard libc had to be used.
That means we were not allowed to use any existing parser or parser generator (like GNU Bison), which is why the parsing is done manually (and very basic).
If you can read French, you can get more information by reading the assignment subject.

After spending some time on it, our group managed to complete the entire mandatory part (prompt, path, redirections, builtins [cd, echo, exit], separators).
But we still had some time left, so we decided to add a configuration file, aliases, and handled inhibitors, backquotes, parenthesis, local variables and history.
The only line editing library we were allowed to use was the termcaps library, so we also added dynamic line editing features, such as multiline support, dynamic rebinding (bindkey), and completion.

The project received the grade of 21 out of 20
No, it is not a mistake, we did receive more than the maximum grade, thanks to bonus points.

The project is meant to work on Mac OS X, NetBSD and Ubuntu. libtermcap is required.
Because ncurses was not allowed, we only added support for xterm terminals. It might or might not work on any other kind.