2009-2011  

Developer at Steria Luxembourg

I work on the European project Schengen Information System II: this system will let the member states of the Schengen area to share information about searched persons and objects; it will be used for police investigation, anti-terrorism and immigration control.

Technically, the SIS is composed of a central system which contains a reference database and a system per country which contains a national copy.

The estimated total cost of the project is 68 million euro, which is integrally financed by the European Union.

 

August 2010
(current)
Central System
Maintenance and development of new functionalities.

This project is the core of the Schengen Information System: it is organized around a database with several millions of records, and exchange messages with all the member states. My work consist in:

  • Maintain and optimize the actual components (some of them are 5 years old)
  • Develop new functionalities (due to specification updates) and improve others (e.g. make 2 different versions of the system to run on the same database)

Technologies: Java (Spring, Hibernate, JUnit, multi-thread programming, communication with JMS, SOAP and FTP), Weblogic, Oracle (PL/SQL), XML/XSD, Citrus Test Framework, Maven.

March 2010
(6 months)
Romanian Migration Tool
Tool for validating Romanian data and transfer it to the Central System.

Because Romania will enter in the Schengen area, they must open their borders to Europe and therefore connect their national systems to the “Schengen Information System”. The “Migration Tool” analyzes and validates data coming from the country, and then transfers it to the Central System. My work consisted in:

  • Analyze the specifications of the tool and the “Schengen Information System” in order to determine the rules and constraints to validate.
  • Design the application architecture
  • Develop several components
  • Ensure the technical support and test (develop unit tests and tools for testers)

Technologies: Java (Spring, JUnit, TestNG, multi-thread programming, communication with JMS), Oracle (PL/SQL), XML/XSLT/XSD, Maven.
Agile development methodology: SCRUM.

October 2009
(5 months)
Central System Testing
Testing, maintenance and development of testing tools.

My work consisted in:

  • Maintaining the “Regression Test Suite” of the Central System (> 3500 tests cases): I analyzed the results of the regression campaigns, developed new tests and improved the “Test Framework”.
  • Developing an intranet website responsible for gathering the test descriptions and the business rules (more than 500).

Technologies: Java (Spring, Hibernate, JUnit, communication with JMS, SOAP and FTP), Groovy (Grails), XML/XSLT/XSD, Citrus Test Framework, Maven.

 
2008-2009  

Lead Developer at Comberry ltd.

Comberry is a foreign IT company in Shanghai.
My work consists of:

  • Designing software
  • Managing projects
  • Guiding programmers
  • Developing some complex functionalities and using new technologies

 

April 2009
(2 months)
Web application for advertising doctors on internet, version 2
Website generator, vocal server, semi-automatic web-directories registration.

Like in the first version, the doctors can generate a personalized website, get it referenced on web-directories and search engines. The payment is computed according to the number of new clients he reached with our system (our voice server relays the client phone calls and computes statistics). The user interface has been completely re-designed, in this version the registration and the website personalization has been simplified in order to let the doctor to register himself in the system (the contract is now signed online). Some functionality has been simplified in order to make the development easier.

This project is based on a lightweight framework which contains simple libraries (template engine, database wrapper, language translation), defines interfaces for manipulating HTML with an object-oriented paradigm and classes for building pages (all the pages of the web application respect the same layout organization).

On top of the framework, the code is organized in components: some belong to the system core (user access and authentication, log management), and some are directly visible for the user (user profile, website generation, invoice computation...).

In this project I designed the application architecture, developed the framework and managed a team composed of foreigner (German and French) and Chinese employees.

Languages: PHP, HTML, JavaScript
Libraries/software: JQuery, Asterisk (VoIP server)

February 2009
(2 months)
Urban Art Guide for Nokia S60
Mobile application with a map where the users can see urban art in Berlin.

The application is based on a map (Virtual Earth from Microsoft) where the users can see pins which represent urban artworks in Berlin. When a pin is selected, a screen shows photos and descriptions. The users can rate/comment artworks, upload new photos (geo-localized), download new content, trace a route between his position and the artwork, and follow some tours.

It was the first mobile application of the company; we developed it in java with some map and UI libraries. We then spent a lot of time on optimizing the code because our mobile (Nokia N95) just has 2MB of RAM for Java and a slow virtual machine.

Languages: Java mobile
Libraries: Guidebee Mobile Map, LWUIT

November 2008
(3 months)
Web application for advertising doctors on internet, version 1
Website generator, vocal server, semi-automatic web-directories registration.

With this application the doctors can generate a personalized website, get it referenced on web-directories and search engine. The payment is computed according to the number of new clients he reached with our system (our voice server relays the client phone calls and computes statistics).

The project is based on SCA components (by using the library PHP:SCA), their advantages are:

  • The code can be split in relatively independent sub-projects (once the interfaces are designed, a programmer can develop his component even if other components are not yet implemented).
  • They can be located in different servers (components can call each other either locally or via web-services - it is transparent for the programmer). This functionality is useful when the server which contains the administration panel (located in China) need to exchange data with the vocal and web servers (located in Germany).

