Curriculum Vitæ 🇬🇧

Version française 🇫🇷 / English 🇬🇧 version
CV PDF format (720 Kio) (June 9, 2023)

Developer / Computer Scientist 👨‍💻 👨‍🔬

Mathematical sciences (bachelor) —
 … 
Computer science (master) —
sum(f(i) for i in range(n))

Education and Trainings

  • 2019: Short training Testing, Treenity Solutions

    REST APIs testing with Postman and automation with Jenkins

  • 2019: [bibliography] Master in computer science 👨‍💻 👨‍🔬, ULB, 74% distinction (followed in English)

    Theoretical matters and practical.
    (Modules: optimization, algorithms. Options: programming languages, parallelism.)
    Master thesis Parallelization of an abstract interpreter, through the actor model

  • 2015: Java programming laboratory, Business Training via Bruxelles Formation

    Learning and development of a web application RepairCenter in Scrum methodology

  • 2015: EPFC courses

    Algorithmics – design and analysis, Preparation for Java certification, C++ programming

  • 2013 – …: [MOOC] Many university MOOCs (online courses), EPFL, Princeton, Stanford…

    Algorithmics, compiler, languages, mathematical optimization, functionalparadigms;
    Bash, C++, Java, ML, Oz, Python, Scala…; Git…;
    English

  • 2011, 2014 & 2016: Short Evoliris trainings

    Android, project management, GNU/Linux, HTML5/CSS3, network, security, UML

  • 2010: Professional web developer training, Business Training via Bruxelles Formation

    UML, (X)HTML/CSS, MySQL, Apache HTTP Server, PHP, JavaScript, Flash/ActionScript

  • 1998: [pi] Bachelor in mathematical sciences 🧮, computer science orientation 👨‍💻, UCL, satisfaction

    Computer projects in C++, Pascal, Java, Tcl/Tk

Computer skills

Development: Ada, OpenCL, C, C++, Java, Python, Scala, Scheme, assembly, Erlang, Haskell, LLVM, ML, Prolog…
languages
etc.
Web development: JavaScript/jQuery/AJAX, PHP, (X)HTML/CSS/Sass…; CMS
Databases: MySQL, QuickBase…
Operating systems: GNU/Linux 🐧, Debian [Debian], Android, Windows…
Tools: Apache HTTP Server, Doxygen, Eclipse, Emacs, Git/Mercurial, (LA)TEX, Makefile, regex, shell…
Miscellaneous: parallel computing, functional and object-oriented programming (OOP), UML

Languages

🇫🇷 French: mother tongue
🇬🇧 English: CEFR level B1+ (ULB Master’s degree was in English)

Miscellaneous

  • 🚘 Driving license B

Professional experiences

  • 2020 – …: Solution Building Engineer at Sopra Steria (ICT consultancy)

    Ada development, Ksh

  • 2015 – 2016: Web development for ArtCoreWeb (web development)

    Starting a web development activity (via JobYourSelf, SMart… with the aim of becoming freelance), with a partner dealing with commercial and design aspects.

    • Design and development of a website for the activity: interactive recursive illustration of the process from a request to its realization. HTML/Sass, JavaScript. www.opimedia.be/CV/2015_ArtCoreWeb/ArtCoreWeb/
    • Development of a static website: HTML/CSS, Bootstrap, JavaScript.
    • Development of an Android application prototype in Java to easily take pictures of articles in shop and add them with a description on an e-commerce.
    • Technical analysis, report writing and sale quotes.
    • Learning.

    MySQL, PHP, HTML/CSS/Sass, Bootstrap, JavaScript, jQuery, CMS, e-commerce, Android, Java

  • 2011 – 2013: Web developer at Umedia (cinema production)

    Analysis, full stack web development (MySQL, PHP, HTML/CSS, JavaScript), deployment and monitoring on MindTouch CMS used internally for document sharing and communication. Development of a template. Interaction with API. Development of tools to be included: calendar, "Facebook-like wall", lunch reservation…

    Dismissed following the replacement of the CMS MindTouch by another software managed by an external company.

    • CMS administration.
    • Migration of CMS from Apache web server under Ubuntu to IIS web server under Windows.
    • Cross-reference of employees database with CMS user list.
    • Development of a ticketing application in MySQL, PHP, HTML/CSS, JavaScript.
    • IT troubleshooting or transfer to the system administrator responsible of the computer park.
    • Help to business trainees for the development of online databases with QuickBase.

    Ubuntu, Apache HTTP Server, Windows, IIS, MySQL, PostgreSQL, PHP, HTML/CSS, JavaScript, jQuery, AJAX, MindTouch, QuickBase

  • December 2010 – February 2011: Web developer internship at Vertige (web development)

    Internship following the professional web developer training.

    MySQL, PHP, HTML/CSS, JavaScript, jQuery, AJAX, SPIP

