• Vincent JORDAN
  • 39 rue d'Illfurth
    68720 Heidwiller, France
  • vjp_AT_gmx_DOT_fr
  • French citizen
    Born on January 23rd, 1985
    Driving license

Embedded/backend system engineer

Skills

ParadigmParallel and distributed processing [#][#], embedded [#][#]/RT [#], Low-level/bare metal [#][#][#].
Prog. languagesEmbedded-oriented C [#][#] and C++ [#], Python [#]
parallel-relatedCUDA/OpenCL 1.2 (Nvidia) [#], OpenCL 2.0 (AMD and Intel) and OpenMP [#]
Soft. build chainGNU gcc and gdb [#], LLVM clang and lldb, and QtCreator, CMake, GTest, git, valgrind, docker [#], Jenkins [#]
WebHTML5/CSS, JavaScript [#], SVG
CADKiCAD (PCB) [#], FreeCAD (3D parts) [#]
misc.Linux user since kernel 2.2 (Debian), write Medium articles [#]

Quick jump: [#] brings you to some relevant experiences where the mentionned skill was used.
timeline
Quick jump: πŸ… UTBM Univ. | πŸ…‘ Tsukuba Univ. | πŸ…’ πŸ…“ πŸ…” πŸ…• Robert Bosch | πŸ…– πŸ…— πŸ…˜ Harman Int. (Samsung) | πŸ…™ PoC | β‘  FPGA proj. | β‘‘ debugger proj. | β‘’ map proj. | β‘£ ML proj.

Proof of concept at Inatech srl

May β†’ Dec. 2020
(8 months)

Inastitch PoC (Heidwiller, France) a live video stitcher written in C++ and pure OpenGL. Designed to replace an OpenCV implementation with a high performance GPU-accelerated solution ready for low latency and live streaming over AVB network (with automotive applications in mind).
Inastitch also provides with a sample implementation for the time synchronization of frame capture with independent cameras over a network (i.e., via PTP shared network clock).
Main articles: OpenCV video stitching | OpenGL (faster) stitching | 3D stitching and virtual camera rotation
Related articles: making an automotive project | PTP clock sync | my street view | camera capture sync
main project | modified camera tool | 3D-printed parts | public docs

Personal projects 2019-2021

2021

Object detection and segmentation with ML (Heidwiller, France) TensorFlow object detection API (detection) and TensorFlow U-Net model (segmentation). 3D-printed arm with Raspberry Pi and camera with local inference. Automatic upload to cloud server.
main project | 3D-printed camera arm

2020

SlopeWorld (New Taipei, Taiwan) a map website focused on elevation and slopes. Required the design of a highly salable vector tile generation pipeline. Massive raw data (several 100s of GB) from OpenStreetMap and NASA are processed using GDAL and Mapbox open-source tools to create a fully static website, based on Mapbox Vector Tile (aka MVT) and GPU-accelerated rendering toolkit.
Demonstration of a project using open-source software only, bypassing any paid-service (e.g., Mapbox or OpenMapTiles).
Example https://veloak.fr/sw/?slope#12/47.6541/7.253

Professional experience at Harman International

Nov. 2015 β†’ Oct. 2019
(4 years)

Embedded system engineer at Harman (Garching, Germany) Embedded C++ development, debug. and runtime measurements in cooperation with BMW on navigation/entertainment system. Crash analysis on real prototype hardware. Additional C++ devel. for high performance access to NDS map database for Audi navigation system. Algorithmic research to speed-up route calculation leveraging road network pre-processing on GPU. Performance benchmark on backend service for route calculation. more details about each project below

icon

Nov. 2015 β†’ Mar. 2019
(3 years)

πŸ… BMW navigation system (Garching/Munich, Germany) Co-development with BMW Car IT of the navigation controller:
Modern C++ development with asynchronous event-based interfaces between Harman navigation core and BMW β€œgenivi” vehicle API and HMI.
Code reviews, unit tests, and extensive debugging in various evaluation environments from virtual machines and test racks, up to prototype vehicles on the street and on BMW premises.
Runtime analysis to match BMW key performance indicators, especially memory usage, start-up/suspend- to-RAM latency and over-the-air update.
Post-mortem analysis of navigation malfunction from test drives in all markets (i.e., EU, North America, Asia and rest of the world).
Build and release of engineering binaries, as well as resolution of build issues in the continuous integration system.
Created a tool to extract statecharts and generate diagrams from debug symbols. See Boost StateCharts Extractor at github.com/kanje/bosce (still used at BMW for other projects).
Made some CommonAPI hacking. See blog post.
Designed a must-have coffee mug, showing CommonAPI variadic templates. See here.
β†’ Used in different navigation systems for BMW and related brands


Aug. 2018 β†’ 2019
(6 months)

πŸ…‘ Audi navigation system (Garching, Germany) Designed, developed and delivered a high-performance access library to Harman NDS map database. Strongly parallel approach to take advantage of many-core machines.
Deep understanding of low-level road network format/encoding.
β†’ Accelerated extraction time from hours to minutes on large map databases
β†’ Used to pre-process Audi map data in Asian markets (e.g., China, Japan, Taiwan)


Mar. β†’ Oct. 2019
(8 months)

πŸ…’ Research team for route calculation (Garching, Germany) Imagined, developed and demonstrated an acceleration technique of A-to-B route calculation using well-placed landmarks. Created a high performance multi-GPU-accelerated graph processing approach to select landmark placement on very large road networks (e.g., full Europe).
Modular design for multiple targets: CUDA or OpenCL (GPU) and OpenMP (CPU).
β†’ Demonstrated a 10x reduction in road link evaluation and 2x faster query (on selected routes)
β†’ Used for lower latency route calculation when requests are processed in the cloud

Personal project 2015-2017

2016 β†’ 2018

The Legend of Ina (Munich, Germany) development of a tutorial/game around the GDB debugger to be used as training material in coredump analysis.
Created inapp, a distributed web-based tool to ease gcc errors and gdb backtraces analysis (running on a cluster).
ina.vjordan.info

Feb. β†’ Apr. 2015
(3 months)

FLRe project (part 2) (Ludwigsburg, Germany) Product/PCB design. Designed two main PCBs (class 6) for the STM32 F405 microcontroller in TQFP-100 or TQFP-144 package (ST Microelectronics) and the Spartan-6 FPGA in TQFP-144 package (Xilinx). Aluminium-extruded enclosure and flat cable wirings are part of the final result as a standalone product. picture of the PCB.
β†’ Created a dual board platform to leverage FPGA Live Reconfiguration possibilities.

Professional Experience at Robert Bosch GmbH

Feb. 2012 β†’ Feb. 2015
(3 years)

Embedded system engineer at Bosch (multiple locations around Stuttgart, Germany) Took part in most steps of the development of safety-relevant AUTOSAR-compliant embedded software: specifications, design, implementation, tests, OS integration, validation, quality documentation, and overall project build/continuous integration. Responsible for an AUTOSAR 4.0 bootloader mainstream project.
more details about each project below

icon


Aug. β†’ Feb. 2015
(6 months)

πŸ…+tool Electric inverter (Tamm, Germany) Consultant engineer in the Electric inverter design team. Designed a Jenkins-based continuous integration system.
Created an all-in-one email notification for nightly build, featuring relevant information only. (overcoming limitation of the email templating of Jenkins/IBM Jazz framework)
β†’ Used for the embedded software of all Volkswagen electric inverters made by Bosch.


Jan. β†’ Mar. 2014
(3 months)

πŸ…” Flash bootloader (Abstatt, Germany) Consultant engineer in the Flash bootloader team. Design and development of the initial pre-version of the core bootloader software component, tailor-made to Hyundai/Kia Motors specifications. The component is made for Bosch radar products, but was designed to be generic across the whole Hyundai/Kia product line.
β†’ Used in radar projects for adaptive cruise control and improved emergency breakings.


Nov. β†’ Dec. 2013
(2 months)

πŸ…“+ Flash bootloader (Abstatt, Germany) Extended my previous bootloader (see experience πŸ…“) to upgrade it into a mainstream bootloader for Autosar 4.0 and Freescale MPC56xx implementation. Designed an integration strategy to support variants in the same project. Added support for Freescale MPC5675K.
β†’ Used as reference implementation for future bootloaders.

Aug. β†’ Oct. 2013
(3 months)

(tool) Flash bootloader (Abstatt, Germany) Designed and developed a PC-based CAN diagnosis tool for bootloader automated tests. The C# software embeds an Autosar CanTp (C component) wrapped as a C++ DLL. Vector XL API provided the CAN network connectivity. Developed an extended knowledge of the "out-of-process" Microsoft COM interface server, DLL interaction and soft-realtime processing (to the millisecond) using the Microsoft Windows platform and Visual Studio.
β†’ Used as primary test tool for bootloaders at Bosch.


Mar. β†’ Jul. 2013
(5 months)

πŸ…“ Flash bootloader (Abstatt, Germany) Consultant engineer in the Flash bootloader team. Managed complete bootblock project from customer specifications to release tests, targeting the Freescale MPC5643L platform. The bootblock provides diagnostic features as well as ECU reprogrammation functionalities as described in the ISO norms: ISO14229 (UDS) and ISO15765 (ISO-TP). Gained an advanced knowledge of those norms.
β†’ Used in DC-to-DC Power Conversion Unit (PCU) projects for new car power networks.
Created an original start-up sequence involving ROM compression to overcome memory limitation.


Dec. β†’ Feb. 2013
(3 months)

πŸ…’ AUTOSAR OS (Leonberg, Germany) Consultant engineer in OS development team for the Renesas V850/Fx4 architecture. Specified (Doors), designed, implemented (mostly in assembler) and tested the Fx4 controller-specific start-up module. Also designed and implemented the corresponding Autosar-specified Mcu component responsible for the sleep/wake-up functionality. Those modules were integrated in car navigation systems.
β†’ Used in Jaguar-Land-Rover (JLR), Suzuki, Peugeot (PSA) and Chinese carmaker projects.


Jul. β†’ Nov. 2012
(5 months)

πŸ…‘ AUTOSAR OS (Leonberg, Germany) Consultant engineer in OS integration team. Build Autosar-compliant real-time OS with customized features depending on the projects, communication stack especially. Reached in-depth knowledge of CAN and LIN networking drivers on targets including ARM-based Zynq (Xilinx), and V850/Fx4 (Renesas) microcontrollers. Developed C debugging skills further, as well as low-level C programming down to assembly code (start-up code).
β†’ Used in car multimedia and navigation projects.


Feb. β†’ June 2012
(6 months)

πŸ… ABS/ESP (Abstatt, Germany) Consultant engineer in ABS/ESP team. Improved the validation process of two components involved in the Bosch ABS/ESP products: diagnostic and sensor monitoring. Extensive working experience with Bosch processes and internal tools for embedded design such as Ascet 6.

Personal projects 2013-2014

April β†’ May 2014
(2 months)

FLRe project (part 1) (Ludwigsburg, Germany) FPGA configuration using a microcontroller. Studied the low-level (bare metal) functionning of the Xilinx Spartan 6 LX9 FPGA (esp. bitstream encoding, and internal routing configuration). Written C code for the STM32 F103 microcontroller (ST Microelectronics).
the blog of the project.
Created a protocol for FPGA Live Reconfiguration. FLR protocol specifications

Sept. 2013 β†’ Feb. 2014
(6 months)

USB/CAN tester (Strasbourg, France, remotely) Proposed and supervised an internship at Technology&Strategy Engineering for creating a USB/CAN tester solution. Supported the trainee in the development of a CAN driver according to the Autosar 4 specifications, and supervised the design of a USB driver for a ST Cortex-M4-based development board: Olimex STM32-P407.
USB High-Speed using integrated PHY. 100% open-source devel. environment: GNU GCC, OpenOCD, Eclipse.
Created the corresponding hardware board as a personal project. (KiCAD)

Internships and training


November 2011
(3 weeks)

Alstom SA (Belfort, France) TCMS (Train Control and Monitoring System) training at Alstom Belfort. Acquired knowledge about Alstom embedded architecture, methodology and ControlBuild experience, and Rational ClearCase/ClearQuest.


April 2010 β†’ Sept. 2010
(6 months)

Kitagawa Data Engineering laboratory (Tsukuba, Japan) Performed research into XML query processing using GPGPU. Studied about low-level GPU features for general purpose computation, which involved extensive usage of the CUDA toolkit on both Windows 7 and GNU/Linux. Developed sharp debugging skills with this toolkit.
Excerpt of the abstract: The purpose of the research [..] is to evaluate the possibility of using General Purpose Graphic Processing Unit (GPGPU) to handle this task. GPGPU is a recent creation which gather research attention because of its large diffusion and cheap price. GPGPU is the result of the evolution of GPU coprocessors toward more flexibily and programable features in visual rendering. The latest features of these chips enable them to be used as stream processors.
Stream processing is a highly data parallalized task in which a series of operation is applied to each element of a data set (a stream).
Created a multiplatform datastructure for CUDA.


Sept. 2007 β†’ February 2008
(6 months)

Basel-Mulhouse airport (Saint-Louis, France/Swiss) intern on the IT staff. Managed the whole project life cycle: design, development, software release, documentations and users’ training. The software is now used by airline companies to update information screens at the airport terminal.
The project made use of PHP, Apache2 and Oracle on HP-UX.
Created a documentation system which allows to dynamically quote the actual source code in the devel. documentation.

Education

2011
(3 months)
Began Ph.D. in Computer Science at Kitagawa Data Engineering laboratory
(interrupted)
Research proposal: XML processing using GPGPU (improved query processing and data-mining) Proposal Presentation
at the University of Tsukuba, Japan (tsukuba.ac.jp)
2005 β†’ 2010
(5 years)
Master of engineering from the Computer Science department with emphasis on Software and knowledge engineering Research master in High efficiency algorithms and modelisation (parallel computing, geometric algorithms, multi agents systems)
Thesis outline: XML query processing using GPGPU
After a detailed study of NVidia GPGPU limitations, the CUDA implementation of TwigStack algorithm is introduced for XML query processing. Master thesis (v1.1) Master thesis (original)
2003 β†’ 2005
(2 years)
Engineering foundation courses Description of the attended courses, projects and results
at the University of Technology of Belfort-MontbΓ©liard, France (utbm.fr)
June 2003High School Diploma (BaccalaurΓ©at Scientifique) with specialization in engineering sciences, obtained with honors.

Languages

EnglishAdvanced level in written and oral English
Scored 955/990 for the TOEIC certification in January 2011.
GermanIntermediate level
Lived seven years in South Germany.
JapaneseCourses in both France and Japan at beginner level
Spent two six-month periods living in Japan.
ε­— Currently learning the Japanese Kanjis: 400/2000
FrenchNative speaker

Major academic projects

Fake website for booking airline tickets
Specification in both UML and Merise models. Accomplished by using PL/SQL coding and Oracle database (setup using a personal computer).
Best database project of the semester

Simple processor in FPGA
Simple 8-bit processor designed in VHDL and simulated using Altera FPGA hardware. Simple calculator implemented with the customized assembly code of this processor and the 7-segment displays of the development board.

Pong game for GameBoy Advance: Compilation and setup of the GCC cross compilation toolchain for ARM on GNU/Linux. Development in low-level C and experimentation with real GameBoy Advance (ARM7TDMI) using compact flash cartridge for GameBoy.

Example of university report
Numerical analysis (in French): Markov chain | Matrix decomposition | Matrix product | Eigenvalues and eigenvectors

Personal activities

3D printing: owner of an open-source RepRap-style 3D printer with dual extrusion: Dagoma DiscoUltimate. Parts design with FreeCAD.

Knowledge in cartography: designed a car-embedded "moving map" software (using DirectFB C library). Submitted maps to openstreetmap.org, an open worldwide mapping project.

Active penpal: mail exchange about culture and daily life among many parts of the world (communication in English mostly) through interpals.net

Write Medium articles: about 1K views per month, see my Medium page.

Mario Paint

around 1995 (for years)

Childhood, France