.. (parent)OverviewCVResumeVisit Card Constraint Programming
You are here: Professional >> Resume
Edouard Mercier 09.02.1974
84, rue des Gravilliers - 75 003 - Paris - France French
mobile : 00 33 6 98 13 91 62
home : 00 33 1 42 71 46 40
work : edouard.mercier@axa-im.com
home : the.edouard.mercier@free.fr

Experiences of work


01.2003 - 10.2003 E2M
Creation of E2M company: I am the only partner

I propose consulting in the information technology. My skills go from the understanding of a need, going through specifications design, architecture design, le development of a solution, to the application deployment, its runtime managment and maintenance.

During a mission, I strive to setup procedures enabling a better automatisation of the processes delivery production in order to increase the responsiveness regarding the clients demand (from the Version Control, the binaries compilation, their unitary tests campaign run, to the design of a deployment tool). I am usually involved in the communication and publication intranet tools.

My purpose is to increase quality, which ranges from the exactness and liability of the solution, to the art of working in a collaborative team.

01.2003 - 11.2003 GIE Ingénierie Options ( BNP Paribas )
Completion of the previous project. Pro-activity how on making the development team aware concerning the quality technics concern

I had the opportunity to continue the preceding mission. During this stage, I have been more and more involved in the quality process. On this purpose, I was in charge of settling and managing weekly meetings aiming at enhancing quality at various levels:

  • readability, maintenance, frameworking and documentation of the source code,
  • systematic writting of unitary tests (especially via JUnit and CppUnit),
  • technical indicators settling: use of jMetra for the metrics, Simian for redundancy,
  • continuous integration lying on nightly build (I built the nightly build system via Ant buildfiles Ant now available for every components, and I evaluated AntHill on that purpose),
  • the component delivery process,
  • taking into account the production teams needs and constraints, the help to clients.
Nowadays, the project is made of about twenty delivery components, which makes this approach essential. The team reactivity to new client needs is clearly increased.

On my own initiative, I have extracted a Java framework that is now used by all components as a versionned library: this emphasizes a component paradigm, and avoided a source code redundancy very costly as far as liability is concerned and prevented to get rid of the maintenance problem.

I have developed and set up an XML/XSLT framework that enables to output documents on the intranet, but also release notes: the latter is used by all components from now on. So as to improve communication, I had the opportunity to install and administer a Plone V1.0.1 server, in order to enable the team to directly publish content. By the way, I have been developing a Plone product with the help of Archetypes, which integrates the previous framework.

In parallel, I was still working on the migration project: I have been in charge with programming new clients using the new services, in order to automate the referential update through procedures dedicated to the production team. Moreover, I used the SSL Foundation Classes API Java in order to enhance our services as far as real-time is concerned.

10.2000 - 12.2002 NET2S
Consulting engineer-by Open Up (a Net2S company) specialized in middleware
By NET2S, I had the opportunity to work on 4 major different projects ever since.
01.2002 - 12.2002 GIE Ingénierie Options ( BNP Paribas )
Migration of security market applications towards a 3-tier architecture

The project is managed by a team in charge with market sales IT applications, more precisely on legacy applications dealing with securities. The development is well balanced between C++ - through Visual C++ V6.0 IDE - and Java - with Together Control Center V6 and IDEA V3.

Beforehand, I have been in charge with a legacy C++ application aiming at exporting and exporting market data under XML format. On that purpose, an import grammar, close to SQL has been defined with ANTLR, and then the corresponding parser is generated in C++: this parser enables to interprete queries supposed to conform the grammar.

Then, I have been asked to improve the CORBA services developed by the team: those service handle market data and have been complementarily developed in C++ and Java; the implementation of the bus is ORBIX V3.0.1. From exception handling, to non-regretion testing, I have been developing a framework that makes the building, load testing, reporting of every service totally automatic. I used the open-source CppUnit V1.6.2 and Log4Cpp V0.2.7 and report the result under XML format, which enables to transform that result in HTML for instance. All this automation was made possible thanks Ant, which I have been massively using, so as to industrialize the process managment.

09.2001 - 11.2001 Siris ( Deutsche Telekom )
Mission by Siris for 3 months: online activation application integration aimed at VISP

