Sweetohm

Michel Casabianca


Voici mon CV complet. Des CVs par techno sont disponibles pour Java, Golang, Python et XML/XSLT.

Je suis un développeur pragmatique qui rejette tout dogmatisme et n’envisage pas l’échec comme une option. Mon expérience, tant sur le plan technique qu’humain, me permet de sécuriser les projets sur lesquels je travaille.

Michel Casabianca
110 cours Saint Louis
Bat B App 44
33300 Bordeaux
06.86.99.63.89
casa@sweetohm.net
https://sweetohm.net
https://github.com/c4s4
http://linkedin.com/in/casabianca

Technologie Maîtrisées

  • Langages de Programmation : Rust, Go, Python, Java, Ruby, Shell, PHP, C et C++, Lua, Lisp ainsi que quelques langues mortes (Perl, Pascal, Assembleur X86, Basic, LSE, HP41).
  • Technologies Web : Django, Flask, Web Services (REST, XML-RPC et Soap), Ruby on Rails, Sinatra, JavaScript (JQuery), Servlets, JSP (JSTL).
  • Bases de données : SQL sur MySQL, Bigtable, Oracle, PostgresQL et SQLite.
  • Flux : Pubsub et Kafka.
  • Méthodologies : Programmation Orientée Objet, Patterns, Extreme Programming, Développement Agile et Open Source.
  • Documentation : Markdown et Rest, XML (écriture de DTDs, XSLT 1.0 et 2.0, XPath, Xpointer et APIs SAX, DOM et JDOM), LaTeX, SGML (HTML et Linux Doc).
  • Systèmes d’exploitation : Unix (Linux, Solaris et MacOSX) et Windows.

Compétences Spécifiques

  • Développement Logiciel : expertise en développement logiciel backend sur serveur Unix.
  • Architecture Logicielle : capacité à concevoir et optimiser une plate-forme logicielle.
  • Veille Technologique : bonne capacité à évaluer et mettre en œuvre de nouvelles technologies.
  • Formation et Pédagogie : expérience en tant qu’enseignant, conférencier et formateur.
  • Documentation Technique et Traduction : expérience dans le domaine de l’édition technique.

Expérience Professionnelle

2023-présent: Architecte chez SFBX

Ma première tâche a consisté à réécrire deux applications hautement critiques. Elles encaissent une charge importante mais étaient extrêmement fragiles : documentation incomplète et obsolète, pas de tests (ni unitaires, ni d’intégration), complexité inutile et non maîtrisée.

J’ai commencé par écrire un jeu de tests d’intégrations de manière à comprendre le fonctionnement et l’interface de ces applications avec le monde extérieur. J’ai assuré une couverture d’environ 80% afin de pouvoir réécrire ces applications avec un degré de confiance suffisant.

J’ai ensuite réécrit ces applications pour le simplifier et en améliorer les performances. J’ai pu obtenir un gain de x2 et x7 respectivement. Ce qui était assez inattendu dans la mesure où j’ai utilisé le même langage de programmation, le GO.

Pour finir, j’ai optimisé les performances en profilant le code avec Pprof. J’ai été conduit à remplacer le bibliothèque JSON par défaut du GO par une version plus performante. En effet, l’application est amenée à parser et générer de gros volumes de données au format JSON.

Lors de l’écriture des tests d’intégration, j’ai été amené à développer un outil de test d’intégration en réutilisant les composants que j’avais développé par ailleurs lors de ma contribution au projet open source Venom.

D’autre part, j’ai été amené à développer des fonctionnalités pour le projet open source Swagin. En particulier un limiteur capable de changer le nombre de requêtes simultanées du serveur en fonction de la mémoire disponible.

Par la suite j’ai développé de nouvelles fonctionnalités pour ces applications, dont un système de géolocalisation basé sur le traitement des fichiers RIR.

Ma dernière tâche a consisté à porter en Rust une base de données en lecture seule, HiloDB, dont un prototype avait été développé en JavaScript. Cette base permet de stocker des données sensibles de manière sécurisée et de les interroger sans révéler leur contenu. J’y ai ajouté une implémentation avec l’algorithme CVM.

2021-2022: Lead Dev Backend chez Intercloud

En tant que Lead Backend Developer, je développe des microservices en Go avec les frameworks Gin + Gorm + SwaGin. J’oriente les choix techniques en réalisant des POCs en concertation avec l’équipe. J’ai aussi contribué à des projets Open Source afin de corriger et améliorer les outils suivants :