The whole project is split in system components (user access and authentication, log management...) and business components (user registration, website generation, invoices computation...). The application is based on a library (template engine, database wrapper, language translation) and some shared object definition.

In this project I designed the application architecture, developed the framework and managed a team composed of foreigner (German and Canadian) and Chinese employees.

Languages: PHP, HTML, JavaScript
Libraries/software: PHP/SCA, JQuery, Asterisk (VoIP server), FPDF (PDF generation)

July 2008
(2 months)
Social website using face tracking
Web applications based on avatars animated with the user's face.

The project is composed of 3 elements:

  • A website composed of Flash applications (chat rooms and games with avatars).
  • A module on the user's computer which detects the face features with the webcam.
  • A server which broadcast the face features coordinates.

The module is distributed with a Java web start package: it contains a library developed in C++ which detects the face features. The coordinates are then sent to the server which broadcast the data to the users who use the same application. The avatars contains pre-computed sequences triggered when the user do some complex movement (mouth) and move some graphical elements with simple distortions with simple movements (eyebrows, eyelids, head).

Languages:

  • Website: PHP, HTML, Action script (Flash)
  • A module on the user's computer which detects the face features with the webcam.
  • A server which broadcast the face features coordinates.

Libraries: OpenCV (face tracking)

June 2008
(1 month)
Adobe Flash extension for sharing libraries
Adobe Flash add-on for sharing a library among several graphic designers.

In addition to software development, Comberry also produce Flash animations. This department needed a way to organize and share their animations elements. The solution was to combine a web gallery (Coppermine) with scripts for Adobe Flash.

The scripts are programmed in JSFL (JavaScript for Flash) and C++ (extension which let JSFL to upload and download data from a server). Coppermine has been patched in order to support Flash animations.

Languages: JSFL, C++, PHP

May 2008
(1 month)
Specifications for a vector graphics search engine
Website which provides a vector graphics search engine and a bitmap trace tool.

The website works a bit like Google images, a user cans search vector graphics by keywords. The database is filled with bots and a bitmap tracing tool which help users to transform a bitmap image into a vector graphic. An API let 3rd parties applications to access to the database and use the tracing tool via web-services.

Languages: Java (J2EE)
Libraries: Potrace

April 2008
(1 month)
Video Screen Recorder
Tool which records the user's screen and send it to a YouTube-like CMS.

The video screen recorder is an application made for www.gamerecorder.tv, a website based on the CMS OsTube. Besides recording a video of the screen, this software authenticates the user with the website database, uploads data, updates itself automatically and supports different languages.

This application was developed in Delphi with a component called Video Grabber; it contains a workaround based on a keyboard hook for catching the Hotkeys when DirectX deactivate them. The CMS has been patched in order to receive and re-encode video from the application, and support HTTP pseudo-streaming (modification of the flash video player and use of Yamdi in order to inject metadata to the video files).

Languages: Delphi, PHP, ActionScript (video player modification)
Libraries/software: Video Grabber, Yamdi

March 2008
(1 month)
IPTV mod for the CMS OsTube
New skin and new functionalities for a YouTube-like CMS.

OsTube is a small CMS for building video community like YouTube. The project consisted in adding a new skin and some AJAX functionalities.

Languages: PHP, JavaScript, ActionScript

 
2004-2008  

Student at Ecole des Mines d'Alès

