Développeur / Informaticien 👨💻 👨🔬
- 🌳 Olivier Pirson
- Belge, né en 1975
- www.linkedin.com/in/olivierpirson/
- https://europa.eu/!Gw99mX
- () bitbucket.org/OPiMedia/workspace/repositories
- 🏠 Bruxelles, Belgique 🇧🇪
- 📧 olivier.pirson.opi@gmail.com
- 🌐 www.opimedia.be
Études et Formations
-
2019 : Courte formation Testing, Treenity Solutions
Test d’APIs REST avec Postman et automatisation avec Jenkins
-
2019 : Master en sciences informatiques 👨🔬 👨💻, ULB, 74% distinction (suivi en anglais)
Matières théoriques et projets pratiques.
(Modules : optimisation, algorithmes. Options : langages de programmation, parallélisme.)
Mémoire : Parallélisation d’un interpréteur abstrait, au travers du modèle acteur -
2015 : Laboratoire de programmation Java, Business Training via Bruxelles Formation
Apprentissage et développement d’une application web RepairCenter en méthodologie Scrum
-
2015 : Cours de l’EPFC
Algorithmique – conception et analyse, Préparation à la Certification Java, Programmation C++
-
2013 – … : Nombreux MOOCs (cours en ligne) universitaires, EPFL, Princeton, Stanford…
Algorithmique, compilateur, langages, optimisation mathématique, paradigmes fonctionnel… ;
Bash, C++, Java, ML, Oz, Python, Scala… ; Git… ;
Anglais… -
2011, 2014 et 2016 : Courtes formations Evoliris
Android, gestion de projet, GNU/Linux, HTML5/CSS3, réseau, sécurité, UML
-
2010 : Formation professionnelle de développeur web, Business Training via Bruxelles Formation
UML, (X)HTML/CSS, MySQL, Apache HTTP Server, PHP, JavaScript, Flash/ActionScript
-
1998 : Bachelor en sciences mathématiques 🧮, orientation informatique 👨💻, UCL, satisfaction
Projets informatiques en C++, Pascal, Java, Tcl/Tk…
Connaissances informatiques
Développement : |
Ada,
OpenCL,
C, C++,
Java,
Python,
Scala, Scheme,
assembleur,
Erlang,
Haskell,
LLVM,
ML,
Prolog… → langages etc. |
---|---|
Développement web : | JavaScript/jQuery/AJAX, PHP, (X)HTML/CSS/Sass… ; CMS |
Bases de données : | MySQL, QuickBase… |
Systèmes d’exploitation : | GNU/Linux 🐧, Debian , Android, Windows… |
Outils : | Apache HTTP Server, Doxygen, Eclipse, Emacs, Git/Mercurial, (LA)TEX, Makefile, regex, shell… |
Divers : | calcul parallèle, programmation fonctionnelle et orientée objet (POO), UML… |
Langues
🇫🇷 Français : | langue maternelle |
---|---|
🇬🇧 Anglais : | niveau CECR B1+ (le master de l’ULB était en anglais) |
Divers
- 🚘 Permis de conduire B
Expériences professionnelles
-
2020 – … : Solution Building Engineer chez Sopra Steria (consultance TIC)
Développement Ada, Ksh…
-
2015 – 2016 : Développement web pour ArtCoreWeb (développement web)
Lancement d’une activité de développement web (via JobYourSelf, SMart… avec l’objectif de devenir indépendant), avec un partenaire s’occupant des parties commerciale et design.
- Conception et développement d’un site web pour l’activité : illustration récursive interactive de la démarche partant d’une demande pour aboutir à sa réalisation. HTML/Sass, JavaScript. www.opimedia.be/CV/2015_ArtCoreWeb/ArtCoreWeb/
- Développement d’un site web statique : HTML/CSS, Bootstrap, JavaScript.
- Développement d’un prototype d’application Android en Java pour facilement prendre des photos d’articles en magasin et les ajouter avec descriptif sur un e-commerce.
- Analyses techniques, rédaction de rapports et devis.
- Apprentissage.
MySQL, PHP, HTML/CSS/Sass, Bootstrap, JavaScript, jQuery, CMS, e-commerce, Android, Java
-
2011 – 2013 : Développeur web chez Umedia (production cinéma)
Analyse, développement web full stack (MySQL, PHP, HTML/CSS, JavaScript), déploiement et suivi sur le CMS MindTouch utilisé en interne pour le partage de documents et la communication. Développement d’un template. Interaction avec l’API. Développement d’outils à intégrer : calendrier, "mur à la Facebook", réservation de lunch…
Licencié suite au remplacement du CMS MindTouch par un autre logiciel géré par une entreprise externe.
- Administration du CMS.
- Migration du CMS d’un serveur web Apache sous Ubuntu vers un serveur web IIS sous Windows.
- Croisement de la base de données des employés avec la liste des utilisateurs du CMS.
- Développement d’une application de ticketing en MySQL, PHP, HTML/CSS, JavaScript.
- Dépannages IT ou transfert à l’administrateur système responsable du parc informatique.
- Aide aux stagiaires business pour l’élaboration de base de données en ligne avec QuickBase.
Ubuntu, Apache HTTP Server, Windows, IIS, MySQL, PostgreSQL, PHP, HTML/CSS, JavaScript, jQuery, AJAX, MindTouch, QuickBase
-
Décembre 2010 – février 2011 : Stage de développeur web chez Vertige (développement web)
Stage faisant suite à la formation professionnelle de développeur web.
- Analyse, développement web full stack (MySQL, PHP, HTML/CSS, JavaScript) et déploiement d’un "mur à la Facebook" pour le site web Comedien.be utilisant le CMS SPIP. Screenshot du mur : www.opimedia.be/CV/2010_Vertige/Comedien_be/Mur_de_Comedien_be.png
- Refonte du système de connexion du site web Comedien.be. Factorisation du code existant.
MySQL, PHP, HTML/CSS, JavaScript, jQuery, AJAX, SPIP
Experiences de développeur, par langage
-
⚠️ Cette dernière section
liste des projets personnels ou didactiques classés par langage de programmation
en commençant par les langages les plus proches de la machine :
.
La mention des plus anciens projets a pour but d’illustrer
que je programme depuis très longtemps.
Vous pouvez accéder aux sous-sections à partir du menu ☰ du bord droit de la page.Une courte sélection par ordre antichronologique est visible dans la section Projects de mon profil europass : https://europa.eu!Gw99mX
- Les langages que j’ai utilisés et utilise le plus sont : Ada, C, C++, Python.
- Dépôts de mes projets libres (free software, open source) sur Bitbucket (GitHub-like) : bitbucket.org/OPiMedia/workspace/repositories
- Bookmarks personnels sur les langages de programmation : www.opimedia.be/DS/languages/
-
Badges Gold et Certificats HackerRank : C, C++, Java, JavaScript, Python, SQL ; Problem SolvingBadges LinkedIn : C, C++, Java, Python ; Bash, Git, HTML
-
ASMassembleur
langage proche du langage machine-
2017 projet du master (23/20) : parallélisation par instructions SIMD x86
Implémentation et analyse des performances d’un filtre d’image écrit en C puis en assembleur utilisant des instructions SIMD (single instruction, multiple data).
-
2017 projet du master (19,5/20) : architecture RiSC-16
Implémentation d’opérations arithmétiques avec plusieurs jeux d’instructions RiSC-16. Voir aussi le projet C++ cpprisc16.
-
2016 projet du master : assembleur LLVM, voir le projet Java compilateur Fortran
-
∼1995 projets personnels : assembleur x86, voir bibliothèques C sous MS-DOS et de grands entiers
-
-
OpenCL
dérivé de C pour programmation parallèle sur CPU multi-cœur et GPU-
2018 projet personnel : assertOpenCL
Bibliothèque OpenCL implémentant la macro
assert
manquante par rapport au C, avec des exemples de programmes hôtes en C, C++, Java, Scala et Python : bitbucket.org/OPiMedia/assertopencl -
2018 projet du master : évaluation et représentation graphique de L-systèmes
Implémentation et analyse des performances de systèmes de Lindenmayer en Python puis OpenCL (PyOpenCL) exécuté sur GPU. Il s’agit de systèmes de réécriture générant des structures récursives pouvant être interprétées comme des figures fractales, notamment des plantes. Génération d’images bitmaps, ou vectorielles avec le langage de programmation PostScript. bitbucket.org/OPiMedia/l-system-in-pyopencl
-
2018 projet du master : voir le projet C++ problème σimpair
-
-
C
langage impératif de bas niveau-
2017 projet du master (19/20) : contrôleur de signal numérique dsPIC33 (architecture Harvard)
Implémentation du calcul de transformée de Fourier discrète, gérant dépassement et précision.
-
∼1995 projet personnel : bibliothèque et applications sous MS-DOS
- Partie générale implémentant des structures de données et des fonctions d’aide.
- Partie gérant à partir des interruptions MS-DOS le clavier, la souris et le mode texte. Développement d’une interface avec menus déroulants telle que l’IDE de Turbo Pascal, gérée par une boucle événementielle.
- Partie gérant les modes graphiques : double buffering, affichage de backgrounds, automatisation d’éléments associés à des sprites et dynamique de mouvement dans une boucle événementielle.
Optimisation de fonctions critiques en assembleur x86.
Développement de plusieurs applications utilisant cette bibliothèque, dont un dictionnaire de citations : www.opimedia.be/DS/grenier/MS-DOS/online-DOS/
-
∼1995 projet personnel : bibliothèque de calcul sur des grands entiers
Opérations arithmétiques sur des entiers sans limitations de tailles.
Optimisation de fonctions critiques en assembleur x86.
-
-
C++
langage multi-paradigme statique-
2019 finaliste du C/C++ Challenge Belgium & The Netherlands 2019 organisé par Dekimo
-
2018 projet personnel et du master (17/20) : vérification numérique parallèle du problème σimpair
Développements mathématiques d’une conjecture arithmétique personnelle.
Vérification numérique de cette conjecture avec les technologies parallèles multithreading, par passage de messages (OpenMPI) et pour GPU (OpenCL) : bitbucket.org/OPiMedia/parallel-sigma_odd-problem
Slides de présentation du problème et des résultats : speakerdeck.com/opimedia/parallel-numerical-verification-of-the-s-odd-problem
calcul distribué, cluster, GCC, clang, CxxTest, Cppcheck, Valgrind, Doxygen ; multithreading, OpenMPI, OpenCL ; Makefile, gnuplot, Graphviz
-
2017 projet personnel : cpprisc16
Bibliothèque C++ réimplémentant les jeux d’instructions assembleurs RiSC-16, facilitant les expérimentations par rapport au simulateur RiSC-16 utilisé pour le projet du master RiSC-16 : bitbucket.org/OPiMedia/cpprisc16
-
2017 projet du master (17,5/20) : problème d’optimisation PFSP
Implémentation et analyse d’heuristiques d’amélioration itérative pour résoudre le problème d’optimisation Permutation Flow-shop Scheduling Problem (PFSP) : bitbucket.org/OPiMedia/permutation-flow-shop-scheduling-problem
-
2016 projet du master (18/20) : recherche de collisions partielles dans la fonction de hachage SHA-1
Calcul parallèle/distribué par passage de messages avec la bibliothèque OpenMPI.
-
2016 projet du master (17/20) : simulateur d’ordonnanceur
Implémentation et analyse de méthodes (globale et partitionnée) d’ordonnancement de tâches.
-
1997 projet du bachelor : site web dynamique de gestion de stock
C++ côté serveur avec CGI en Perl. Côté client HTML et Tcl/Tk pour afficher des histogrammes.
-
1997 projet du bachelor : implémentation de structures de données
Implémentation et analyse des performances de plusieurs structures de dictionnaire : naïve, bibliothèque de l’époque, arbre binaire de recherche automatiquement équilibré AVL, trie.
-
-
Bash
langage de script shell-
2020 projet personnel : HackerRank [CodinGame…]/helpers
Aide à la résolution de problèmes de type HackerRank, CodinGame… dans divers langages, en automatisant entre autre exécution et comparaison des résultats : bitbucket.org/OPiMedia/hackerrank-codingame-helpers
-
2020 projet personnel : gocd
Commande pour changer de répertoire, comme la traditionnelle commande cd mais avec un nom à la place d’un répertoire, à partir d’une liste d’association nom-répertoire : bitbucket.org/OPiMedia/gocd-bash
-
-
BBASIC
langage simpliste-
∼1993 projet personnel : dictionnaire de citations en AMOS BASIC sur Amiga
Voir aussi le projet PHP OPiCitations.
-
∼1991 projets personnels : jeux Tetris et Sokoban en AmigaBASIC sur Amiga
-
∼ 1985 – 1990 projets personnels : anciens jeux en BASIC sur TRS-80 puis GW-BASIC sous MS-DOS
-
-
PPascal
langage impératif-
1992 projet scolaire de fin d’année : calculatrice de polynômes en Turbo Pascal, avec une TUI
-
-
PHP
langage web côté serveur- Voir aussi Expériences professionnelles de développeur web.
-
2017 projet du master : voir le projet Python IMDb
-
2013 –… projet personnel : OPiCitations
Dictionnaire en ligne de citations : www.opimedia.be/OPiCitations/
MySQL, PHP, HTML/Sass, JavaScript
-
2010 projet de formation : – Wiki Hyper Media
Réalisation finale de la formation professionnelle de développeur web : whm.opimedia.be
rewriting Apache, MySQL, PHP, XHTML/CSS
-
JavaScript
langage objet dynamique principalement utilisé dans les navigateurs web- Voir aussi Expériences professionnelles de développeur web.
-
2020 projet personnel : mixed radix
Application HTML/Sass/JavaScript pour convertir les représentations de nombres d’une base mélangée à l’autre : www.opimedia.be/mixed-radix
-
2017 projet du master (17,5/20) : Disjoint Compatible Perfect Matchings
Illustration d’un sujet d’articles scientifiques par une page web statique en HTML/Sass, avec une application JavaScript : www.opimedia.be/CV/2016-2017-ULB/INFO-F420-Computational-geometry/Project-Disjoint-Compatible-Perfect-Matchings
-
2011 projet personnel : txt2
Application HTML/CSS/JavaScript pour appliquer diverses transformation sur des données textes : www.opimedia.be/DS/online-tools/txt2/
-
Java
langage orienté objet- Voir aussi les langages Scala et Processing qui tournent sur la machine virtuelle Java, et Expériences professionnelles de développeur web.
-
2017 projet du master (20/20) : ChocoChess
Résolution de problèmes de satisfaction de contraintes (CSP) avec la bibliothèque Choco solver : bitbucket.org/OPiMedia/chocochess
Javadoc, JUnit, Choco solver
-
2016 projet personnel et du master (14,5/20) : compilateur Fortran
Développement en Java d’un compilateur pour un sous-ensemble de Fortran. Analyse lexicale avec JFlex. Génération automatique à partir de la grammaire Fortran d’un parseur écrit en Java, avec un programme développé en Python. Génération de code natif via l’assembleur LLVM.
Java, JFlex, Python, LLVM
-
2014 projet pour le MOOC Creative, Serious and Playful Science of Android App (20/20)
Adaptation pour Android du projet Processing No Cross Circles.
-
2015 projet de la formation Laboratoire de programmation Java : RepairCenter
Développement d’une application web en méthodologie Scrum, dont le développement d’une bibliothèque Java pour automatiser la gestion des formulaires. Slides de la présentation finale : www.opimedia.be/CV/2015_Laboratoire_de_programmation_Java/RepairCenter.pdf
UML, Eclipse, SVN (Subversion), MySQL Workbench, Tomcat, Java EE, JSP, JPA, Hibernate ORM, Javadoc, Scrum
-
1998 projet du bachelor : implémentation de structures de données
-
Processing
dérivé de Java pour des arts visuels-
2013 projet pour le MOOC Creative Programming for Digital Media & Mobile Apps (20/20)
Application visuelle et sonore No Cross Circles produisant des sons MIDI lorsque des disques se touchent : https://bitbucket.org/OPiMedia/no-cross-circles/
-
-
Python
langage objet dynamique-
2020 – … projet personnel en cours : slidesfromvideo
Extraction automatique de slides à partir de vidéos, par l’utilisation des bibliothèques OpenCV et Pillow (PIL)
-
2020 – … projet personnel en cours : outcmp
Pour un programme et des entrées, l’exécute et teste ses sorties en les comparant aux sorties donnés supposées correctes ; résume le tout dans un tableau
-
2018 – … projet personnel en cours : tsv2htmltable
Application et bibliothèque Python 3 de conversion de données textes telles que TSV, CSV… en tables HTML interactives (ou LATEX ou autres données textes), avec possibilité de transformations par expressions rationnelles (regex) : bitbucket.org/OPiMedia/tsv2htmltable
Python 3, PyPy, pytest ; HTML, DataTables, LATEX
-
2018 projet du master : voir le projet OpenCL L-systèmes
-
2017 projet du master (15/20) : problème d’optimisation BPP
Implémentation et analyse d’heuristiques pour résoudre le Bin Packing Problem (BPP).
-
2017 projet du master (18/20) : application web utilisant le grand volume de données de IMDb
Extraction des données du site web cinéma IMDb avec Python pour alimenter une base de données MySQL. Application web dynamique : Apache HTTP Server, PHP, HTML/Sass.
-
2016 projet du master (20/20) : p0ss1ble
Application interactive avec visualisation HTML pour casser un ensemble de messages ayant été chiffrés avec la méthode sûre AES-128 CTR, mais dont le mésusage la rend fragile : bitbucket.org/OPiMedia/p0ss1ble
-
2016 projet du master (11/20) : structure de données à partir d’un article scientifique
Implémentation d’un arbre binaire de recherche persistant. Slides de présentation de la structure : speakerdeck.com/opimedia/persistent-search-trees
-
2016 – 2019 concours de programmation de l’EPFC dans la catégorie ancien étudiant
Successivement premier prix, second prix, premier prix puis premier prix ex æquo.
Solution pour 2019, avec quelques développements théoriques : bitbucket.org/OPiMedia/epfc-contest-15-2019-le-lacher-de-boules-de-petanque -
2016 projet du master : voir le projet Java compilateur Fortran
-
2013, 2014 projets pour le MOOC Discrete Optimization (18,5/20) :
Implémentation d’algorithmes pour résoudre des problèmes d’optimisation discrète : knapsack, graph coloring, traveling salesman, warehouse location, vehicle routing.
-
2013 – … projet personnel : SimpleGUICS2Pygame
Bibliothèque réimplémentant en Python compatible 2 et 3 des APIs de modules spécifiques (SimpleGUI…) écrits en JavaScript dans l’implémentation de Python CodeSkulptor : simpleguics2pygame.readthedocs.io
Des utilisateurs de par le monde m’ont contacté, directement ou indirectement par exemple par stackoverflow.com/search?q=SimpleGUICS2Pygame
Python 2, Python 3, matplotlib, Pillow (PIL), pygame, pycodestyle (pep8), Pylint, mypy, pytype, pydeps, Sphinx
-
2013 projet pour le MOOC An Introduction to Interactive Programming in Python (20/20) : RiceRocks (Asteroids)
Petit jeux dans l’environnement en ligne CodeSkulptor, utilisant le module SimpleGUI : https://py3.codeskulptor.org/#user305_XNvcqTxIBngtHPu.py
Liste d’autres programmes : https://simpleguics2pygame.readthedocs.io/en/latest/_static/links/prog_links.html
-
∼ 2005 – 2009 projet personnel : DSPython
Bibliothèque Python 2 implémentant des fonctions arithmétiques, une évaluation des combinateurs (logique combinatoire), et une machine à registres illimités (URM). Quelques applications Python/Tkinter l’utilisant. www.opimedia.be/DS/DSPython/
-
-
Julia
langage dynamique pour le calcul scientifique-
2017 projet du master (17,5/20) : problème d’optimisation linéaire p-center location
Implémentation et analyse de plusieurs formalisations de ce problème.
-
-
Scheme
langage fonctionnel dynamique épuré, similaire à Lisp-
∼2003 projet personnel : bibliothèque implémentant des fonctions arithmétiques
-
-
Erlang
langage fonctionnel concurrent basé sur le modèle d’acteur-
2018 projet du master (pas terminé) : implémentation parallèle d’un Twitter-like scalable
-
-
Scala
langage mêlant paradigmes objet et fonctionnel, tournant sur la machine virtuelle Java-
2019 mémoire du master (15,5/20) : Parallélisation d’un interpréteur abstrait, au travers du modèle acteur — Application à l’interpréteur abstrait Scala-AM
Présentation théorique de l’interprétation abstraite, technique d’analyse statique, c’est-à-dire technique visant à automatiser la preuve de propriétés sur les programmes ou la mise en évidence de bogues, sans exécuter ces programmes.
Présentation théorique de la programmation parallèle et plus particulièrement du modèle d’acteur. Un programme parallèle est conçu pour exécuter simultanément plusieurs tâches réparties sur plusieurs processeurs/cœurs. C’est désormais le moyen d’accélérer les programmes qui de nos jours ne peuvent plus simplement compter sur l’accélération proprement dite des processeurs. Le modèle d’acteur encapsule ces tâches dans des entités isolées qui communiquent par envoie de messages asynchrones. Cela réduit la difficulté, les programmes parallèles étant de nature non déterministe et sujets à de nombreuses erreurs potentielles.
Implémentation pratique de plusieurs algorithmes parallèles dans l’interpréteur abstrait Scala-AM existant. Évaluation des performances sur l’analyse de programmes Scheme.
Slides de la présentation finale : speakerdeck.com/opimedia/parallelisation-dun-interpreteur-abstrait-au-travers-du-modele-acteur
Implémentation Scala-Par-AM : bitbucket.org/OPiMedia/scala-par-am
sbt, sbt-assembly, ScalaCheck, ScalaTest, Akka, Scaladoc ; (LA)TEX, TikZ, gnuplot, Zotero
-
-
Haskell
langage fonctionnel pur, typé statiquement, avec évaluation paresseuse-
2018 projet du master (19/20) : Explore the Desert
Développement d’un jeu en mode console et en mode graphique, avec le modèle de parallélisme mémoire transactionnelle logicielle (STM) : bitbucket.org/OPiMedia/explore-the-desert-in-haskell
GHC, Gloss, HUnit, Haddock
-
-
Prolog
langage déclaratif, programmation logique-
2018 projet du master (16/20) : English Linear System Solver
Implémentation d’un solveur de système linéaire en langue naturelle : bitbucket.org/OPiMedia/english-linear-system-solver-in-prolog
-
-
LATEX
langage de composition de documents-
2019 – … projet personnel en cours : ensemble de paquetages LATEX
-
∼2005 – … projet personnel : rédaction de documents logico-mathématiques
-
∼ 2004 – 2014 projet personnel : ensemble de paquetages et d’outils pour LATEX
LATEX, PostScript, PSUtils, Makefile, Perl, Python
-