Developer / Computer Scientist 👨💻 👨🔬
- 🌳 Olivier Pirson
- Belgian, born in 1975
- www.linkedin.com/in/olivierpirson/
- https://europa.eu/!Gw99mX
- () bitbucket.org/OPiMedia/workspace/repositories
- 🏠 Brussels, Belgium 🇧🇪
- 📧 olivier.pirson.opi@gmail.com
- 🌐 www.opimedia.be
Education and Trainings
-
2019: Short training Testing, Treenity Solutions
REST APIs testing with Postman and automation with Jenkins
-
2019: 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 – …: Many university MOOCs (online courses), EPFL, Princeton, Stanford…
Algorithmics, compiler, languages, mathematical optimization, functional… paradigms;
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: 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 , 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.
- Analysis, full stack web development (MySQL, PHP, HTML/CSS, JavaScript) and deployment of a "Facebook-like wall" for the website Comedien.be using SPIP CMS. Screenshot of the wall: www.opimedia.be/CV/2010_Vertige/Comedien_be/Mur_de_Comedien_be.png
- Redesign of the Comedien.be website login system. Factoring of the existing code.
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 Badges and Certificates: C, C++, Java, JavaScript, Python, SQL; Problem SolvingLinkedIn badges: C, C++, Java, Python; Bash, Git, HTML
-
ASMassembly
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: 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 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
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
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
-
-
BBASIC
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
-
-
PPascal
imperative language-
1992 year-end school project: polynomial calculator in Turbo Pascal, with TUI
-
-
PHP
server-side web language- See also Professional experiences as a web developer.
-
2017 master project: see Python project IMDb
-
2013 –… personal project: OPiCitations
Online quotes dictionary: www.opimedia.be/OPiCitations/
MySQL, PHP, HTML/Sass, JavaScript
-
2010 training project: – Wiki Hyper Media
Final realization of professional web developer training: whm.opimedia.be
rewriting Apache, MySQL, PHP, XHTML/CSS
-
JavaScript
dynamic object language mainly used in web browsers- See also Professional experiences as a web developer.
-
2020 personal project: mixed radix
HTML/Sass/JavaScript application to convert representations of numbers from one mixed radix to another: www.opimedia.be/mixed-radix
-
2017 master project (17.5/20): Disjoint Compatible Perfect Matchings
Illustration of a scientific article subject by a static web page in HTML/Sass, with a JavaScript application: www.opimedia.be/CV/2016-2017-ULB/INFO-F420-Computational-geometry/Project-Disjoint-Compatible-Perfect-Matchings
-
2011 personal project: txt2
HTML/CSS/JavaScript application to apply various transformations to text data: www.opimedia.be/DS/online-tools/txt2/
-
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
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): 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
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-
2013 project for MOOC Creative Programming for Digital Media & Mobile Apps (20/20)
Visual and sound application No Cross Circles producing MIDI sounds when discs touch each other: https://bitbucket.org/OPiMedia/no-cross-circles/
-
-
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
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.
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 (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-
2018 master project (not completed): parallel implementation of a scalable Twitter-like
-
-
Scala
language mixing object and functional paradigms, running on Java Virtual Machine-
2019 master thesis (15.5/20): Parallelization of an abstract interpreter, through the actor model — Application to the Scala-AM abstract interpreter
Theoretical presentation of abstract interpretation, static analysis technique, i.e. technique to automate the proof of properties on programs or highlighting bugs, without executing these programs.
Theoretical presentation of parallel programming and especially of the actor model. A parallel program is designed to simultaneously perform several tasks distributed over several processors/cores. This is now the way to accelerate programs that today can no longer simply rely on the proper acceleration of processors. The actor model encapsulates these tasks in isolated entities that communicate by sending asynchronous messages. This reduces the difficulty, parallel programs are non-deterministic in nature and subject to many potential errors.
Practical implementation of several parallel algorithms in the existing Scala-AM abstract interpreter. Performance evaluation on the analysis of Scheme programs.
Final presentation slides: speakerdeck.com/opimedia/parallelisation-dun-interpreteur-abstrait-au-travers-du-modele-acteur
Scala-Par-AM implementation: bitbucket.org/OPiMedia/scala-par-am
sbt, sbt-assembly, ScalaCheck, ScalaTest, Akka, Scaladoc; (LA)TEX, TikZ, gnuplot, Zotero
-
-
Haskell
pure functional language, statically typed, with lazy evaluation-
2018 master project (19/20): Explore the Desert
Development of a game in console and graphic mode, with the software transactional memory (STM) parallelism model: bitbucket.org/OPiMedia/explore-the-desert-in-haskell
GHC, Gloss, HUnit, Haddock
-
-
Prolog
declarative language, logical programming-
2018 master project (16/20): English Linear System Solver
Implementation of a linear system solver in natural language: bitbucket.org/OPiMedia/english-linear-system-solver-in-prolog
-
-
LATEX
document composition language-
2019 – … ongoing personal project: LATEX package set
-
∼2005 – … personal project: writing logical-mathematical documents
-
∼ 2004 – 2014 personal project: set of packages and tools for LATEX
LATEX, PostScript, PSUtils, Makefile, Perl, Python
-