Avatar of Petrissans Jon (约翰).
Petrissans Jon (约翰)
Senior C++ developer
ProfileResume
Posts
1Connection
Print
Avatar of the user.

Petrissans Jon (约翰)

Senior C++ developer
Felt in love with the Chinese culture, I would like to settle down in Taiwan
Logo of the organization.
SMILE Embedded & IOT
Open Source School
Paris, France
France

Professional Background

  • Current status
    Employed
  • Profession
    C,C++ Developer
    Software Engineer
  • Fields
    Software
    IT / Digital
  • Work experience
    More than 15 years (6-10 years relevant)
  • Management
    I've had experience in managing 1-5 people
  • Skills
    C++
    Python
    JSON Schema
    JSON
    WebSocket
    Dbus
    Protobuf
    OCPP2
    IEC 61851-1
    Cairo
    GDI
    Fontconfig
    Cmake
    Qt
    GCC
    MSVC
    Jenkins CI
    Git
    UML
    Merise
    Agile
    SCRUM
    Camban
  • Languages
    English
    Fluent
    Chinese
    Beginner
    French
    Native or Bilingual
  • Highest level of education
    Bachelor

Job search preferences

  • Desired job type
    Full-time
    Not interested in working remotely
  • Desired positions
    C++ developer
  • Desired work locations
    Taiwan
  • Freelance
    Non-freelancer

Work Experience

Logo of the organization.

Embedded application C++ developer, Tech lead

Jun 2021 - Present
Paris, France
# Context Consultant for SMILE Embedded & IOT, which is an consulting company reputed for its know-how in embedded and open source software. Developed products: • Embedded application layer of connected speakers, for Devialet, which designs and markets audio systems. (During 1 year) • Embedded application layer of a new generation of electric vehicle charge station, for Total Charging Services, which designs, markets and installs an infrastructure for electric vehicle charging. (During 1 year) # Technical leader of a junior team ◦ Implementation of C++ conventions and best practices. ◦ Ensure code consistency, documentation and testing. ◦ Work process implementation: code reviews, commit rules, management of branches and versions, incremental development, beta and RC releases. ◦ Organization of the repositories, the source files and the C++ components. ◦ Set up and configuration of helping tools: pre-commit, clang-format, clang-tidy, cmake-format. # Design ◦ Detailed analysis of the OCPP2 and IEC 61851-1 protocols for implementation. ◦ Software architecture definition, following both Layered and Entity-control-boundary patterns ◦ Detailed UML design of application and messaging layers according to the OCPP2 protocol, behavior and communication between charge stations and the supervision server. ◦ Detailed UML design of drivers monitoring layer of a charge station according to the IEC 61851-1 protocol, behavior and communication between charge stations and the electric car. ◦ Selection of third-party libraries and tools. # Application development ◦ Speaker : audio equalizer on multiple frequency bands. ◦ Speaker : audio balance of a stereo pair of devices. ◦ Speaker : Networked Standby (energy saving while keeping network connectivity). Distinction between standby and awake behavioral states, events that triggers state changes, control of wifi, Ethernet and audio components. ◦ Charge station : the IEC 61851-1 protocol layer, behavioral and communication with the electric car. ◦ Charge station : the OCPP2 protocol layers, business data model and communication with the supervision server. # Connectivity development ◦ Runtime validation of json structures on REST requests. Json validation schema writing. ◦ Subscription system to notifications about a REST API. Websocket server, multiple client management, independent subscription to each REST API endpoint. ◦ Protobuf networkink API modification and extension. ◦ OCPP2 client messaging module: construction and validation of messages, dispatch and reception management. # Third party Integration Integration of many libraries as third party: ◦ Classic integration in a C++ project with CMake’s FetchContent and ExternalProject_Add. ◦ On difficulties, third party’s build system improvement to allow integration. ◦ Integration to Buildroot or Yocto build systems as package. # Tests ◦ Unit test writing with googletest. ◦ Integration test writing on a Pytest (python) framework. ◦ Development of executables for manual hardware testing. # Bug fix ◦ Bug investigation and fixing in beta / stabilization stage. # Technical environment ◦ ARM architecture : - Qualcomm QCS 405, 4x 64-bit Arm Cortex-A53, - Broadcom BCM 58305B3, ARM Cortex-A9. - STM32MP15, Arm Cortex-A7 600Mhz, Cortex-M4, GPU, DRAM 512Mb. ◦ Connectivity : Ethernet, wifi, bluetooth. ◦ Platform : Linux Buildroot et Linux Yocto (glibc, glibstdc++, Busybox, systemd, dbus, wpa-suplicant, avahi, bluez, netlink). ◦ Application third parties  : protobuf, googletest, gstreamer, kvasir, rapidjson, magic-enum, WebSocket++, Qt core (Main loop, QSignals, QSettings, QStateMachine, QNetworkInterface, QSocket, QPlugin, Qdbus). ◦ C++ : C++17, C++23, Event oriented. ◦ Work organization : Camban, ClickUp, incremental development
Logo of the organization.

