|
-
-
-
Learnosity est un éditeur de logiciel SaaS B2B dans le domaine des technologies de l'éducation. Nous écrivons et opérons des interfaces de programmation Web (Javascript/JSON) pour délivrer des examens en ligne, depuis la préparation du contenu jusqu'aux rapport et l'analyse des données. La plateforme présente plus de 2 milliards de questions par mois.
-
Ingénieur logiciel, Staff
(Depuis
2020;
≥
2
ans)
J'ai transitionné dans l'équipe Plateforme. J'y développe et re-conçois les composants principaux de l'infrastructure de Learnosity, avec un focus sur l'aise de maintenance, le passage à l'échelle, et la sécurité. Je continue aussi à maintenir les outils de développement internes.
Mon focus est principalement sur
-
les systèmes dorsaux et d'infrastructure (
Linux
, Amazon Web Services
, PHP
)
-
les plateformes de développement et de déploiement (
Python
, Docker
, SaltStack
)
-
la sécurité et la conformity (membre de l'équipe CERT,
participation à l'effort de certification ISO-27001)
Dans ce rôle, j'ai
-
aidé à l'embauche, l'intégration et la formation de deux équipes
d'ingénieurs de fiabilité des sites (SREs), dans deux fuseaux
horaires
-
mené un projet de revue et d'amélioration de nos procédures de
déploiment, qui a mené à plus d'automatisation et une réduction de
moitié du personel nécessaire à la tâche
-
été membre d'une équipe de deux personnes en charge de
reconstruire un environment pour entiercement, utilisant des
conteneurs au lieu de machines virtuelles, ce qui a permis de
réduire l'effort de construction de plusieurs semaines à quelques
jours.
-
contribué à l'effort de l'équipe Plateforme visant à augmenter et
simplifier les processus d'intégration et de distribution
continues (CI/CD), sur la base de systèmes de construction
logiciels plus rationels et l'usage de conteneurs, qui promet
l'accélération de la cadence de distribution de mensuelle à
journallière
Mon activité comporte aussi
- des améliorations de code et de processus (refactorisation, nouveaux modèles d'architecture et de test)
- du transfert de savoir (revues de code, documentation, seminaires, mentorat)
- des tests de performance
- des revues de sécurité
- le support des services en production
Je m'implique aussi activement dans la re-découverte, la documenation et le support de certaines parties du produit pour lesquels le savoir-faire institutionel a été précedemment perdu.
-
Ingénieur logiciel, Senior
(2016
–
2020;
4
ans, 2
mois)
Dans l'équipe Scrum en charge de l'analyse de données, j'ai
développé et maintenu le code des systèmes dorsaux et des outils de développement.
Mes responsabilités incluaient
- l'interface HTTP de rapport et d'accès aux données (PHP, MySQL, PostgreSQL)
- les services d'arrière-guichet (SQS, Kinesis, Elasticsearch)
- les services d'analyse de données (Go, Redshift)
- la plateforme de développement (Linux, Python)
Dans ce rôle, j'ai mené, ou largement contribué à, des effort supportant le passage à l'échelle de l'infrastructure et des bases de donnés. Ceux ci incluent
- la recherche et résolution de goulets d'étranglement applicatifs, ayant permis d'augmenter le débit d'un système de passage d'évènements de deux ordres de grandeur
- la refactorisation iterative des processus d'entreposage de données qui a permis de quadrupler la vitesse d'ingestion
Technologies:
Linux,
Docker,
Amazon Web Services,
Python,
PHP,
SaltStack,
MySQL,
PostgreSQL,
Go,
Vagrant,
HTML/JavaScript,
Elasticsearch,
|
- 2011
–
2016
- 4
ans, 8
mois
|
-
Chercheur
-
-
Sécurité et protection des données privées J'étais l'un des principaux investigateurs sur le project
Anonalytix, en collaboration, entre autres, avec un opérateur
de télécommunications. L'objectif en était d'évaluer les méthodes
d'anonymisation de bases de données, et de fournir des garanties fortes
sur l'impossibilité de réidentifier les enregistrements. Cela
permettrait d'utiliser un ensemble de traitements et d'analyses sur
des données sensibles tout en assurant le respect des lois et
réglementations concernant les informations personnelles.
Mon objectif était de porter ces algorithmes vers une plate-forme
de services basée sur une pile Spark/Hadoop. J'ai mené l'effort
d'ingénieurie dans ce but : creation de la plate-forme, amélioration
ou portage du code existant, et creation de la chaîne de livraison
continue.
Précédement, j'ai aussi participé à des tests
de sécurité sur un système de protection contre les fuites de
données pour Android (TaintDroid), qui a permis d'identifier
diverses méthodes permettant néanmoins de le contourner.
J'ai aussi travaillé sur un projet visant à évaluer la sécurité de
l'Internet des objets, et à proposer des solutions de protection
gérées par le réseau.
Technologies:
R,
Java,
Spark,
Hadoop,
C,
Jenkins,
Travis,
Vagrant,
Docker,
Ansible,
PostgreSQL,
Android
Plateformes de mesures expérimentales
J'ai été le
mainteneur (2011–2015) d'OML, une
bibliothèque d'instrumentation et de rapport, dont j'ai
grandement amélioré la qualité du code, ainsi que des processus de
livraison. Cet outil est utilisé dans de multiples travaux de
recherche expérimentale sur bancs de tests, et j'étais directement
impliqué dans les projets GIMI (US, NSF) et
Fed4FIRE (UE, FP7). Cette
bibliothèque est aussi un élément fondamental de la plate-forme
d'e-Learning IREEL, utilisée par plusieurs
universités australiennes (USyd, UWS et UNSW) pour enseigner les
réseaux informatiques.
Technologies:
C,
UNIX,
autotools,
GDB,
Git,
Valgrind,
ArchLinux,
Debian,
RedHat,
Python,
Ruby,
SQLite,
PostgreSQL,
OpenStack
Performance de protocoles réseau
J'ai continué les travaux, démarrés lors de ma
thèse, visant à optimiser la qualité d'expérience sur des
équipements mobiles et multi-connectés. Une partie de ces travaux a
été conduite et intégrée en collaboration avec le projet Européen SAIL (FP7).
J'ai aussi
continué à travailler sur les protocoles de transport,
particulièrement sur les liens à long délais et les algorithmes sans
obligation de moyens (less-than-best effort). Cela m'a
amené à mon intérêt pour les systèmes actifs de gestion de file
(active queue management, AQM) en tant que solution aux
problèmes causés par les tampons sur-dimensionné dans les routeurs
(BufferBloat), ainsi que les protocoles multi-chemins.
J'ai aussi exploré
la faisabilité de l'ordonnancement multi-chemins et la commutation
de paquets de niveau 4 avec des réseaux définis logiciellement
(SDN).
Technologies:
C,
Linux,
IPv4,
TCP,
Android,
Python,
ns-2,
TCL
Finalement,
dans ce rôle, j'ai supervisé deux étudiants en Master, plusieurs
projets étudiants (intermédiaires ou fin d'études), et ai
co-supervisé informellement deux étudiants dans les dernières
années de leurs thèses. J'ai aussi publié plus de
30 articles dans conférences et journaux à comités de
lecture.
|
|
|
- 2008
–
2011
- 3
ans, 8
mois
|
-
Recherche doctorale
-
-
-
L'objectif de mon doctorat
était d'étudier et de résoudres les problèmes de communications
spécifiques en environnements mobiles. Les cas d'utilisation
typiques, incluant les réseaux véhiculaires et tous les équipements
portables, sont exposés à un ensemble changeant d'options de
connectivité, sans pour autant savoir quelle est la meilleure. Cela
m'a amené à proposer une architecture inter-couche faiblement couplée,
visant à contrôler toutes les couches de la pile protocolaire, dans
le but d'améliorer la qualité perçue au niveau applicatif.
Ces travaux m'ont permis d'acquérir une connaissance
approfondie de l'état de l'art de la pile protocolaire, et
particulièrement des couches réseau et transport, ainsi que des
diverses approches visant à remplacer ce paradigme.
J'ai aussi développé une grande
familiarité avec la recherche expérimentale en général, et les
problèmes de reproducibilité dans les réseaux et télécommunications.
Cela m'a amené à spécifiquement étudier les problématiques de
précision de mesures dans les systèmes en réseaux, et m'a permis de
fournir une structure solide pour les mécanismes d'observation de
mon architecture inter-couches.
Durant ma thèse, j'ai publié 9
articles, ainsi que divers logiciels (modules pour
ns-2, instrumentation, patches).
Technologies:
C,
Linux,
IPv6,
IPv4,
TCP,
802.11,
HTTP,
Python,
ns-2,
TCL
|
|
-
-
Ingénieur expert
(2006
–
2008;
1
an, 4
mois)
Mobilité de réseaux/IPv6
Bien que les communications
n'étaient pas directement nécessaires durant mon master (voir
ci-dessous), elles sont cependant indispensables pour une
implantation réelle. Cela m'à amené à prendre un rôle d'ingénieur
au sein de l'équipe IMARA, avec les responsabilités
suivantes. Dans ce rôle, j'ai pris en charge la
coordination technique des plate-formes expérimentales du projet
Européen Com2REACT
(FP7).
Finalement, j'ai aussi conçu et réalisé un système de
gestion du savoir (basé sur un wiki), pour l'unité de recherche
jointe LaRA, permettant de
coordonner les plate-formes matérielles et les compétences entres
trois laboratoires de recherche. Cette solution a aussi permis de
maintenir un meilleur suivi des travaux effectués, et une meilleure
rétention du savoir-faire créé.
Technologies:
IPv6,
IPv4,
802.11,
DNS,
DHCP,
Apache,
GNU/Linux,
OpenBSD,
Quagga
PHP,
-
Stage de master/fin d'études
(2006;
6
mois)
Durant mon stage de master, je me suis penché sur l'ordonnancement
sans collision des trajectoires d'une flotte de véhicules
automatiques afin de passer un carrefour de manière sure. Ce
travail a consisté en la conception d'un nouvel algorithme de
réservation spatio-temporelle, son implantation dans un simulateur
écrit pour l'occasion, et une évaluation de son efficacité.
L'algorithme et son évaluation ont été décris dans une publication
scientifique et présenté à une conférence internationale.
Technologies:
Python
|