Java SE, EE, Grails & libraries (Guava, Jersey, Apache...)
Spring Core, Web/MVC, Boot, AOP, Data
Database Oracle, SQL, PL/SQL, NoSQL
Development Agile Methodologies, TDD, , SOA
Design / UX CSS (SASS / LESS), Bootstrap, Swing, GWT
Member of the IT-CS group (Communication Systems) which is in charge of telephony (GSM, VOIP, analog), networks (from top-down: structured cabling, selection of switches/routers, installation, network engineering, network support, Wi-Fi) and central network services (DNS, DHCP, Radius, NTP, ...).
In this group, my section, IT-CS-CT (Communication Tools) is a small team (around 7 people) of young and multicultural developers and is in charge of building software to support and manage the network, telephony, and network services.
The database controlled by our section (LANDB), is the core of the network activities at CERN, and we model all needed networking and telephony concepts that will be either consumed by high-level applications that we build or by other low-level applications in other sections of the group.
New layered architecture
User-facing application Legacy Perl code migrated to Grails
Backend in Grails
Frontend in AngularJS
After evaluating different options, I proposed to replace some parts of the legacy application using micro-services using Spring Boot.
I chose Spring Boot as we were already heavily using Spring framework and it was at that time the more mature framework.
LANDB is the core network database which stored all the network configuration: topology, devices, users, connections, firewall, fibers, telephony, ...
This database is the core of all the applications developers in the section and is heavily used by other people around CERN using SOAP and REST API.
I was administering the database PL/SQL replacement by service layer in Java
I was in charge of administering all the applications used by the developers, inside the section but also used by other people in the group.
I was responsible of the SVN repositories used by the whole group. The creation of the repositories and the access management was automated using the access roles provided by CSDB application.
In order to provide high quality source code, commit hooks were setup running Checkstyle static analysis prior to any commit. This enforced the same source code format and really reduced the different development styles of each developer.
To build our applications we are using Atlassian Bamboo.
Very similar to Jenkins, I was maintaining and updating the build plans depending on the environment change: migration to Java 8, development of new applications based on different frameworks (Grails, Spring Boot, Android), retirement of old applications.
As part of our software development life cycle, prior to deploy any changes to the codebase, peer reviews were mandatory. Using Atlassian Fisheye at least two other developers had to review the code.
This not only greatly improved the code quality, but also allowed the simplify knowledge transfer.
I was managing the entire Selenium grid, from its setup to its maintenance using OpenStack to manage the nodes of the cluster.
I decided to develop a simple framework that allows to drastically simplify the development of integration tests, by creating a layer between Selenium API and our own applications.
J2SE Swing Protocols GWT-RPC, RTMP Multithreading 1500+ Threads Tests JUnit
As member of a small development team (around 10 people), I was developing on NeoLoad software.
NeoLoad is a load testing solution designed for web and mobile applications to realistically simulate user activity and monitor infrastructure behavior. Developed in Java, Neoload is a heavy client using Swing for UI. To generate heavy load on tested servers it generates virtual users that replay a recorded scenario.
Based on Agile methodologies
SVN as version control system
Bugzilla as backlog
Jenkins as build system
JUnit for unit testing and QFTest for Swing UI testing
Theses modules are used to record the protocol traffic and display it in a user-friendly way. This allows the user to easily understand the purpose of each request but also to modify them according to their testing scenario.
Also used to execute the requests during a load test, these modules required strict memory management and code synchronization as they are used by more than 1500 threads simultaneously.
Protocol developped by Adobe to communicate between a media server and a client (mostly Flash player). Detect and record RTMP traffic at TCP level (using tcpdump/jNetPcap). This required not only to reverse-engineer the protocol but also to adapt the module to work with a variety of media server (using their own retro-engineered protocol).
Protocol developped by Google to ease communication between a GWT client and the server. Text based protocol, it is used to serialize Java objects between client and server. This required to understand the protocol by understanding GWT source code and be able to simulate it.
Modules used to analyze the behavior of the environment when performing an application load test. Each of them required to analyze how the monitored element provides statistics, retrieve them and provide usefull information to the tester.
Connection to hypervisor Web service and collection of provided statistics.
Oracle Application Server, JOnAS, GlassFish
JMX connections to retrieve populated MBeans, statistics are different for all servers.
JDBC connection established with the database and statistics are retrieved using engine specific SQL queries.
The Spring Social Amazon project is an extension to Spring Social that enables integration with Amazon.
It provides all needed functionalities to seamlessly integrate Login with Amazon OAuth service in any Spring Social enabled application.
Android application for assets management.
Je reviens après ce long silence pour vous présenter une "nouvelle" technologie qui se développe de plus en plus : les bases de données NoSQL, et principalement Cassandra, la solution de la fondation Apache. Introduction Pour commencer, une base de données NoSQL q'est-ce que c'est ? C'est une base de données non relationnelle. La plupart des bases de données relationnellesMySQL, Oracle, PostgreSQL) utilisent le langage SQL pour fournir un accès aux données. Pour les bases de données NoSQL, il'y a donc pas de requête SQL. Le stockage utilise alors différentes représentations : Bases orientées clé / valeur : représentation la...
La version 2.0 de GWT (Google Web Toolkit) est sortie (j’ai un peu de retard à cause du boulot ) et avec elle de nombreuses améliorations, principalement pour améliorer le développement des applications. Cette nouvelle version est accompagnée d’un outil d’analyse des performances des sites : Speed Tracer, qui donne des pistes d’amélioration de l’application. Development Mode Dans les versions précédentes de GWT, pour tester une application en cours de développement, il y avait le Hosted Mode. C’est une application que l’on lançait depuis son IDE, qui démarrait un serveur Tomcat et qui permettait de tester “rapidement” sont application Web....