Objective
Computer Programmer / Software Engineer / Developer. Marseille, France.
Specialization: C/C++ & Python
Experience: more than 25 years of software development
Since 2013, I have been working as a software developer based in Marseille, France (CET), and hold French citizenship.
Since 2023, I have operated as an independent consultant through my registered French EURL (single-member LLC), providing software development and consulting
services to clients across various industries:
https://annuaire-entreprises.data.gouv.fr/entreprise/dementyev-eurl-949580476
I have extensive experience collaborating with international clients and teams across multiple time zones and offer flexible scheduling to ensure seamless global collaboration.
Proficient Linux user since 2000, with a specialization in Gentoo since 2004.
Personal Details / Contact information
Full name: Maxim Petrovich Dementyev (also spelled Dementiev)
Phone: +33 6 67 77 40 61 (mobile)
E-mail: dememax@hotmail.com
Telegram: @dememax Skype: mdementiev
Education: 1992 - 1997 - Moscow State University of Civil Engineering (https://mgsu.ru/), Automated Control Systems Department, Systems Engineering degree
Languages: Russian (native), English, French.
Profiles:
| GitHub dememax | FreeDesktop GitLab dememax |
SourceForge maximdementiev
Summary of Qualifications
Programming languages: C++ (up to C++23), C, Python, Bash, Java, SQL, JavaScript
Operating systems: Linux (Gentoo, Debian, OpenWrt, embedded Linux built with Yocto and Buildroot), Zephyr RTOS, Android (AOSP)
Embedded platforms: NVIDIA Jetson Orin, ESP32 with MCUboot, TI DM365, Broadcom BMIPS5000 set-top boxes, U-Boot
Multimedia: GStreamer and Cerbero, H.265 encoding with the NVIDIA API, hardware JPEG encoding on Jetson, OpenGL ES and EGL, V4L2, RTMP live streaming, LIVE555
Networking and security: MQTT (Mosquitto, paho), WebSocket, HTTP/HTTPS, mutual TLS with X.509 certificates (mbedTLS), POSIX sockets, libpcap
Build, packaging and CI: GNU Make, CMake, Meson, GNU Autotools, Yocto, Buildroot, west, Cerbero, Portage, dpkg/apt, RPM, Docker, GitHub Actions, GitLab
Quality and debugging: GDB, Valgrind, sanitizers (ASan, UBSan), clang-tidy, load and stress testing, pytest, Playwright, CppUnit, Ruff, mypy
Version control: Git (GitHub, GitLab, Gerrit), Mercurial, Subversion
Documentation: Sphinx and reStructuredText, Doxygen
Databases: SQLite, PostgreSQL, MySQL
Libraries and APIs: STL, POSIX (threads, sockets), SWIG, FUSE, ZooKeeper
Methods: object-oriented design, design patterns (GoF), multithreaded and event-driven programming, non-blocking synchronization, distributed client/server systems, test-driven development, continuous integration, release engineering, AI-assisted development (Claude Code, Codex)
Standards: ISO C++, POSIX, IETF RFCs (network protocols and formats), W3C (HTML, CSS, XML), 802.11 and Radiotap, ANSI SQL, UML
Electronic exchanges: order books, orders, quotes, securities, derivatives; exchange APIs (FIX, OM-Click, Eurex, SWX, Fidessa EMMA)
Earlier: Basic, Pascal, FreeBSD, SunOS/Solaris, MS Windows (Win32 API, WTL), GTK, CGI/FastCGI, CVS, Purify, compilers and IDEs from Microsoft, Sun, IBM and Borland, OpenOffice and MS Office (including MS Project), the Java Language Specification
Recent Experience
May 2025 - October 2026
Company: NexVision (https://nexvision.fr/), Marseille, France
Position title: Senior Software Engineer — Independent Consultant (Dementyev EURL), Full-time, On-site
Projects, products: Proreus — embedded real-time detection system (visible and thermal-infrared cameras, NVIDIA Jetson Orin modules) that helps a vessel's crew avoid collisions with large marine mammals and other obstacles. Related product: eMAS, the NexVision onboard cetacean-detection system.
Role: Principal developer and release maintainer of the system's operator dashboard (Proreus GUI), from prototype to production. Owned the GUI architecture, C++ back end, browser dashboard, sensor-stack simulator, automated testing, technical documentation and release engineering.
Key Responsibilities & Achievements:
- Developed the C++23 service for a Jetson Orin-based Yocto Linux platform, shipped as RPM in 57 tagged releases; implemented Jetson hardware JPEG and cross-platform encoding with GStreamer and fixed defects in the in-house C++ HTTP/WebSocket library.
- Delivered a real-time operator console that turns a 20 Hz fused sensor stream over MQTT into an actionable tactical picture (live camera views, detection and track overlays, a metric radar, crop replay, immediate degraded-sensor feedback), built on quaternion attitude and camera reprojection with lens-distortion correction.
- Carried out the migration from a C++ WebSocket relay to direct MQTT-over-WebSocket delivery in the browser, removing the service's relay layer, ring buffer and custom framing protocol; replaced the C++ test simulator with a deterministic, seeded Python simulator of the whole perception stack, and grew the test base to 1,616 tests per release (cross-browser, stress, sanitizers, Valgrind).
- During a field latency investigation, built the console's load-test suites from scratch in one week and bounded its work on stale frames, cutting the heaviest stress scenario's settling time from 402 s to 22 s; then added stale-data dropping and an O(1) track index.
- Adapted the repository for AI-agent development (Claude Code, Codex): an explicit agent contract (strict TDD with separate RED/GREEN commits, checks against vacuous tests), coding standards, architecture decision records, deterministic test hooks, and two open-source linters I authored (check_rst, check_formatting).
- Also worked on an extended-reality pilot helmet display (HMD with head tracking) on NVIDIA Orin: extended and debugged a V4L2 emulation library (virtual video devices through LD_PRELOAD) feeding GStreamer, and rendered the overlay's calibration markers directly in RGBA.
Tools, languages and SDKs: C++23, Python (pytest, paho-mqtt, Playwright), GCC, Meson, GStreamer, Yocto, NVIDIA Jetson Orin, MQTT (Mosquitto), JavaScript (VanJS, HTML5 Canvas), ASan/UBSan/Valgrind, clang-tidy, ruff, mypy, Sphinx/reStructuredText, Git, GitLab, Claude Code and Codex
April 2026 - September 2026
Company: Dementyev EURL, Marseille, France — own R&D project
Position title: Embedded Software Engineer, personal project (sole developer)
Projects, products: Firmware of an Ethernet-connected network-monitoring device: a bare-metal Zephyr RTOS application in C++ for the ESP32 microcontroller (ESP32-ETH02 board, LAN8720A Ethernet PHY), working with a REST backend.
Role: Built the whole firmware platform alone and from scratch, from board bring-up to verified over-the-air updates. Embedded IoT on microcontrollers was not my historical specialty; the project showed I can master Zephyr and the hardware beneath it quickly.
Key Responsibilities & Achievements:
- Brought up Ethernet on the ESP32 under Zephyr and diagnosed why LAN8720A auto-negotiation failed with home routers: a 4 s timeout against up to 30 s of STP, and no restart after it; worked around it by forcing 100BASE-TX full duplex at boot, and raised a crash on cable re-plug with the Zephyr project on GitHub.
- Implemented device provisioning (unprovisioned and provisioned modes) and authenticated communication with the backend over mutual TLS (mbedTLS), with the device's client certificate and private key kept in ZMS flash storage, SNTP time, and an HTTPS client hardened on real hardware with retries and exponential back-off.
-
Designed and delivered over-the-air updates with MCUboot in three phases: MCUboot in place of Zephyr's ESP32 simple boot, then a download, storage and
verification engine, then the swap, confirm and report cycle; after a fix to the
BOOT_SWAP_TYPE_REVERTsemantics, which had made an update roll back onto itself, the full two-boot cycle passed end to end on the real board. - Planned flash and memory within the ESP32's constraints: partition table with the MCUboot slots and ZMS storage, a flash cost model, heap and TLS memory measured per boot mode, thread stacks and static buffers.
-
Diagnosed a Zephyr JSON-parser bug (any
nullvalue makes the whole object fail) triggered by a backend change, and patched the local Zephyr tree with a one-line fix and a unit test that demonstrates the failure. - Built a three-level test pyramid: 102 unit tests on Zephyr's native simulator (native_sim), integration tests against a mock backend with its own test PKI, and smoke, update and swap tests on the real board over UART (pytest, pyserial); documented the architecture, memory, certificates, device API, update design and release process in Sphinx.
Tools, languages and SDKs: C++, Zephyr RTOS, west, CMake, ESP32, MCUboot, ZMS, mbedTLS, native_sim, Python (pytest, pyserial), Sphinx/reStructuredText, Git, Claude Code
March 2023 - September 2024
Company: Fluendo (https://www.fluendo.com/), Barcelona, Spain
Position title: Lead Software Engineer — Independent Consultant (Dementyev EURL), Full-time, Remote
Projects, products: Fluendo Codec Pack, GStreamer, Cerbero
Role: Development and support for GStreamer components and Cerbero in a distributed team across Europe in a fully remote environment using GitHub, Slack, Jira, Google services, etc.
Key Responsibilities & Achievements:
- Developed, performed code reviews, refactored, supported, tested, and delivered Fluendo GStreamer plugins.
- Regularly contributed to open-source projects, including GStreamer and Cerbero.
- Facilitated effective communication and knowledge transfer by actively engaging in discussions with developers, providing operational support, and creating comprehensive documentation for developed components.
- Implemented a multi-level verbosity logging system that delivers detailed, step-by-step insights, significantly enhancing troubleshooting and resolution of registration and initialization failures in complex environments.
- Contributed to the company's codec package by developing and documenting an H.265 encoder component for the NVIDIA API, which became the reference design for the new codec development process.
- I participated in the transition from legacy CI (Jenkins) to an integrated GitHub Actions workflow.
Tools, languages and SDKs: C/C++, Python, GStreamer, Cerbero, Meson, Docker, GitHub Actions, Slack, Jira
March 2020 - January 2023
Company: Kalyzée (https://www.kalyzee.com/), Marseille, France
Position title: Embedded software developer (Full-time, Hybrid)
Projects, products: Kast Revolt - The camera with VOD and Live functionality and remote control
Role: Development and support for camera software.
Key Responsibilities & Achievements:
- Development, testing and delivery of camera software updates.
- Improved camera reliability by addressing critical memory leaks and optimizing firmware, resulting in continuous, stable operation, eliminating the previous requirement for reboots every 2-3 days.
- Implemented a clear versioning scheme for releases, embedding comprehensive version information within the camera's metadata for improved traceability.
- Remotely analyzed and upgraded client camera firmware via VPN.
- Optimized OpenGL code to improve FPS and recording/streaming quality for HD local recordings and RTMP live streams to platforms like YouTube.
- Developed a reliable reproduction method to identify critical, non-obvious hardware defects, preventing potential client-side failures and providing conclusive evidence to the manufacturer.
Tools, languages and SDKs: C/C++, Java, Python, AOSP & Android NDK, GStreamer, Cerbero, Docker, EGL / OpenGL ES
February 2018 - March 2020
Company: SuperSonic Imagine (https://www.supersonicimagine.fr/), Aix-en-Provence, France
Position title: Software Developer (Full-time, Hybrid)
Projects, products: Software update system based on Debian. Components of medical ultrasound software.
Role: Developer of components for medical ultrasound software.
Key Responsibilities & Achievements:
- Maintenance of software update system.
- Designing and implementing components for medical ultrasound software.
- Enhanced the user experience for system updates by introducing a configurable notification layer that integrates with native desktop notifications.
- Improved the system’s startup and initialization process by a factor of two by consolidating complex inter-process communications — previously involving a large C++ application, Python scripts, shell scripts, and other processes — into a self-contained C++ procedure within the main application. This optimization eliminated code duplication through a structured class hierarchy, enforced robust error handling via return status checks with logging, and involved close collaboration with hardware engineers to validate hardware initialization, resulting in a smaller footprint, fewer context switches, and significant performance gains.
- Created a Python wrapper using SWIG tool to automate operations with the ultrasound system.
- Automated generation of comprehensive documentation for the internal state machine using Sphinx tool, including graphs, categories, cross-references, and summaries.
Tools, languages and SDKs: C/C++, Python, SWIG, PHP, Linux, apt/dpkg, GNU Toolhcain (GCC, Make, Autotools, GDB), Gitlab, Jira
September 2014 - January 2018
Company: NexVision (https://nexvision.fr/), Marseille, France
Position title: Software Developer (Full-time, On-site)
Projects, products: Cabin video monitoring system for Airbus A380.
Role: Developer of components for the embedded camera.
Responsibilities: Maintenance of linux driver set for TI DM365 Front End. Designing and implementing GStreamer components.
Tools, languages and SDKs: C/C++, Linux, GStreamer, LIVE555, Buildroot, GNU Toolhcain (GCC, Make, Autotools, GDB), U-Boot, Redmine, Git, Gerrit
August 2013 - September 2014
Company: Wyplay (https://www.wyplay.com/), Allauch, France
Position title: Software Developer (Full-time, On-site)
Projects, products: IPTV for Belgacom TV STB. Middleware for IPTV under Broadcom BMIPS5000 architecture.
Role: Developer of middleware components for IPTV.
Responsibilities: Implementing new functionality. Fixing bugs. Testing.
Tools, languages and SDKs: C/C++, Python, Linux, Gentoo Portage, GNU Toolhcain (GCC, Make, Autotools, GDB), Redmine, CppUnit, Mercurial
Prior Experience
From 1988 to 2013, I developed extensive experience in software development across various industries and technologies. My journey began with early programming in school, progressing through roles at companies such as Norma-Nefto, Atlant-Inform, and R-Style Software Lab. I further honed my skills at organizations like Inforser, RTComm.RU, and E.Soft, working on diverse projects including content management systems, database applications, and web development.
In the 2000s, I took on more senior roles, notably at Deutsche Bank and Renaissance Capital, where I developed middleware for electronic exchanges and connectivity components in an international environment with teams around the world. My last position before 2014 was at Ashmanov&Partners, where I worked as a Senior Developer on web filtering and content classification projects.
Throughout this period, I consistently expanded my expertise in C/C++, Python, Java, and various database technologies, while adapting to evolving development environments and tools across Windows, Linux, and Unix systems.
June 2010 - July 2013
Company: Ashmanov&Partners (https://www.ashmanov.com/), Moscow, Russia
Position title: Senior Developer.
Projects, products: Web filter. Content classification components. Keywords. URL and IP categorization. Schedule components. Integration into rule-based language. Converting HTML and Shockwave Flash to plain-text.
Role: Developer of components for the Web filter.
Responsibilities: Designing and implementing components and wrappers, writing code and unit-tests, documentation. Profiling and testing.
Tools, languages and SDKs: C/C++, Python, Linux, FreeBSD, GNU Toolhcain (GCC, Make, Autotools, GDB), Trac, CppUnit, SVN, CVS, "Semantic mirror"
August 2008 - May 2010
Company: Mail.Ru (http://mail.ru/), Moscow, Russia
Position title: Software Developer.
Projects, products: Distributed File System (meta-server, naming servers, client library, consolidation and snapshot mechanisms), Mail Storage, API to mail storage (client and server network libraries).
Role: Developer of components for the distributed storage, supporter of mail storage and its API.
Responsibilities: Concept development. Implementing code and unit-tests. Testing.
Tools, languages and SDKs: C/C++, Linux, FreeBSD, GNU Toolhcain (GCC, Make, Autotools, GDB), CMake, CppUnit, FUSE, FastCGI, Zookeeper, SVN, CVS
April 2008 - August 2008
Company: Renaissance Capital (http://www.rencap.com/), Moscow, Russia
Position title: Senior Developer.
Projects, products: FIX and Market Connectivity (MICEX, RTS, LSE, FIX, Reuters, UL Bridge).
Role: Responsible for development of connectivity components (markets, clients, feeds) with the usage of different protocols.
Responsibilities: Compose and update the project documentation. Planning, negotiation and keeping record of the project. Elaboration and presentation of proposals. Participate in working meetings.
Tools, languages and SDKs: MS Visual Studio, CMake, C/C++, Java, Tibco RV, UL Bridge
December 2005 - April 2008
Company: Deutsche Bank (http://www.db.com/), Moscow, Russia
Position title: Investment Banking IT-specialist, Associate.
Projects, products: Middleware software which abstracts access to electronic exchanges (SWX, Eurex, SIBE, OM-Click, FIX) and feeds (Reuters), Trade feeds
Role: Developer of existing code base and components, support, developer of modules to new exchanges
Responsibilities: Implementing code, bug fixing, designing new components, support, consulting
Tools, languages and SDKs: C/C++, Java, GCC, SUN Studio, Linux, Solaris, CVS, SourceForge, CppUnit, Doxygen, FIX, XML, ORC
June 2003 - November 2005
Company: Intersoft Lab (http://www.iso.ru/), Moscow, Russia, Contour Components Ltd (http://www.contourcomponents.com/), Moscow, Russia
Position title: Programmer.
Projects, products: VCL components, Python Forms Designer, XML Dataset, OLAP Cube (VCL, ActiveX)
Role: Developer of existing code base and components, support
Responsibilities: Implementing code, bug fixing, designing new components, python wrappers of C/C++ code by SWIG
Tools, languages and SDKs: Borland C/C++ compiler, VCL, Python, Bison, Expat, SWIG, PVCS, CppUnit, Scintilla
January 2001 - May 2003
Company: E.Soft (http://www.e-soft.ru/), Moscow, Russia
Position title: System Programmer, Consultant, Project Leader.
Projects, products: Content management system, Inforser price-list (2nd version), Postman, Resolver, etc.
Role: Consultant on non-standard problems decisions, designer and developer of different kinds of projects
Responsibilities: Learning and testing of new technologies, consulting (languages, tools, technologies), finding decisions on non-standard problems, writing requirements specifications, composing project plans, designing user interfaces, designing database schemes, implementing code in JavaScript, Java, C/C++ and SQL languages
Tools, languages and SDKs: C/C++ compilers (GCC, MSVC), Java 1.1-1.2, JavaScript, HTML, DBMS (MySQL, MS SQL Server), Unix environment (Linux, FreeBSD, SunOS), shell (bash), Internet protocols (HTTP, FTP, SMTP, ...), MS Win32 API, WTL, Posix (threads, sockets, ...)
April 2000 - January 2001
Company: RTComm.RU (http://www.rtcomm.ru/), Moscow, Russia
Position title: Senior Programmer, Project Leader
Projects, products: Spider, Service Monitor, Preliminary billing, RTF generator, SMS sender
Role: Designer and Developer, Consulting, Support
Responsibilities: Designing and implementing projects, consulting on system programming, support (bug fixing, features adding)
Tools, languages and SDKs: C/C++, Java, Unix shell, DBMS, Web-protocols, Windows, Linux, SunOS
January 2000 - April 2000
Company: DGroup (http://www.dgroup.ru/), Moscow, Russia
Position title: Java Programmer, Consultant
Projects: WWW site Krasota-on-line (http://podbor.krasota.ru/)
Role: designing and implementing java applets, consulting
Responsibilities: design applets and HTML-pages, JavaScript-Applets programming, applets and data structures implementation, consulting
Tools, languages and SDKs: JDK 1.1, Web Browsers, Apache, MySQL, HTML, JavaScript
October 1999 - January 2000
Company: Ulter-West (http://www.uw.ru/), Moscow, Russia
Position title: Programmer
Projects: Ulter-Shop, WWW-site, Postman
Role: developing internet shop Ulter-Shop, support WWW site, consulting
Responsibilities: compose pages in HTML, implement Java GUI components, implement server-side components, consulting
Tools, languages and SDKs: JDK 1.1, JDK 1.2, Inprise JBuilder 3.0, JavaMail 1.1.2 (MIME), XML, DOM, JavaServlets, Apache, PostgreSQL
September 1999 - March 2000
Company: Inforser (http://www.inforser.ru/), Moscow, Russia
Position title: Developer, Consultant
Projects: Inforser's price-list
Role: designing and developing price-list keeping and entering system, consulting
Responsibilities: designing forms and reports, designing database scheme, implementing code, supporting, interoperability (with MySQL and FreeBSD)
Tools, languages and SDKs: MS Access 97, MS Visual Basic, Office components and tools, MySQL, MySQL ODBC driver, telnet
August 1997 - May 1999
Company: R-Style Software Lab (http://www.softlab.ru/), Moscow, Russia
Position title: Programmer, then Senior Programmer, Project Leader
Projects: Document storage, Classifiers.
Role: leading and developing client-server Win32 database applications, using Microsoft RPC and COM, for accounts and office clerks
Responsibilities: design application concepts, designing application database scheme, designing RPC server interfaces, designing client GUI, creating technical documentation and specifications, creating and developing server-side components and libraries
Tools, languages and SDKs: Borland C++ v 5.01, Microsoft RPC, COM, OLE, Win32 API, Visual RSL, RDB Btrieve v.6.15 - Pervasive SQL 7.0, ER-Win 2.5-2.6, MS Office 97 (including Project 98), Visual Source Safe 4/5/6.0, PVCS Tracker 4.0-5.0
May 1996 - May 1997
Company: Atlant-Inform (http://www.atlant-inform.ru/), Moscow, Russia
Position title: Programmer
Projects: IDE Ace, then IDE Ace under Windows
Role: developing IDE Ace
Responsibilities: implementing code, fixing and testing
Tools, languages and SDKs: Borland Turbo Pascal for MS DOS, Delphi, SQL, IDE Ace, Watcom C++, Microsoft Win32 API
1993 - April 1996
Organization: Norma-Nefto, Moscow, Russia
Position title: Programmer
Role: Designing and developing desktop databases
Responsibilities: implementing code, support databases
Tools, languages and SDKs: Assembler x86, BIOS and DOS API, MS MASM 5.0, FoxPro 2.0-2.6 for DOS, MS FoxPro 3.0 for Windows
1988 - 1992
Organization: School, Moscow, Russia
Tools, languages and SDKs: Assembler PDP-11, Basic, Pascal
Hobbies and Interests
Family, Foreign Languages (I speak Russian, English and French), Cultures, Films, Ballroom dance, Humour (Mikhail Zhvanetsky, Not Only... But Also, Les Inconnus, ...), My LiveJournal Blog, Wikipedia (reading, correcting) and SourceForge.