Developer experiences, by language

  • ⚠️ This last section lists personal or didactic projects classified by programming language, starting with languages closest to the machine: . The mention of the oldest projects is intended to illustrate that I have been programming for a very long time.
    You can access subsections from menu ☰ on the right-hand side of the page.
    A brief selection in anti-chronological order is available in the Projects section of my europass profile: https://europa.eu/!Gw99mX
  • Languages I have used and use the most are: Ada, C, C++, Python.
  • Repositories of my free projects (free software, open source) on Bitbucket (GitHub-like): bitbucket.org/OPiMedia/workspace/repositories
  • Personal bookmarks on programming languages: www.opimedia.be/DS/languages/
  • [HackerRank Gold badge] HackerRank Gold Badges and Certificates: C, C++, Java, JavaScript, Python, SQL; Problem Solving
    [LinkedIn badge] LinkedIn badges: C, C++, Java, Python; Bash, Git, HTML
  • assembly

    language close to machine language
    • 2017 master project (23/20): parallelization by SIMD x86 instructions

      Implementation and performance analysis of image filter written in C and then in assembly using SIMD (single instruction, multiple data) instructions.

    • 2017 master project (19.5/20): RiSC-16 architecture

      Implementation of arithmetic operations with several RiSC-16 instruction sets. See also C++ project cpprisc16.

    • 2016 master project: LLVM assembly, see Java project Fortran compiler
    • ∼1995 personal projects: assembly x86, see C libraries on MS-DOS and on big integers
  • OpenCL

    derived from C for parallel programming on multi-core CPU and GPU
    • 2018 personal project: assertOpenCL

      OpenCL library implementing the missing macro assert with respect to C, with examples of host programs in C, C++, Java, Scala and Python: bitbucket.org/OPiMedia/assertopencl

    • 2018 master project: [L-system] evaluation and graphical representation of L-systems

      Implementation and performance analysis of Lindenmayer systems in Python and then OpenCL (PyOpenCL) on GPU. These are rewriting systems that generate recursive structures that can be interpreted as fractal figures, particularly plants. Generation of bitmaps, or vector graphics with the PostScript programming language. bitbucket.org/OPiMedia/l-system-in-pyopencl

    • 2018 master project: see C++ project σodd problem
  • C

    low-level imperative language
    • 2017 master project (19/20): digital signal controllers dsPIC33 (Harvard architecture)

      Implementation of the discrete Fourier transform computation, handling overflow and accuracy.

    • ∼1995 personal project: library and applications on MS-DOS
      • General part implementing data structures and helper functions.
      • Part handling keyboard, mouse and text mode from MS-DOS interrupts. Development of an interface with drop-down menus like Turbo Pascal’s IDE, handled by an event-driven loop.
      • Part handling graphic modes: double buffering, backgrounds display, automation of elements associated with sprites and motion dynamics in an event-driven loop.

      Optimization of critical functions by assembly x86.

      Development of several applications using this library, including a quotes dictionary: www.opimedia.be/DS/grenier/MS-DOS/online-DOS/

    • ∼1995 personal project: computation library on big integers

      Arithmetic operations on integers without size limitations.

      Optimization of critical functions by assembly x86.

  • C++

    static multi-paradigm language
    • 2019 finalist of C/C++ Challenge Belgium & The Netherlands 2019 organized by Dekimo
    • 2018 personal and master project (17/20): parallel numerical verification of the σodd problem

      Mathematical developments of a personal arithmetic conjecture.

      Numerical verification of this conjecture with parallel technologies multithreading, by message passing (OpenMPI) and for GPU (OpenCL): bitbucket.org/OPiMedia/parallel-sigma_odd-problem

      Slides to present the problem and results: speakerdeck.com/opimedia/parallel-numerical-verification-of-the-s-odd-problem

      distributed computing, cluster, GCC, clang, CxxTest, Cppcheck, Valgrind, Doxygen; multithreading, OpenMPI, OpenCL; Makefile, gnuplot, Graphviz

    • 2017 personal project: cpprisc16

      C++ library reimplementing the RiSC-16 assembly instruction sets, facilitating experiments compared to the RiSC-16 simulator used for the master project RiSC-16: bitbucket.org/OPiMedia/cpprisc16

    • 2017 master project (17.5/20): [PFSP] PFSP optimization problem

      Implementation and analysis of iterative improvement heuristics to solve the optimization problem Permutation Flow-shop Scheduling Problem (PFSP): bitbucket.org/OPiMedia/permutation-flow-shop-scheduling-problem

    • 2016 master project (18/20): partial collision search in the hash function SHA-1

      Parallel/distributed computing by message passing with OpenMPI library.

    • 2016 master project (17/20): scheduler simulator

      Implementation and analysis of methods (global and partitioned) for scheduling tasks.

    • 1997 bachelor project: dynamic website for stock management

      C++ server side with CGI in Perl. HTML client side and Tcl/Tk to display histograms.

    • 1997 bachelor project: implementation of data structures

      Implementation and performance analysis of several dictionary structures: naive, library of the time, self-balancing binary search tree AVL, trie.

  • Bash

    shell scripting language
    • 2020 personal project;: [HackerRank [CodinGame…] / helpers] HackerRank [CodinGame…]/helpers

      Support for solving problems such HackerRank, CodinGame… in various languages, by automating among other things the execution and comparison of results: bitbucket.org/OPiMedia/hackerrank-codingame-helpers

    • 2020 personal project: [gocd] gocd

      Command to change directory, like the traditional cd command but with a name instead directory, from an association list name-directory: bitbucket.org/OPiMedia/gocd-bash

  • BASIC

    simplistic language
    • ∼1993 personal project: quotes dictionary in AMOS BASIC on Amiga

      See also PHP project OPiCitations.

    • ∼1991 personal projects: games Tetris and Sokoban in AmigaBASIC on Amiga
    • ∼ 1985 – 1990 personal projects: old games in BASIC on TRS-80 then GW-BASIC on MS-DOS
  • Pascal

    imperative language
    • 1992 year-end school project: polynomial calculator in Turbo Pascal, with TUI
  • PHP

    server-side web language
  • JavaScript

    dynamic object language mainly used in web browsers
  • Java

    object-oriented language
    • See also Scala and Processing languages that running on Java virtual machine, and Professional experiences as a web developer.
    • 2017 master project (20/20): [ChocoChess] ChocoChess

      Solving constraint satisfaction problems (CSP) with Choco solver library: bitbucket.org/OPiMedia/chocochess

      Javadoc, JUnit, Choco solver

    • 2016 personal and master project (14.5/20): [compiler] Fortran compiler

      Development in Java of a compiler for a subset of Fortran. Lexical analysis using JFlex. Automatic generation from Fortran grammar of a parser written in Java, with a program developed in Python. Native code generation via LLVM assembly.

      Java, JFlex, Python, LLVM

    • 2014 project for MOOC Creative, Serious and Playful Science of Android App (20/20)

      Adaptation for Android of the Processing project No Cross Circles.

    • 2015 training Java programming laboratory project: [RepairCenter] RepairCenter

      Development of a web application in Scrum methodology, including the development of a Java library to automatize forms handling. Final presentation slides: 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 bachelor project: implementation of data structures
  • Processing

    derived from Java for visual arts
  • Python

    dynamic object language
    • 2020 – … ongoing personal project: slidesfromvideo

      Automatic extraction of slides from videos, using libraries OpenCV and Pillow (PIL)

    • 2020 – … ongoing personal project: outcmp

      For a program and inputs, executes it and tests its outputs by comparing them to given outputs assumed to be correct; summarizes in a table

    • 2018 – … ongoing personal project: tsv2htmltable

      Python 3 application and library for converting text data such as TSV, CSV… into interactive HTML tables (or LATEX or other text data), with possibility of transformations by regular expressions (regex): bitbucket.org/OPiMedia/tsv2htmltable

      Python 3, PyPy, pytest; HTML, DataTables, LATEX

    • 2018 master project: see OpenCL project L-systems
    • 2017 master project (15/20): BPP optimization problem

      Implementation and analysis of heuristics to solve the Bin Packing Problem (BPP).

    • 2017 master project (18/20): web application using the large volume of IMDb data

      Extraction of data from IMDb cinema website with Python to feed a MySQL database. Dynamic web application: Apache HTTP Server, PHP, HTML/Sass.

    • 2016 master project (20/20): [p0ss1ble] p0ss1ble

      Interactive application with HTML visualization to break a set of messages that have been encrypted using the secure AES-128 CTR method, but whose misuse makes it fragile: bitbucket.org/OPiMedia/p0ss1ble

    • 2016 master project (11/20): data structure from a scientific article

      Implementation of a persistent binary search tree. Presentation slides of the structure: speakerdeck.com/opimedia/persistent-search-trees

    • 2016 – 2019 EPFC programming competition in the past student category

      Successively first prize, second prize, first prize, first prize and then first prize ex æquo.
      [Concours de programmation EPFC 2019] Solution for 2019, with some theoretical developments: bitbucket.org/OPiMedia/epfc-contest-15-2019-le-lacher-de-boules-de-petanque

    • 2016 master project: see Java project Fortran compiler
    • 2013, 2014 projects for MOOC Discrete Optimization (18.5/20):

      Implementation of algorithms to solve discrete optimization problems: knapsack, graph coloring, traveling salesman, warehouse location, vehicle routing.

    • 2013 – … personal project: SimpleGUICS2Pygame

      Library reimplementing in Python compatible 2 and 3 some APIs of specific modules (SimpleGUI…) written in JavaScript in the implementation of Python CodeSkulptor: simpleguics2pygame.readthedocs.io

      Users all over the world have contacted me, directly or indirectly for example by stackoverflow.com/search?q=SimpleGUICS2Pygame

      Python 2, Python 3, matplotlib, Pillow (PIL), pygame, pycodestyle (pep8), Pylint, mypy, pytype, pydeps, Sphinx

    • 2013 project for MOOC An Introduction to Interactive Programming in Python (20/20): [RiceRocks] RiceRocks (Asteroids)

      Small games in CodeSkulptor online environment, using SimpleGUI module: https://py3.codeskulptor.org/#user305_XNvcqTxIBngtHPu.py

      List of other programs: https://simpleguics2pygame.readthedocs.io/en/latest/_static/links/prog_links.html

    • ∼ 2005 – 2009 personal project: DSPython

      Python 2 library implementing arithmetic functions, evaluation of combinators (combinatory logic), and unlimited register machine (URM). Some Python/Tkinter applications using it. www.opimedia.be/DS/DSPython/

  • Julia

    dynamic language for scientific computation
    • 2017 master project (17.5/20): linear programming problem p-center location

      Implementation and analysis of several formalizations of this problem.

  • Scheme

    refined dynamic functional language, similar to Lisp
    • ∼2003 personal project: library implementing arithmetic functions
  • Erlang

    concurrent functional language based on the actor model
  • Scala

    language mixing object and functional paradigms, running on Java Virtual Machine
  • Haskell

    pure functional language, statically typed, with lazy evaluation
  • Prolog

    declarative language, logical programming
  • LATEX

    document composition language
    • 2019 – … ongoing personal project: LATEX package set
    • ∼2005 – … personal project: writing logical-mathematical documents

      www.opimedia.be/docs-math/

    • ∼ 2004 – 2014 personal project: set of packages and tools for LATEX

      LATEX, PostScript, PSUtils, Makefile, Perl, Python