Marc Coiffier Développeur Open Source et administrateur système Linux FOSS Developer and Linux system administrator
📧 marc@coiffier.net
06 59 83 75 00
🎂 28 Juin 1991June 28th, 1991
🏠
15, allée des Vosges
38130 Échirolles

Savoir-êtreSkills

Empathie Empathy Curiosité Curiosity Adaptabilité Adaptability Travail en équipe Teamwork Esprit d'initiative Initiative Persévérance Tenacity Politesse Politeness

Savoir-faireCompetences

Administration système Linux (Debian, ArchLinux, NixOS) Systems administration Linux (Debian, ArchLinux, NixOS) Programmation (Haskell, Python, Shell, C++, ...) Programming (Haskell, Python, Shell, C++, ...) Automatisation / Déploiement (Docker, Nix, CI/CD, ...) Automation / Deployment (Docker, Nix, CI/CD, ...) Anglais courant Fluent english Développement collaboratif (Git, GitHub, SourceHut, ...) Collaborative development (Git, GitHub, SourceHut, ...) Méthodes formelles et spécification (Coq, Idris) Formal methods and specification (Coq, Idris) Technologies Web (JavaScript, HTML, CSS, ...) Web technologies (JavaScript, HTML, CSS, ...)

Expériences professionnelles Experience

2024-2025

Administrateur système et réseaux à l'IPAG Systems administrator at the IPAG

Administration du parc informatique de l'IPAG, un institut de planétologie regroupant plus de 150 utilisateurs, requérant une variété d'environnements et outils informatiques Managing the computer infrastructure at the Insitute of Planetology and Astrophysics in Grenoble, totalling more than 150 users requiring a variety of tools and environments

Conception, développement et déploiement d'une application Web de monitorat de parc informatique pour faciliter le maintien de la PSSI (politique de sécurité des services informatiques) Designing, building and deploying a Web application to help in monitoring the institute's computers, and in maintaining compliance with our IT Security Policy

Participation au projet de développement de code communautaire Idefix, en collaboration avec Geoffroy Lesur, et travail sur l'intégration continue du projet dans des environnements HPC divers (cluster Jean-Zay à l'IDRIS, Adastra à GENCI et Bigfoot à GRICAD) Participating in the community project Idefix, and collaborating with Geoffroy Lesur to work on the continuous integration of the project into various HPC environments (Jean-Zay at IDRIS, Adastra at CINES, and Bigfoot at GRICAD)

2016-2020

Thèse en preuves de programmes à VERIMAG Thesis on program proofs at VERIMAG lab

Conception d'une extension du calcul des constructions capable de générer des principes d'inductions pour des encodages de Church. Designing an extension to the Calculus of Constructions that can generate induction principles on Church encodings.

Utilisation de l'assistant de preuve Coq pour prouver la cohérence et la normalisation forte de cette extension. Using Coq to prove coherence and strong normalization properties for this extension.

Utilisation de Coq pour prouver la correction de certains algorithmes de la bibliothèque standard OCaml (par exemple, que son implémentation de MergeSort décrit bien un tri correct et stable). Using Coq to prove certain algorithms of the OCaml standard library (for example, that its implementation of MergeSort is correct and stable).

Développement d'un "wiki" de preuves, site statique écrit en Markdown littéraire permettant d'explorer et de vérifier des fragments de preuves directement sur le navigateur Developing a "proof wiki", a static site generated through literate programming, that allows exploration and verification of proofs in the browser.

2012-2016

Administrateur de parc informatique à l'UFR IM²AG Systems administrator at the UFR IM²AG

Administration du parc informatique pédagogique et des serveurs de l'UFR IM²AG. Managing the lab computers and servers at the UFR IM²AG.

  • Assistance technique de niveau 1 aux personnels de l'établissement, en lien avec la DSI de l'UGA Providing level 1 IT support to the UFR staff, escalating to central IT when necessary
  • Déploiement d'images Linux/Windows avec CloneZilla en PXE Deploying Linux/Windows dual-boot images using CloneZilla over PXE
  • Orchestration des mises à jour / installation de logiciels sous Linux via un serveur de paquets Debian locaux Orchestrating Linux updates / software installs via a local Debian package server
  • Documentation des services et de l'infrastructure, dans un wiki partiellement accessible aux utilisateurs Maintaining infrastructure and service documentation in a semi-open wiki site
  • Monitorat des postes grâce à TARSIS, un logiciel de monitorat d'infrastructure développé en interne Monitoring lab computers using TARSIS, and internally-developped program for infrastructure management

Mes Projets Projects

GTK-Stream : un outil de gestion d'interface graphiques GTK GTK-Stream : a tool to manage GTK windows and widgets

Lien vers le projetLink to the project

Un outil écrit en Python, qui permet de créer et de piloter une application graphique en établissant une connexion bidirectionnelle sérielle permettant d'envoyer des messages encodés en XML, et de recevoir des évènements graphiques. A Python tool to create and pilot a graphical application by establishing a bidirectional serial connection that allows sending XML-encoded messages, and receiving graphical events.

  • Portable : testé sur Linux, MacOS et le WSL Portable : tested on Linux, MaxOS, and the WSL
  • Léger : ne dépend que de GTK et de la librairie standard Python Lightweight : only depends on the GTK library and the Python standard library
  • Facile : utilise des technologies simples (entrées/sorties standards et XML) et s'apprend en quelques heures Easy : uses simple technologies (stdin/stdout and XML), can be learned in a few hours
  • S'intègre sans effort à n'importe quel type de projet Integrates effortlessly into any kind of software project

