Sommaire

  • Développeur full-stack de plus de 15 ans d’expérience en Java avec une très bonne maîtrise des technologies open-source
  • 7 ans d’architecture d’application web Java
  • Très intéressé par le mouvement DevOps afin de rester en contrôle du code source à la production
  • Développement de logiciel Open Source dans le domaine de l'épidémiologie et de la bioinformatique
  • Très bon esprit d’analyse et capacité à travailler en équipe

Compétences informatiques

Langage
Java 8, Scala 2.11, Javascript, Python, PHP
Framework
Spring Framework, Spring Batch, Spring Boot, Bean Validation
Persistence
JPA/Hibernate, JTA, MongoDB, Neo4j, Spring Data, OrientDB, Liquibase
Web
JHipster, GWT (GWTP, SmartGWT, Vaadin), Wicket, Spring MVC, JSP, Struts, CSS/LESS/Sass, Bootstrap
REST
RestEasy, Jersey, Spring MVC, Protocol Buffer, Swagger
Javascript
AngularJS, Yeoman, Bower, Gulp, Grunt
Security
Shiro, Spring Security (ACL)
Test
JUnit, Mockito, EasyMock, Fest Assertions, AssertJ, PIT mutation, ScalaTest
Search
Elastic Search, SolR, Lucene
SCM
Git, Subversion
Build
Maven, SBT, Gradle, Jenkins, Bamboo, TeamCity, Travis-CI, Sonar
DevOps
Puppet, Docker, Vagrant, Rancher, Amazon EC2
Server
Tomcat, Jetty
Environment
Linux, Windows, IntelliJ Idea, Eclipse
Methodology
Scrum, Kanban, TDD, XP

Contributions et publications

Mes contributions open source sont visibles sur mon profil GitHub :
https://github.com/cthiebault

Je publie également mes expériences Java sur mon blogue "Sur un air de Java" :
http://surunairdejava.com

Expériences professionnelles

Crossing-Tech Lausanne

[ depuis août 2015 ]

  • Architecte principal de la Connectivity Factory pour l’immobilier : plateforme web pour la gestion de fonds immobiliers
    [ Scala 2.11, Java 8, Spring Boot, AngularJS, Hibernate, MongoDB, ElasticSearch, Spring Security (ACL), Docker ]
  • Mise en place d’une infrastructure de développement avec Docker et Puppet :
    Gitlab, Artifactory, Jenkins, Sonar, Docker Registry, Rancher, Monitoring (ELK)
    [ Docker, Puppet ]
  • Développement et build de la plateforme Connectivity Factory
    [ Scala, Java, OSGI, Maven, Docker ]

Nespresso Software Factory Lausanne

[ sept. 2014 - août 2015]

Consultant pour Antaes Consulting.

  • Business Web Services : Nespresso REST API
    [ OAuth, Java 8, Scala 2.11, Jersey ]
  • Optimisation du processus de build : développement de module Puppet et de plugins Jenkins et Atlassian Stash pour automatiser la création de job sous Jenkins.
    [ Puppet, Vagrant, Java 7 ]
  • Localisator : gestion des traductions pour les applications mobiles natives
    [ Java 8, Spring Boot, Vaadin, Hibernate ]

Maelstrom Research / OBiBa Montréal

[ juin 2010 - juillet 2014 ]

Maelstrom Research est la fusion d’une équipe de chercheurs en épidémiologie et du projet de développement de logiciel libre OBiBa.

Senior au sein d'une équipe de 5 programmeurs, je participe au développement d’applications web open source pour les études épidémiologiques et les biobanques. Mes contributions sont visibles sur GitHub.