During the integration process I have been involved in, the purpose of the project was to validate a web application aimed at Virtual Internet Services Provider (VISP) (Siris customers).

The services delivered by this application offer web pages hosting, the e-mail, the internet web e-mail, a domain name declaration to DNS. In order to highlight the issue of that project, I had to understand more closely how the DNS works.

The application, which is written in Java V1.3, has been developed with the J2EE V1.3 framework: the GUI part is based on Struts framework, whereas the businees object part makes use of EJB V1.1. The application server is not a single block, since it is made, on the one side, of two iPlanet Application Server V6.0 clustered servers (as far as web and Servlet/JSP containers is concerned), on the other side, of various EJB V1.1 containers implemented by JBoss V2.4.0. The iPlanet Application Server V6.0 application server massively makes use of an LDAP  server, implemented by iPlanet Directory Server V4: this is the reason why I had to make aknowlegment with the LDAP  standard. All code development uses Log4j so as to enhance runtime execution logging. Moreover, I had the opportunity to use Ant V1.3 in order to automate the service deployment on each machine hosting the EJB V1.1 containers.

At last, in order to validate this application, I developed another web application enabling the initialization and handling of the database used by the previous VISP application: this application has been developed and tested with the Servlet/JSP container Tomcat V4. It uses JDBC standard in order to interface with the database, it it based on the Model View-Controller (MVC) Struts, also uses Log4j logging framework, and is fully administered by an Ant script.

12.2001 - 12.2001 Open Up ( NET2S )
During 1 month, design of a 3-tier prototype including a JMS bus, a LDAP  server, two database systems

Ce projet, pendant lequel j'ai eu l'occasion d'encadrer trois collègues, a permis de produire un prototype pour un éventuel client. Ce prototype devait mettre en valeur le savoir-faire de la société en matière de conception d'une application web permettant aux employés d'une compagnie d'assurance, d'accéder aux données relatives aux assurés et à leurs contrats d'assurance. Le client souhaitait incorporer à cette application la technologie J2EE V1.3, ainsi que JMS afin de pouvoir réaliser une migration progressive de base de données depuis un système de base de données hérité (système de fichiers "à plat") sur AS400 vers une base de données Oracle V8.

Le prototype a été développé (en Java V1.3) autour de la plate-forme J2EE V1.3. Le conteneur de Servlet/JSP était Tomcat V5.0 lors du développement. Quant au déploiement, c'est le conteneur d'EJB V1.1 WebLogic V6.0 qui a été utilisé. Le bus JMS V1.0 retenu était Sonic MQ V3.5; l'annuaire LDAP  utilisé était iPlanet Directory Server V4. La partie graphique cliente Servlet/JSP a été développée au-dessus du cadre de travail Struts. L'ensemble des développements a été réalisé en utilisant l'outil de traçage Log4j, que ce soit pour la partie Servlet/JSP ou pour la partie EJB V1.1. L'ensemble du projet a été administré à l'aide de scripts Ant partagés par l'ensemble des développeurs. La VC a été assurée par CVS V1.11.

Afin de répliquer les modifications des utilisateurs dans les deux systèmes de base de données, il a fallu mettre en œuvre un système permettant d'impacter les deux bases à la fois : pour cela, chaque système s'abonne à une queue JMS sur laquelle les messages d'accès aux bases sont envoyés par les EJB V1.1 : à cet effet, les objets sont sérailisés sous forme de Java Beans. Pour ce qui est de l'accès à la base de donnnées Oracle, nous avons utilisé le cadre de travail Castor V0.9.3 qui permet de réaliser très rapidement une surcouche de base de données relationnelle. Afin de pouvoir relier certains messages JMS et de les transformer en requètes vers la base de données, nous avons évalué openadaptor.

10.2000 - 08.2001 Air France
Mission by Air France for 10 months: CORBA/DB architecture design and programming, enabling centralized strategic data handling all over the company

The purpose ot the mission was to develop CORBA services, enabling at accessing the company referential data, so that legacy applications do not have to maintain their own databases, but rather use those new services when needed.

Development was mostly performed under Windows NT, whereas deployment was performed under UNIX HP : this is the reason why Ant V1.3 tool has been massively used, so at to automate Java sources compilations. As a matter of fact, ClearCase (VC) commands were seamlessly integrated in those scripts.