Senior C++ Software Developer and DevOps

Perforce Software
Full-time
Jan 2019 - May 2021
2 yrs 5 mos
Tallinn, Estonia
# Context Perforce Software is a software publisher. The company offers a range of several dozen of tools and applications that help on software development : DevOps/CI/CD tools, frameworks, libraries... Developed products: ◦ Views : C++ library of graphic components : widgets, maps, graphs, charts, diagrams, personalized graphic objects. ◦ Server : Over network distribution of the model layer of a MVC application. Basically, a server transmits in real time the model description to the clients. The clients can request modifications of the model. # Development ◦ Bug fixes about : graphical rendering , encoding, font management, Bitmap data conversion, memory leaks, excessive CPU consumption. ◦ Features : CSS styling, new image format and new string encoding supports, font management improvement ◦ Refactoring : switch to C++11, build system switch to Cmake. # DevOps ◦ Configuration of Jenkins, writing, build machine installation / integration in data centers. ◦ Set up of Klocwork (static analysis). Installation and configuration of server and client machines. Integration to Jenkins : merge requests analysis and nightly overall analysis. ◦ CMake build set up, with install/export (for findPackage), associated with the installer VMware InstallBuilder. ◦ GoogleTest Integration and scripting automatization of test creation. # Technical environment ◦ Graphic rendering : X11, Cairo, GDI, GDI+, Fontconfig, XFT. ◦ Platforms : Windows, Redhat, Solaris, Centos, Sles, Ubuntu, AIX ◦ DevOps : Jenkins (pipeline), GitLab merge request analysis by compilation + GoogleTest + klocwork, on all the platforms. ◦ C++  : C++98 and C++11 ◦ Work organization : SCRUM, JIRA, 100 % anglophone. pipeline scripts

A year in China

autodidact
Part-time
Dec 2017 - Dec 2018
1 yr 1 mo
Beijing, China
# Context Self-training on several development-related topics, while my wife works in beijing. # Self-training ◦ C++17, gcc compiler, Cmake, cross compilation, Gnu/Linux, Git. ◦ Qt : Qt5LinguistTools, QTranslator, QLocale and qm files. ◦ TCP/IP, networking, web server (lamp), Ruby on Rails. # Personal projects ◦ Development of a module about language management in a multilingual Qt UI. qm file analysis, application's active language, system language, language switch, user settings, UI translation at run time. See locale-language-manager-Qt hosted in my giHub : jonpetri. ◦ LAMP web server setup. # Technical environment ◦ Platform : Debian with GCC ◦ Thrird party and tools : Qt5LinguistTools, QTranslator, QLocale and qm files, Doxygen ◦ C++  : C++17
Logo of the organization.

Software Developer

Jan 2016 - Dec 2017
2 yrs 0 mos
Toulouse, France
# Context Development of internal applications, within the electrical harness design office. Developed products: ◦ Okabe: Add-on for Catia 5V (Catia 5V is a 3D engineering software) for electrical harness design. ◦ Electrical component data management system. # Development ◦ Design: Requirements study, UML use case, class diagram, database design with the Merise method. ◦ Core C++ application development with Qt UI and a MySQL connector. ◦ VBA modules development for Catia V5, with a COM interface (Microsoft’s Component Object Model).
Logo of the organization.

Electrical DC harness design technician

NEXEYA
Full-time
Jan 2008 - Jan 2016
8 yrs 1 mo
Toulouse, France
◦ Software developing for electrical design. ◦ Up to 37 000 interconnection point harnesses design. Team leader for Skynet 5D. In charge of electrical dimensioning and 3D routing for Express AM8, Argos4, SWOT. ◦ Work process composition and set-up, for harness 3D routing and kinematic harness design. Associated documentation writing.

Mechanics design technician

BTS Industries
Full-time
Jan 2006 - Jan 2008
2 yrs 1 mo
Toulouse, France
- NAOMI 125 telescope’s assembly tools design, for EADS Astrium - SPIRALE microsatellite’s thermal protection (MLI) design for Thales.

Education

Other
Linux kernel and driver development
2023 - 2023
Activities and societies
3 day training
Other
Linux architecture with systemd and D-Bus
2022 - 2022
Activities and societies
3 day training
Other
Elementary conversational Chinese
2018 - 2018
Activities and societies
4 month courses
Logo of the organization.
High School Diploma
Computer Software Development
2015 - 2016
Bachelor’s Degree
Mechanical Design Engineering
2002 - 2005