Responsabilités

  • Analyse des besoins. Abstraction et séparation des problèmes. Rédaction des user stories et création des mockup/wireframe
  • Architecture, choix des design patterns et des technologies
  • Veille technologique et preuves de concept
  • Recrutement IT
  • Développement en itération Scrum
  • Support des utilisateurs (https://groups.google.com/forum/#!forum/obiba-users)

Réalisations

Projet : Mica 2 (mica-server & mica-drupal7-client)

Mise en place d’une application RESTful (Spring Boot, Jersey) avec un client riche pour l’administration (AngularJS, Yeoman, Bower et Grunt) et un client Drupal pour la partie publique.
Cette application remplace la version précédente de Mica développée intégralement sous Drupal.

[ Java 8, JHipster, Spring Boot, Spring Data, Jersey, Protocol Buffer, AngularJS, Yeoman, Bower, Grunt, TestNG, AssertJ, Mockito, Drupal ]

Projet : Opal

Gestionnaire de données des participants (application web disponible sous forme de package Debian).
Refonte majeure et développement de nouvelles fonctionnalités pour la version 2.0 :

  • Migration d’important projets Maven vers Gradle
  • Benchmark, profiling et optimisation des services les plus lents
  • Mise en place de OrientDB pour remplacer Hibernate/HSQLDB
  • Migration du framework MVP pour GWT de gwt-presenter vers GwtP et Gwt-bootstrap
  • Configuration des transaction JTA (JOTM) et Hibernate pour supporter la création/destruction de multiple SessionFactory au runtime
  • Optimisation du module MongoDB pour rattraper les performances du module Hibernate
  • Mise en place de Bean Validation
  • Mise en place d’outils permettant d’augmenter la qualité du code lors le cycle de développement (PMD, findBugs, Jenkins, Sonar, etc.)

[ Java 7, MongoDB, Elastic Search, Spring, Shiro, Jersey, Swagger, Maven, Gradle, OrientDB, GWT, JPA/Hibernate, Bean Validation, Protocol Buffer, AssertJ, Mockito ]

Projet : Onyx

Logiciel d'interview des participants :

  • Réalisation de l'éditeur de questionnaire sous Wicket
  • Support des question de type vidéo (html5) et audio (servlet pour enregistrer)
  • Support de LDAP et Atlassian Crowd pour l'authentification (via Shiro)

[ Java 6, Wicket, Shiro, Junit, Maven ]

Projet : Mica

Portail pour les consortium d'études. Application basée sur le CMS Drupal (PHP) :

  • Développement de plusieurs modules : catalogue d'études, de datasets, demandes d'accès aux données, etc.
  • Communication avec le gestionnaire de données des participants Opal en REST
  • Création d’un thème basé sur Bootstrap en utilisant LESS

[ Drupal 7, Bootstrap, LESS ]

P3G Consortium Montréal

[ mai 2007 - juin 2010 ]

Responsabilités

Responsable du développement informatique :

  • Embauche et gestion d'équipe
  • Analyse des besoins des chercheurs
  • Conception de l’architecture des applications et choix des technologies impliquées
  • Veille technologique et R&D
  • Mise en place de la méthodologie SCRUM

Réalisations

  • Développement d’un gestionnaire de contenu pour décrire les études épidémiologiques (p3gobservatory.org). Composé d’une application d’administration (Wicket, Spring, Hibernate) pour la publication et révision du contenu et d’une application publique (Spring MVC et communication REST avec le module d’administration)
  • Développement d’une application permettant de faciliter l'harmonisation des données des études épidémiologiques (datashaper.org). Les données sont stockées sous forme ontologique (RDF) avec OpenRDF/Sesame. L’interface utilise SmartGWT et REST pour communiquer avec le serveur
  • Mise en place d’une forge logicielle sur Amazon EC2 : Git, Jenkins, Nexus, Sonar, Jira, Confluence

[ Java 6, Wicket, RDF/OWL/Sesame, Spring, Hibernate, Spring MVC, Smart GWT, SiteMesh, Junit, EasyMock ]

Axon ID Montréal

[ déc. 2006 - mai 2007 ]

Développement d'une application web permettant d'accélérer le temps de réponse des agents de vente de produit d'assurance de Industrielle Alliance.
Cette application communique avec les programmes RPG existant (AS400) et utilise une architecture SOA.

[ Java 5, Struts, Spring, Ibatis, Javascript/Ajax, Maven, Junit ]

McGill / Génome Québec Montréal

[ août 2005 - déc. 2006 ]

Consultant pour Distinct Horizon / Sequence Technologie

Responsabilités

Automatiser les étapes d’analyse des protéines en centralisant les données entre les différents instruments du laboratoire. Centraliser l’accès aux applications et aux données du laboratoire.

Réalisations

Développement d’un LIMS (Laboratory Information Management Systems). Réalisation des modules suivants :

  • Modélisation et capture des données biologiques (Hibernate)
  • Agents de communication (RMI/JMS) entre l’application centrale et les instruments
  • Gestion du flux des échantillons à analyser par les instruments et collecte des résultats
  • Conception et mise en place d’un portail relié aux autres applications du laboratoire avec authentification unique (CAS, Central Authentication Service)

[ Java 5, Spring, Spring Security, Spring webflow, CAS, Hibernate, RMI, JMS, Junit, Maven ]

Distinct Horizon / Sequence Technologie Montréal

[ avril 2003 - août 2005 ]

Responsabilités

Analyser les besoins des clients, rédiger les spécifications, modéliser les modules en UML, développer et tester ces modules. Maintenir le plan de développement et rédiger les SOP. Concevoir l’architecture de l’application et choisir les technologies impliquées.

Réalisations

Réalisation d’un gestionnaire de document (basé sur Struts), destiné aux entreprises pharmaceutiques et bioinformatiques (FDA compliance).

[ Java, Struts, Spring, Maven, Junit ]

InpixMedia Montréal

[ mai 2002 - avril 2003 ]

Responsabilités

Fidéliser les membres de la base de données de Futureshop.ca et récolter des informations dans le cadre des activités de marketing direct en ligne de l’un des plus importants détaillants sur le Web au Canada.

Réalisations

Développement d’une application web (JPS/Servlet sous Tomcat) permettant la mise en ligne de microsites promotionnels. Réalisation d’un module autonome permettant aux clients de gérer eux-mêmes leur campagne d’envoi d’infolettre.

[ Java, JSP/Servlet, Ant ]

YY Technologies Mountain View, USA

[ avril - août 2000 et fév. - sept 2001 ]

Stages dans le cadre de mes études d'ingénieur informatique.

Responsabilités

Créer des outils de test qui facilitent la validation des nouvelles versions du produit (application comprenant le langage naturel).

Réalisations

Développement d’un module permettant le transfert d’une boîte aux lettres mail vers une base de données, ainsi que sa consultation (adaptation du module JavaMail en SQL). Création d’un outil de normalisation d’email en Java, C++ et Perl.
Développement sous Unix un outil comparant deux boîtes aux lettres. Création d’un module, intégré au programme, qui étudie la performance du produit.

[ Java, C++, Perl, Bash ]

Formations

Formation Académique

1996 - 2001 : Ingénieur en informatique et télécom réseaux diplômé de l’EFREI (Ecole Française d'Electronique et d'Informatique) - Paris, France

Formation continue

Dans le cadre de la veille technologique et étant très intéressé par les nouvelles technologies, j’assiste régulièrement aux conférences du Java User Group Lausanne et Scala-Romandie. Je participais précédemment aux soirées du Montréal Java User Group et MontrealJS.

Et bien sur, j'écoute Les Cast Codeurs :-)

Centres d’intérêt

Parapente (diplôme d’instructeur de la fédération Québécoise de vol libre), kite-surf / snowkite, ski de rando, télémark.