The development first focused on IDL definition, then around the coding in C++ and Java V1.2 of the underlying CORBA services. On this purpose, a code generator written in Java has been developed: this factory takes the business services descriptions modeled in XML as an entry, and with JAXP V1.0 API, it generates the IDL files, their implementation mostly performed in C++ but also in Java, eventually the CORBA servers. The C++ generated code, concerning the service implementation, uses PowerTier V6 library: this library performs an object mapping of the database (Oracle V8). This factory also spawns the Makefile used in order to recompile everything under UNIX.

In the first step, the CORBA services implementation were base upon ORBIX V3.0.1, then a migration to ORBIX 2000 V1.2 had to be performed: the code generator revealed to be very efficient during this stage. Moreover, as specifications were floating, the factory enabled to react very rapidly and fitted to the dayly object model changes. This model has been populated under Rational Rose, then exported, transformed through a parser developed with ANTLR, eventually turned into XML.

02.1998 - 09.1998 SNCF
7 month-training period in a computer department of the SNCF (French national railroad company): decision-making and design of an optimization prototype built with the CP technology (through the Ilog and Cosytec tools)

This was the opportunity for me to make my first steps with Constraint Programming, while I was completing my education. I have been working for seven months in the French national railroad company, the SNCF. The purpose of this training period was to look at all the existing decision-making technologies that might solve a time tabling problem. The department where I used to work was in charge with the establishment of the train drivers and controllers time tables, and they had an inherited tool to perform this. This decision-making tool had been developed thanks to an expert system (SMECI in our case), which was bound not be supported anymore.

I first begin to prospect for the technologies able to solve that problem. I quickly went to the idea that Constraint Programming, which I besides never heard about before, was the proper tool to handle the problem. Thus, I first developed a C++ mockup with the CP Ilog company libraries (Solver and Scheduler) during about three months: the development was perfomed under Borland C++ developing environment. Then, I had the opportunity to use the CP Cosytec company tool (Chip++) to build another mockup written in Prolog. I was delighted by this experience and I eventually decided to apply to both previous vendor companies that provide this CP technology.

10.1998 - 09.2002 Cosytec
Software engineer at Cosytec, French editing company of the Constraint Programming technology
I have been working as a engineer, developing softwares for customers but also internally. At the beginning, I have been developing in an Object Oriented (OO) Prolog programming language called Chip++ (one of the products provided by Cosytec), then the major part of my time was dedicated to C++ development. In overall, I have been working on optimization problems, but I have also been developing a OO Graphical User Interface-based framework.
01.2000 - 08.2000 Cosytec
Design of a C++ framework to be re-used for optimization applications
After some experience in C++, I was asked to take part in the internal development of a C++ framework for my company, Cosytec. This framework was initially fully coded into a C++ library as far as low layer is concerned; it proposed an object model that enables, avoiding tedious and repetitive code writting work, to debug and visualize the objects of a C++ application that use it. This implies a strong UML model design, as well as some GUI development. Above the C++ library that I had been designed, a collegue of mine designed a Prolog top layer which enables to express in UML a whole application, including the CP modeling. Eventually, this framework was the support for the development of a real application for a Japanese client. I do really like this kind of meta programming, even more when your framework is able to re-generate itself!
10.1998 - 12.1999 Eurocontrol
13-month mission by Eurocontrol, (European consortium in charge with air traffic control) aiming at developing a pre-tactical air traffic regulation application.

The purpose of the project on which I have been working, was to design a prototype application that enables to simulate the regulation of the air traffic for a given day. But first of all, let us explain what air traffic regulation is.

On the one side, each air company chartering a flight plan entering the European territory have to previously notify indirectly Eurocontrol of its route. On the other side, the European area is considered as being a puzzle of regions, that we call sectors. A sector is monitored by at least one air traffic controller. In order to make their control really efficient and to curb the risk, we need to limit at any time the number of aircraft being crossing a sector; more precisely, we need to grant that a maximum number of aircraft having entered a sector during the last hour (this is called capacity) is not exceeded.