My school is a general engineer school: the courses deal with many domains during the first 2 years and are more specialized during the next 2 years. There I learned programming concepts and new technologies by practicing. We did a lot of projects around Java (servlets, JSP, JSF, JUnit, RMI, EJB, JDBC, Swing...) and XML (XSL, XPath, RDF). We also did some initiation projects around .NET (C#, ASP), Oracle with PL/SQL Scripts, Linux & Windows administration and CORBA.

 

February 2008
(2 weeks)
A text indexer extension for Firefox
Toolbar for indexing text on internet for a data mining project.

During the last 2 weeks before the final internship, the school asked to students to work by group of 3 on projects given by research professors. My tutors were researcher in the data mining domain, and needed an easy way to index text on the web for Weka. The project was split in 3 applications: a Firefox extension written in XUL & JavaScript, a PHP website for saving data in the database, and a java program which build Weka files with data from the database.

Languages: XUL, JavaScript, PHP, java

December 2007
Robafis
Robot competition.

Robafis is the name of a competition organized every year by the association AFIS. In a group of 3 students we had to build a robot using Lego Mindstorms NXT with a limited number of elements. The competition itself wasn’t really complicated: the robots had to follow a line and then a light in a field with obstacles; we were also marked on the engineering approach. We finally finished 3rd!

Languages: Java

May 2007
(3 months)
Netcast (internship in Nanjing – China)
Application for connecting a legacy machine to a TCP/IP network.

I did this software during my internship in Nanjing (China) in the company Fortuna technology (Chinese company). This software permits the exchange of data between a legacy machine (using serial port) and computers on the network (using TCP/IP).

Languages: C++
Library: CppUnit (unit testing framework)

January 2007
(5 weeks)
Business plan for Mara Process
Business plan for an emerging company in my school's incubator.

The product of this company is a tool based on augmented reality in order to help welders to put in place some elements. With two other students and the CEO we made a financial/development plan and searched about financial help (making a company in France is quite complex with the taxes on a side and a lot of help on the other).

May 2006
(5 weeks)
Silverscan
Market research and design for a F2F application.

The original goal of this software was to create an index of the shared files on the student residences network and share them on internet among other students via file hosting websites.

My school is split in two cities (Alès and Nimes). The students in Alès live in a residence camp andthe ones in Nimes have their own apartments (only some 3rd and 4th years students live there). In Alès the student residences contains a network where people share a lot of files (movies, pictures, music, application...) and are all connected to internet via a single shared connection.

The role of Silverscan was to regularly index the shared files on the network, and put this index on a server on internet. Then when a student wanted to access to a file from internet (for example a student in Nimes), the computer which hosted the file was automatically requested to put this file on a file hosting website, and the student on internet could download it.

With other students we tried to find a way to monetize it via a professional version, and we found a niche market (some small companies without an administrator were interested, because it was a VPN-like system with a very simple configuration), but nobody were interested to make a company at this time.

January 2006
Website naema.org
Website of the former student association of my school.

I worked on this project with the junior enterprise of my school: Emagine. The former student association wanted to make a new version of its website with new features. I worked with another student, I made and setup the website and he drew the graphics. The website worked with 2 servers: one hosted the website and mail accounts (with Apache, PHP and a mail server) and another one contained the former student database (programmed with Windev). The website was based on the CMS Joomla; the most important features were the job center, the new former student directory (with a semi-automatic synchronization with the former student database) and the accounts migration.

Languages: PHP, HTML, W-Language
CMS: Joomla

October 2005
(5 weeks)
Factory relocation at HITEMCO / MECANIC SUD
Studied the relocation of a factory after the purchase of a new building.

HITEMCO and MECANIC SUD are 2 companies who shared the same building which were completely full due to their expansions. In a group of 3 students we studied the relocation of machines in a new building located next to the first one. Our task was to optimize the flow and minimize the space to renovate (the new building belonged to another factory before).

February 2005
(5 weeks)
Market research at ABSOLUTE COMPUTER
Market research for a newly emerging software product.

Two entrepreneurs (the holder of a computer shop and a lawyer) had the project to develop a web-application for helping public organisms (town hall) and companies to give invitation to tender. In a group of 3 students we called the potential clients and the competitors. After 4 weeks we determined with more precision the potential clients, the psychological prices and found beta clients.

 
1999-2004  

High school student

High school and CPGE were the period when I learned software programming by myself. I first started with websites and BASIC programming on my programmable calculator. I then shifted to assembler programming (programmable calculator) and C++ (computer).

 

SNG

I got a TI-82 when I entered in high school; it was a programmable graphical calculator with a BASIC language. After programming games I felt very limited by the low speed (the basic programs were interpreted by an 6 MHz 8bit processor!), and I discovered that other people already wrote hack for running native software (not interpreted like basic), but it didn’t worked on my calculator due to a new ROM version, so I decided to write myself a new hack.

SNG is an assembly shell: a program based on a hack which let applications written in native code to run on the TI-82. It contains useful libraries and a SDK which let other people to develop ASM programs for it.

Language: Z80 assembler

Community website
Website for TI-82 programmers.

Because SNG was designed to be used by ASM developers, a community of TI-82 programmers gathers around my website: it contained a forum, a list of ASM software developed by me or other programmers and some tutorials and technical documents (in French for IE: http://web.archive.org/web/20040209223613/membres.lycos.fr/plouhinec/index2.html ).

Language: HTML, PHP

Games and tools for the TI-82
Games (board games, Mario…), static re-compiler and debugger.

I wrote little games for SNG in assembly (board games, Mario…) and several emulators which worked with static recompilation and some memory modifications at runtime:

  • Old TI-82 shells emulators:
    Because programs developed for these shells couldn't run on the new ROM versions (there were different TI-82 with different ROM versions, but the hardware stayed the same), the emulators adapted the ROM calls and the RAM configuration at runtime. These emulators permit the use of a lot of old games developed during the 90's for the previous calculator versions.
  • TI-83 ION shell emulator:
    ION was a very famous TI-83 shell (the next TI model), many ASM programs could run on it, and the TI-83 developer community was very active. A TI-83 emulator was a great extension: the hardware was nearly the same but the ROM and RAM organization were different. The emulator was split in 2 applications: one programmed in C for windows which recompiled the code for the TI-82, and another one programmed in ASM for the TI-82 which modified the RAM configuration in runtime.

Languages: Z80 assembler, C