×
Valentin David

Valentin David


Bergen, NO
French, English, Norwegian

Background


About

About

I am a software engineer, C++ developer, FOSS contributor, build expert, hardware enthusiast, with an academic background in programming languages.

Work Experience

Work Experience

  • Software Engineer, Canonical

    Oct, 2021 - Present

    Working mainly on Ubuntu Core and system snaps, and as well as helping on Snapd.

  • Software engineer, Codethink

    Jun, 2018 - Sep, 20213 years 3 months

    Working as consultant to help customers on build, CI and deployment systems. Improving FOSS tooling for building software.

  • Developer, Vizrt

    Aug, 2011 - Jun, 20186 years 10 months

    Working on the Media Sequencer which is a soft real-time middleware.

  • Researcher, Uni Research

    Jan, 2011 - Dec, 201111 months

    I have been making an automated concept-based testing C++11 library to demonstrate the power of concepts as specification, and concept-driven development.

  • Researcher, University of Bergen

    Jan, 2010 - Dec, 201011 months

    The big part of my research was to explore the use of expression templates applied to generic program transformation, expressing concepts for Stratego/XT, Rascal and other similar project into a pure C++ library. The project coming with a bootstrapped generalized LL parser generator.

  • Part-time engineer, University of Bergen

    Mar, 2009 - Dec, 20099 months

    Helping on project project Magnolia, which is an experimental programming language. Along with being teaching assistant while finishing my PhD.

  • Intern, Lawrence Livermore National Laboratory

    May, 2007 - Oct, 20075 months

    Under supervision of Dan Quinlan on ROSE.
    I developed a ROSE backend for Stratego/Spoofax. ROSE is a framework for C++ source analysis and transformation. Stratego is a programming language for program transformation.

  • Intern, LIP6

    Jan, 2005 - Jun, 20055 months

    Under supervision of Mikal Ziane on RNTL Lutin (Automatic refactoring)
    Automatic refactoring of Java source code based on violation of rules written in hybrid modal logic.

  • Intern, Télécom Paris

    Sep, 2003 - Feb, 20045 months

    Under supervision of Jacques Sakarovitch and Sylvain Lombardy on Vaucanson (Generic finite state machine framework)
    XML serialization of finite state machines.

Projects Experience

Projects Experience

  • GNOME Foundation

    Nov, 2019 - Present

    Contributing on GNOME OS and GNOME build metadata. I mainly work on the boot, secure boot, encryption and updates.

  • Freedesktop SDK

    Oct, 2017 - Present

    Freedesktop SDK is the runtimne of Flatpak applications. I have done the migration from Yocto+Flatpak-Builder to BuildStream. I have been a maintainer.

Education

Education

  • Computer science, PhD, University of Bergen

    Jan, 2005 - Jan, 2009

  • Computational Science and Images, Engineer's degree, École pour l'Informatique et les Techniques Avancées

    Jan, 2000 - Jan, 2005

Publications

Publications

  • Testing with Axioms in C++ 2011 , Journal of Object Technology

    Published on: Jan 01, 2011

    Unit testing is an important part of modern software development, where individual code units are tested in isolation. Such tests are typically case-based, checking a likely error scenario or an error that has previously been identified and fixed. Coming up with good test cases is challenging, particularly when testing generic code, and focusing on individual tests can distract from creating tests that cover the full functionality. Concepts provide a generic way of describing code interfaces for generic code. Together with axioms, program behaviour can be specified algebraically in a formal or semi-formal way. In this paper we show how concepts and axioms can be expressed in standard C++ 2011, and explore how to generate generic unit tests, by treating the axioms as code to be evaluated with test data. We also show a generic way to generate test data for axiom-based testing in C++ 2011.

  • C-Transformers: a framework to write C program transformations , ACM's Crossroads

    Published on: Mar 01, 2006

    Program transformation techniques have reached a maturity level that allows processing high-level language sources in new ways. Not only do they revolutionize the implementation of compilers and interpreters, but with modularity as a design philosophy, they also permit the seamless extension of the syntax and semantics of existing programming languages. The C-Transformers project provides a transformation environment for C, a language that proves to be hard to transform. We demonstrate the effectiveness of C-Transformers by extending C’s instructions and control flow to support Design by Contract. C-Transformers is developed by members of the LRDE: EPITA undergraduate students