Under production, there was a real-time system that performs this regulation. This system, instead of authorizing the aircraft to take off at their scheduled time, imposes some delay so that there is no capacity conflict in all the European sectors. This implies that some flight plans will have delay compared with their scheduled departure time, some not. Anyway, we measure the quality of the regulation system on two criteria: the total delay of all the flight planes, the comfort that it brings to the air traffic controller. So what this new prototype would be good for?

Indeed, we developed this prototype to show that a more relevant way of regulation, was not to take into account at any time the number of aircraft having entered a sector during the last hour (capacity), but to consider the instantaneous number of aircraft being present at a given time in the sector (that is what we call load). We wanted to demonstrate that this method reduces the total amount of delay induced by our system, compared with the current system.

We developed this prototype through Constraint Programming (CP) technology. The prototype was fully developed in C++, and it enables to visualize the demand and the regulation thanks to analysis graphics.

A short word about the Eurocontrol company

Eurocontrol is a public European company that deals with the whole European air traffic control. One of the mission of that company is to deliver taking off authorizations for each air plane taking off from the European area. So as to enable the reader to contemplate the complexity of Eurocontrol mission, let us give some figures: there is an average of 20.000 flight plans scheduled to take off from Europe each day. The company headquarter lies in Brussels, not very far from the United Nations. I have been working in Brétigny-sur-Orge in the south suburb of Paris, at the Eurocontrol Experimental Center.
07.1997 - 09.1997 BAREP ( Société Générale )
3 month-training period at BAREP (a French bank subsidiary company of Société Générale): design of a database on the customers
This was actually my first professional experience, and I was still not graduated. I have been working for three months in a French bank named BAREP, developing there a data base enhancing application for the middle-office. I developed a tool with Visual Basic and Access 95, which provides to the people from the middle-office a rapid and fully documented access to the information they need about their partners and customers. I was working with remote and heterogoneous data bases systems and it taught me a lot. Moreover, it was a real challenge for me since I knew not much about SQL, nor Visual Basic for Access, nor Access.


01.04.2002 - 30.04.2002
Automatic indentation Java code task development for the Ant tool

So as be able to integrate Jindent calls from Ant scripts, I decided to develop a task in charge with this invocation. The development was obviously perfomed in Java, and the result is a brand new task that seamlessly enables to automatically indent Java code from an Ant script. The task is now refered to on the editor official web site, under the Integrations topic .

05.2002 - 10.2003
The present web site development, littel byt little
A modest framework, named WedSitor , has been extracted from it and is now being re-used (for this site, but also for the AntDoc and WedSitor sites). This framework is built around XSLT and is supposed to show my skills in that field, even if I am aware that other more sophisticated frameworks may exist.
Development of AntDoc/AntDocGUI, an documentation automatic generation tool for Ant, but also of a GUI over-layer above Ant
Because there is no documentation generation standard, and no universal GUI over Ant, I decided to dedicate some time to the development of a tool that would do the job. See AntDoc site .


09.1995 - 06.1998 post-graduate of the Ecole des Mines de Nancy , equivalent of a French five years' higher education non-specialized university. Main option: computer sciences, minor option: materials sciences

Computing abilities

Database solid and concrete knowledge. DB mapping with PowerTier; object-DB with Versant
Network introduction notions about TCP/IP; understanding of DNS
CP excellent knowledge of the Constraint Programming technology
CORBA tough experience. CORBA V2.0 with ORBIX V3.X and V2.3 implemented by ORBIX 2000 V1.2.X, server and client side, Java or C++
C++ advanced knowledge and practice of C++, as well as the object-oriented paradigm
Java good practice and very usual programming; good knowledge of J2EE platform
Code generation concrete experiences: code generators written in C++, Java, PERL, XSLT
Open-source Ant expert; use of Tomcat, JBoss ; practice of Struts, Barracuda, Log4J, Junit, Xalan-Xerces (Java and C++), CppUnit
Interpreted Prolog (serious), PERL (confirmed), and various shells
Operating system Windows and UNIX indifferent

Foreign Languages

French natural language
English read and spoken with no major difficulty; graduated of the Certificate in Advanced English from Cambridge
German respectable oral and written levels; graduate of the Zertifikat Deutsch als Fremdsprache from the Goethe Institut
Spanish elementary knowledge enough for the general understanding

Current date: 2020.08.06 8:45:43 Number of hit: 2475