Fix : des outils et un protocole de distribution logicielle Fix : a software distribution protocol and toolset

Lien vers le projetLink to the project

Des outils qui facilitent le développement, la construction, la distribution, l'installation et la mise à jour de logiciels de manière décentralisée, sécurisée, auditable et multi-plateforme. Tools to facilitate developing, building, distributing, installing and updating software in a decentralized, secure, auditable and cross-platform manner.

  • Sécurisé : basés sur un protocole client-serveur (le RSDP) afin de permettre l'installation de logiciels non approuvés sans leur accorder de droits d'administration Secure : follows a client-server protocol (called RSDP) to allow building and installing untrusted software without giving it administrator privileges
  • Multiplateforme : permet la création de plans de construction multi-plateformes, évitant la nécessité de maintenir des paquets pour chaque distribution et architecture Cross-platform : allows the creation of cross-platform build plans, alleviating the need for maintaining a multitude of architecture- and distribution-specific packages
  • Reproductible : représente les dépendances d'un programme à l'aide d'identifiants cryptographiques, afin de garantir l'intégrité et la reproductibilité des artefacts logiciels Reproducible : stores dependencies using cryptographic identifiers to ensure integrity and reproducibility of build artifacts
  • Décentralisé : via une gestion des "métadonnées signées", permet à chaque projet indépendamment d'associer des informations dynamiques et non-falsifiables (dépréciation d'une version, mises à jour disponibles, ...) à propos des paquets qu'ils maintiennent Decentralized : through the use of "signed metadata", allows each software project to independently attach dynamic and unforgeable information (such as whether a version is deprecated or newer version is available) about each of their packages

Curly : un compilateur pour un langage fonctionnel simple Curly : a compiler for a simple functional language

Lien vers le projetLink to the project

Un compilateur développé en Haskell, capable de builds reproduisibles et multi-plateformes. A simple compiler, written in Haskell, that enforces reproducible cross-platform builds.

  • Un système de type capable d'inférer des types récursifs (comme λx.xx) A type-system that can infer recursive types (as with the term λx.xx)
  • Des classes de types de premier ordre First-class typeclasses
  • Une édition des liens en une seule passe, pour une génération de code assembleur en just-in-time ou en éxécutable statique Single-pass linking, for just-in-time and static executable assembly code generation
  • Des modules content-addressed pour rendre la compilation reproduisible par défaut Content-addressed modules to provide reproducible builds by default
  • Un format de documentation intégré au compilateur, et une documentation de second ordre (fini les commentaires de documentation) Built-in documentation format, and second-order documentation (no more doc comments)
  • Du Code-signing automatique lors de la distribution de modules Automatic code-signing when distributing modules

Omega : un micro-kernel Omega : a micro-kernel

Lien vers le projetLink to the project

Un projet d'apprentissage, qui m'a permis d'en apprendre beaucoup sur la façon dont les systèmes d'exploitation fonctionnent, dans les moindres détails. A toy projet that taught me a lot about the way operating systems work internally.

  • Multi-processus avec protection de la mémoire Multi-process with memory protection
  • Multi-thread avec synchronisation inter-processus Multi-thread with inter-process synchronisation
  • Doté d'un langage de script et d'une CLI Complete with basic CLI and a scripting language
  • Drivers clavier, et VGA rudimentaire Rudimentary keyboard, and VGA, drivers
  • Très rapide à démarrer ! Blazing fast to boot !

Viz : un visualiseur de réseaux d'interaction Viz : an interaction network visualizer

Lien vers le projetLink to the project

Dans le but de développer un algorithme beta-optimal d'évaluation du calcul des constructions, qui se repose sur l'utilisation de réseaux d'interaction. In order to design a beta-optimal evaluator for the Calculus of Construction, that uses interaction nets.

  • Création et suppression de noeuds et d'arêtes, dans un canvas SVG Create and delete nodes and edges in an SVG canvas
  • Application de règles de réduction pour visualiser les étapes intermédiaires de réductions complexes Apply reduction rules to see how the graph evolves
  • Repositionnement automatique des noeuds du graphe pour minimiser la "tension interne" et rendre la visualisation plus lisible (utilise la descente de gradient) Automatically smooth reposition nodes to minimize "internal tension" and make visualization more legible (uses gradient descent)

DiplômesEducation

2016

Ingénieur Réseaux et Télécommunications Network Engineer

Validation des acquis d'expérience (VAE) après 4 années d'administration système à l'UFR IM²AG Knowledge acquired by experience after 4 years' working as a systems administrator at the UFR IM²AG.

2011

Maths and Computer Science LicentiateLicence Mathématiques et Informatique

À l'Université Joseph Fourier de Grenoble At the Université Joseph Fourier in Grenoble

2008

Baccalauréat GénéralBachelor's Degree

Au lycée Champollion de Grenoble At the Champollion High School in Grenoble

Centres d'intérêtInterests

Musique : piano, violon et guitareMusic : piano, violin and guitar Danse : Lindy Hop avec Grenoble Swing et danses folk à l'Escapade Folk Dance : Lindy Hop with Grenoble Swing and traditional dances with the Folk Escapade Jeux de société à la Maison des Jeux de Grenoble Board games with the Grenoble Games' Den