Curriculum Vitae
Thomas GIL
[email protected]Compétences principales
Développeur fullstack
Je suis CTO de FirmFunding depuis bientôt 10 ans. Notre équipe est petite et efficace, ce qui implique de toucher à tout: du développement back (Java, PostGreSQL, Redis) au front (Vue, Svelte) en passant par l'infrastructure (Docker, AWS Lambdas, S3).
Chercheur
Je travaille actuellement sur un algorithme de compression d'images sans pertes. Mon objectif est de trouver un compromis entre les performances de QOI et le taux de compression de FLIF, WEBP lossless, voire Gralic.
Concepteur / développeur d'outils
J'ai écrit GT, un transpileur qui apporte au C une petite surcouche orientée objet (classes, héritage simple, notation pointée, méthodes externes). Son parseur, basé sur Ragel, fonctionne comme une pile d'automates à états finis.
GT a simplifié l'élaboration d'une bibliothèque de génération de documents PDF (sans aucune dépendance) ainsi que d'un outil de génération de diaporamas.
Avec Jean-Baptiste Evain, nous avons construit AspectDNG, un tisseur d'aspects intervenant directement sur le CIL des assemblies .NET.
Optimiseur
Pour apprendre CUDA, j'ai optimisé l'exécution de quelques algorithmes de hashage utilisés dans certaines blockchains à Proof of Work.
Formateur
J'ai animé des formations sur les langages de programmation (Java, C#, C++, C, JavaScript, PHP, XSLT...), sur les notions Objet et les Design Patterns, sur la Programmation Orientée Aspects et sur les architectures d'entreprise autour de Java EE et .NET.
Auteur
J'ai participé à l'animation d'un site de comparaision d'architectures .NET et Java EE (DotNetGuru), ce qui impliquait la rédaction d'articles techniques (en français et en anglais) et l'animation de la communauté (forums).
J'ai écrit un ebook à la croisée de l'AOP et des Design Patterns.
Compétences techniques détaillées
| Langages de mes projets actuels | Java, SQL, C, JavaScript, HTML, CSS |
| Langages de mes projets passés | C#, C++, D, XSLT, PHP, Python |
| Autres langages touchés du doigt | Assembleur, Rust, Julia, Go, D, Lua, XSLT, PHP, Ruby, Perl |
| Conception | Conception Orientée Objet, Design Patterns, Conception Orientée Aspects |
| Systèmes d'exploitation | Windows, GNU/Linux, MacOS X |
Projets
| Date | Projet | Description | Technologies | Rôle |
|---|---|---|---|---|
| 2022- | Compression d'image | Recherche, prototypage et développement d'un logiciel de compression d'image sans perte | C | Développeur |
| 2017- | FirmFunding | Architecture, développement et déploiement d'une place de marché de placements privés | Java, JavaScript, Vue.js, Svelte, Cloud, Serverless | CTO |
| 2016 | Mineurs d'altcoins | Réimplémentation sur CPU et GPU de quelques algorithmes: Lyra2rev2, Keccak, Equihash... | C++, CUDA, SSE, AVX | Développeur |
| 2016 | Naja | Framework de réplication d'état d'un graphe d'objets | Java, C++, JDO, JCache, JGroups, ASM | Développeur |
| 2015 | Compresseur | Participation au concours de compression "Hutter Prize" | C++ | Développeur |
| 2015 | Désérialiseur C++ | Outil C++ de désérialisation de flux d'objets Java | C++, Java | Développeur |
| 2015 | Naja | Framework de réplication d'état d'un graphe d'objets | Java, C++, JDO, JCache, JGroups, ASM | Développeur |
| 2014 | Transpiler UnityScript | Traduction automatique de code source UnityScript en C# | C# | Développeur |
| 2014 | Naja | Framework de réplication d'état d'un graphe d'objets | Java, C++, JDO, JCache, JGroups, ASM | Développeur |
| 2013 | Naja | Framework de réplication d'état d'un graphe d'objets | Java, C++, JDO, JCache, JGroups | Développeur |
| 2012 | LExpress | Application IOS de lecture de news et d'articles | ObjectiveC | Développeur |
| 2011 | Transformer 2 | Logiciel de transformation de formats de fichiers ferroviaires et de chargement en base de données | C, Oracle | Concepteur, développeur |
| 2010 | Cv | Application Flex / Java de gestion de CV en ligne | Spring, JPA, Hibernate | Mise en place de l'infrastructure Java en coopération avec juliencarette.com |
| 2010 | Transformer | Logiciel de transformation de formats de fichiers ferroviaires et de chargement en base de données | C++, Oracle | Concepteur, développeur |
| 2009 | training | Application documentaire de production automatique de slides et de livrets pour stagiaires d'une formation (format PDF) | G | Concepteur, développeur |
| 2008 | gpdf | Bibliothèque de génération de documents PDF | G, C | Concepteur, développeur |
| 2007 | Messagerie applicative (Réseau Ferré de France) | Prototype/ossature d'une architecture Web multi-niveaux .NET servant de base au développement d'applications | C# 2.0, ASP.NET 2.0, ADO.NET 2.0, Ajax.asp.net, CSS | Architecte, développeur |
| 2003 - 2005 | Course Manager (Valtech Training) | Application Web de gestion des descriptions de cours Valtech Training | Java, Struts, EJB 3, XML, XSLT, XSLFO | Architecte, développeur |
Projets Open Source
| Date | Projet | Description | Technologies | Rôle |
|---|---|---|---|---|
| 2010-2012 | GT | Surcouche objet légère du langage C. Successeur de G, implémenté sous forme d'une machine à états finis. Maintenant dans le domaine public! | C, Ragel | Concepteur, développeur |
| 2008 | G | Surcouche objet (légère) du langage C | C | Concepteur, développeur |
| 2005 | PetShopAOP | Exemple d'architecture technique tirant partie de l'AOP | AspectDNG | Architecte, développeur |
| 2003 - 2006 | AspectDNG | Tisseur d'aspects statique .NET | C#, XML, XPath | Chef de projet, développeur |
| 2003 - 2005 | PetShopDNG | Exemple d'architecture technique multi-couches .NET | ASP.NET, C#, DTM, .NET Remoting | Architecte, développeur |
Formation initiale
| 1998 - 1999 | ENST Paris - 2 et 3ème années |
| 1997 | ENST Bretagne - 1ère année |
| 1995 - 1996 | Math Sup/Spé au Lycée Kléber, Strasbourg |
| 1994 | Baccalauréat - Mention Bien |