J’ai aussi assuré des présentations sur des sujets techniques tels que Git, Docker Compose, Gobinsec, Message Broker, Document Databases, SwaGin, Go Generics, NeON. J’ai aussi soumis à l’équipe des challenges de code et publié des articles sur le blog d’Intercloud (à l’adresse https://blog.intercloud.com).

2020-2021: CTO chez DESKi

Développement et maintenance d’une application web d’annotation d’images médicales, avec web services Python Flask avec SQLAlchemy, interface JavaScript et Cornerstone.

Développement d’une application Androïd Kotlin d’échographie cardiaque guidée par un algorithme maison de machine learning.

Développement d’une application Django pour l’administration des patients, examens et opérateurs de l’application Androïd et consultation des échographies par les cardiologues. La synchronisation avec l’app est réalisée avec un webservice REST en Go. Développement d’un viewer web d’échographies cardiaques avec la bibliothèque Cornerstone.

Rationalisation de la plateforme (mise derrière un reverse proxy pour se débarrasser d’une iFrame) avec Docker Compose, rapatriement de code C++ dans le webservice Python. Automatisation des déploiements, avec backup automatisés de la BDD et possibilité de rollback. Mise en place d’une machine de staging.

Sensibilisation de l’équipe aux problématiques de sécurité, mise en place d’une charte et implémentation des bonne pratiques.

Formation Git sur les branches et publication d’un aide mémoire.

2019-2020: Développeur dans l’équipe WebHosting chez OVH

J’ai été recruté pour faire évoluer le backend historique en Perl vers de nouvelles technologies telles que Python ou Golang et mettre en place de bonnes pratiques de développement logiciel telles que tests unitaires et d’intégration, documentation, etc.

J’ai assuré la maintenance du backend en Perl et développé un webservice haute performance de traçage des codes dépréciés, en Go.

2019 : Développeur chez Wine Services

Pendant cette courte mission, j’ai développé des outils d’import et d’export de fichiers CSV vers le serveur Django. J’ai grandement amélioré les performances de la solution existante en écrivant des requêtes SQL complexes et en implémentant une stratégie de cache dans le serveur.

2018-2019 : Lead Developer Backend chez mieuxplacer.com

J’ai été Lead Developer Backend chez mieuxplacer.com pendant un an et demi. J’y ai eu en charge le développement et la maintenance du backend Python/Django :

  • Migration de l’API REST implémentée avec le framework Django Rest vers un framework maison.
  • Outil de synchronisation du backend avec le CRM Zoho (par appels REST).
  • Outil de synchronisation de données économiques en Go (requêtes SQL et appels REST).
  • Mise en œuvre des bonnes pratiques de développement logiciel :
    • Mesure de la couverture de test (avec codecov.io).
    • Mise en place de tests d’intégration automatisés.
    • Validation Pylint du code automatisée lors des commits Git.
    • Refactoring à grande échelle du code et des modèles de données.

Rationalisation de l’infrastructure sur AWS, avec mise en place de machines Debian et d’un serveur de développement dans nos locaux.

2015-2018 : Développeur Freelance

Fin 2015, j’ai quitté le groupe Orange pour repasser en Freelance :

  • De septembre 2016 à janvier 2018 (soit 17 mois), j’ai été expert XML et Java aux Éditions Lefebvre Sarrut. A cours de cette mission, j’ai mené à bien les projets suivants :
    • Transformation de encyclopédies Dalloz de l’ancien format vers la nouvelle DTD (XML et XSLT 2.0)
    • Développement de la nouvelle chaîne de publication XML pour les ouvrages et encyclopédies Dalloz (XSLT 2.0, Java, Golang et Webservice).
  • De décembre 2015 à août 2016 (soit 9 mois), j’ai été expert Java chez SQLI à Pessac. J’ai travaillé comme référant technique sur un projet de batch de calcul (écriture de POCs, mise en place de Spring Batch, de scripts de migration de base de données, génération des livrables, intégration continue, etc). J’ai aussi effectué des missions transverses, comme des Entrées en Maintenace (audit de code, de base de données et estimations de plans de sécurisation), de la formation Python et autres missions ponctuelles.

2008-2015 : Ingénieur Expert chez Orange Applications for Business

Au sein de l’équipe Vodoo (2008-2009), j’ai travaillé sur un projet de vidéo à la demande au sein d’une vaste équipe localisée à Bordeaux, Paris et Lille. Travail sur du logiciel Java (côté serveur) et JavaScript (côté box TV).

J’ai été ensuite volontaire pour évaluer et mettre en œuvre Talend au sein d’un projet de batchs de statistiques, 1013 et 3900 (en 2009). Le projet a été terminé avec des batchs en Python et SQL. Interface utilisateur avec graphes en Flash.

Nous avons ensuite mis à profit notre expérience Python dans un projet de chat vidéo bancaire, VisioCC. Mise en œuvre de Django pour le backend d’administration et les webservices appelés par le chat vidéo en Flash.

J’ai ensuite intégré l’équipe Telefact (2010-2013) pour développer un backend de configuration avec Django et mettre l’applicatif Java au standard PCIDSS (sécurité bancaire).

J’ai fait un bref passage dans l’équipe MonSVI (début 2014) pour mettre en place des batchs de statistique en Python et SQL.

J’ai par la suite intégré début 2014 l’équipe xMS pour réfactorer le frontal de rupture de protocole sgs-enabler. Il avait été développé en Java et NIO et a été réécrit en Go. Gain de fiabilité et de performances énorme. Cette mission a donné lieu à un retour d’expérience sur Go (présenté à BDX.IO, aux DevDays et aux Midi Techniques Orange), disponible ici https://sweetohm.net/slides/go-retour-experience/.

Pour finir, j’ai rejoint mi-2014 l’équipe Cloud pour développer des outils (en Python essentiellement) de gestion du parc des machines virtuelles.

A l’occasion de ces missions, j’ai été amené à développer des outils utilisés au sein d’OAB et diffusés sous licence Open Source :

  • Jitsu : framework de test unitaire JavaScript.
  • DB_migration : outil de migration de BDD.
  • Bee : outil de build.
  • mysql_commando : driver MySQL pur Python.
  • CheeseShop : repository de packages Python.

Pour finir, j’ai eu l’occasion d’animer au sein d’OAB de nombreux ateliers et formations sur des thèmes techniques tels que Python, Django, YAML, Go et Raspberry Pi.

2007-2008 : Développeur indépendant

Après mon départ d’In-Fusio, suite à un plan social, je me suis mis à mon compte en tant que développeur indépendant. A cette occasion, j’ai mené à bien les missions suivantes :

  • Kewego (1 semaine) : optimisation d’un logiciel de parsing de logs en Java.
  • Unedic (4 mois) : développement d’une interface de connexion à LDAP pour configuration.
  • CVF (9 mois) : mission d’expertise Java (développée dans la section ci-dessus).

2000-2007 : Expert Java et XML chez In-Fusio

Dans le département R&D chez In-Fusio, société Bordelaise de services de jeu sur téléphone mobile ayant développé des technologies côté téléphone (ExEn et EGE) et côté serveur (Gamezilla). La plateforme Gamezilla gère les interactions avec les joueurs, téléchargements et SMS, depuis 2001 avec une disponibilité supérieure à 99 %. Gamezilla a géré plus de 20 millions de joueurs ayant effectué 30 millions de téléchargements et 220 millions d’interactions dans 45 pays.

Développement de près de la moitié des modules de la plateforme Gamezilla, des applications web pour l’essentiel (Servlets, JSP et PHP, mais aussi Python et Ruby).

Élaboration de l’architecture de Gamezilla, tout d’abord en tant qu’expert (en l’absence d’architecte logiciel), puis au poste d’architecte. Travail sur les performance ayant permis un gain d’un facteur 10, mise en place d’un processus de développement comportant une gestion des dépendances, un nightly build ainsi qu’une suite d’outils de développement, gestion centralisée de la documentation (à l’aide d’un Wiki).

Activités de veille technologique sur les serveurs d’application Java (choix de BEA Weblogic), JMX (management d’applications Java), Maven (build d’applications Java) et JSR 124 (Java Vending Machines).

Formations en interne données aux membres des équipes sur les bases de Java et la programmation objet ainsi que sur XML et XSLT.

Chef de projet en intérim pendant 6 mois pour l’équipe GameZilla (6 développeurs).

1996-2000 : Auteur, Conférencier et développeur Indépendant

Travaux d’édition pour les Éditions O’Reilly :

  • Coauteur de XML Précis et Concis (traduit en Anglais, Allemand et Japonais), dont le chapitre sur XSLT a été repris dans la dernière édition de Webmaster in a Nutshell.
  • Co-traducteur de Sécurité en Java.
  • Traducteur de Extreme Programming Précis et Concis.
  • Relecture technique de Java Examples in a Nutshell, Ant précis et concis, Java et SOAP, Google à 200% et Java plus rapide, plus léger.
  • Écriture d’articles Java et brèves sur leur site.

Série d’articles pour Oracle Magazine :

  • Starting with Ant et More with Ant parus dans les numéros de novembre/décembre 2002 et janvier/février 2003.
  • A Junit Step by Step paru dans le numéro de mai/juin 2003.

Développement Java pour les Éditions O’Reilly et SdV Plurimédia :

  • Développement de trois versions du générateur XML du site des Éditions O’Reilly ainsi que de leur intranet de gestion du catalogue.
  • Applets Java de jeux (Awélé, Tangram, Mots croisés et Applet d’échecs) et autres (applets de menu et défilement de brèves).
  • Application de production de cartes Météo.

Écriture et traduction d’articles sur XML pour Quelm.

1993-1996 : Enseignant Sciences Physiques et Chimie

Enseignement des Sciences Physiques et Chimie au lycée technique Le Corbusier à Strasbourg.

Activités Personnelles

Passionné d’informatique, je développe de nombreux projets sous licence Open Source, que l’on peut trouver sur mon compte https://github.com/c4s4. En particulier :

  • Bee : outil de build en Ruby.
  • Jitsu : framework de test unitaire JavaScript.
  • DB_migration : outil de migration de BDD.
  • mysql_commando : driver MySQL en pur Python.
  • CheeseShop : serveur de packages Python.
  • Outils divers : tâches Ant, outil d’accès aux bases de données et générateur d’installeur Java.

Je maintiens un site personnel https://sweetohm.net qui contient les textes de mes conférences, des articles, des applets Java de jeux et autres curiosités informatiques.

D’autre part, j’interviens régulièrement dans des conférences sur des sujets techniques :

  • Conférence sur le thème Java et Linux à la Linux Expo de Paris en juin 1999.
  • Conférence sur le thème Développement XML en Java à la Linux Expo Paris de février 2000 (modérateur session Java et Linux).
  • Conférence sur le thème Développement XML en Java à la Linux Expo Montréal d’avril 2000 (modérateur session Linux Application Development).
  • Conférences sur les thèmes Java et Linux et Développement XML en Java aux Journées du Libre III (à Strasbourg).
  • Conférence sur le thème Développement XML en Java à la Linux Expo de Paris en janvier 2001.
  • Conférence sur le thème Outils J2EE Open Source à la Linux Expo de février 2002 à Paris.
  • Conférence sur Bee au Rencontres Mondiales du Logiciel Libre en juillet 2010.
  • Conférence Retour d’expérience sur Go aux DevDays en octobre 2014.
  • Conférence Retour d’expérience sur Go à BDX.IO en octobre 2014.
  • Conférence Faut-t-il passer à Python 3 ? à BDX.io en octobre 2015.
  • Conférence Michel développeur à 50 ans à BDX.io (keynote) en octobre 2016.
  • Conférence Migration BDD à BDX.io en octobre 2016.
  • Conférence L’Ordinateur Quantique, Mythe ou Réalité ? à BDX.io en novembre 2017.
  • Conférence L’outil de build NeON aux RMLL Strasbourg en juillet 2018.
  • Conférence L’Ordinateur Quantique, Mythe ou Réalité ? aux RMLL Strasbourg en juillet 2018.
  • Conférence L’Ordinateur Quantique, Mythe ou Réalité ? à l’Université Bordeaux Montaigne en janvier 2019.
  • Conférence Passer à Python 3 à la PyCon France en novembre 2019.

Pour finir, quelques activités personnelles dans le domaine de l’informatique :

  • Core Developer sur le projet XSL-P (processeur XSLT open source) en 1999 et contributeur Mozilla.
  • Développement du système de gestion de documentation XML pour le Linux Users Group de Strasbourg.
  • Premier Prix catégorie Jeux à la JavaCup (concours de programmation Java) en 1998.
  • Organisation d’un cycle de conférences et d’un concours de programmation Java aux Journées Européennes du Multimédia à Strasbourg en 1998.
  • Pratique de la programmation en tant que hobby depuis 1980 (4eme place aux 4ème Championnats International de Programmation d’Othello au Sicob en 1983).

Formation

  • Licence es Sciences Physiques, Capes de Sciences Physiques et Chimie à l’Université Louis Pasteur à Strasbourg.
  • Formation Développement d’applications avec serveur BEA Weblogic par BEA.
  • Formation d’anglais durant 5 ans avec le CEL Bordeaux (niveau 5A sur 6).