Valentin David

Valentin David

Bergen, NO
French, English, Norwegian




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 on Ubuntu Core

  • 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, whereas Stratego is a language for program transformation. This work also brought an interface of ROSE (C++) into Java.

  • Intern, LIP6

    Jan, 2005 - Jun, 20055 months

    Under supervision of Mikal Ziane on RNTL Lutin (Automatic refactoring)
    Project Lutin provides techniques for automatic refactoring of object-oriented source code by setting only access restrictions. During this internship, I developed and tested a tool for identifying access violations in Java source code (a kind of generalized private/public/protected), using Stratego/XT and a hybrid modal logic evaluator in Prolog. I also developed some basic refactoring transformations that can automatically fix the common access violations.

  • 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)
    Automata are not always as simple as just having a letter on each edge. Labels can be generalized to be rational series over a monoid with multiplicity in a semiring. Serialized XML representations for automata were often not that generic. Vaucanson, thanks C++ templates, can handle generic automata. To be able serialize automata, it was necessary to define a generic XML format. The format and the input and output for Vaucanson were my work.

Projects Experience

Projects Experience

  • GNOME Foundation

    Nov, 2019 - Present

    Contributing on GNOME OS and GNOME build metadata

  • 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 maintaining it since.



  • 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



  • 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