Hugo R.

Embedded Software Developer

665 dollar
Freelancer
8 years
Marseille, FRANCE

My experience

More

Self EmployedJanuary 2020 - Present

As an independent, I can work both on-site with your teams for more collaboration or remotely for projects requiring stronger focus. In my experience, what works best is a subtle combination of both styles. I deeply value mutually beneficial relationships. Want to read what those benefits are?

By working together, you can benefit from:
- solid experience in Unix, C/C++, Python and Lua to deliver robust and maintainable software;
- know-how in ARM and AVR microcontrollers, mainly Cortex M4 and ATmega32 families;
- good experience with network protocols like TCP, UDP, HTTP, MQTT, mDNS and BLE;
- profound knowledge of OO design principles, State Machines and TDD;
- partisan of Continuous Delivery (CI/CD) with Test Benches from the first place;
- proficiency in building and debugging complex systems in a collaborative environment;
- strong UX and design sensibilities with eagle-eye on details;
- sharp focus, positive attitude, empathy and a desire to continually learn.

On the other hand, I can benefit from:
- engineering experience and technical skills from your teams;
- discovery of new working styles, habits and processes;
- shared quality time with co-workers and social interactions.
More

SevenhugsMarch 2018 - August 2019

Evolving as a technical leader and software architect of the core applicative layer, within a team of 6 people, was a tremendous experience to live. The responsibilities to endorse were very challenging, both from technical and human points of view. Want to discover what these challenges were?

In terms of project management, as a technical leader, my missions were to:
- manage the project features following Agile Methodology with Jira and Gitlab;
- schedule work and switch focus between product features and software improvements;
- iterate with the product team about upcoming features and translate them to work packages;
- make sure the team was learning collectively but remained committed to the project's aims;
- push for peer to peer coding and reviewing sessions for faster and more robust development;
- delegate and trust coworkers to stay focused and what mattered the most—to make our engineering team a little better every day!

In term of engineering, as a software architect, my missions were to:
- evaluate the technical debt to be tackled aside from developing user features;
- evaluate the feasibility and costs of product features with the product team;
- evaluate the importance and urgency of developing internal tools and maintaining quality;
- design and maintain middleware and applicative components along with tools;
- design and maintain communication protocols with Mobile Apps & Backend Services;
- pay strong attention to code quality with coding standards and code reviews;
- engage the team on software quality with Continuous Delivery (CI/CD) in mind.

As I like to take part in the company's bigger picture, I engaged in the evolution of development processes, internal structure, and recruitment of new engineers as the company was growing to cover feature needs.
More

SevenhugsMarch 2017 - February 2018

Being a software engineer at Sevenhugs brought me a lot. I grew from junior to intermediate quite quickly given the number of challenges to overcome in a very short time. We had to go fast and high to deliver a minimum viable product for our first beloved customers that backed us on crowdfunding platforms. Want to know what Sevenhugs is building?

My main responsibilities were to:
- collaborate in the development of the applicative and middleware layers, from a prototype to a minimum viable product;
- focus, on one hand, on the SDK and its simulator for both internal and community usages;
- shape, on the other end, the core layer building blocks that will later compose features;
- proactively push for engineering tools and automated tests for faster development cycles, a more robust code base and easier architectural pivots.

In term of engineering, on one hand, the Smart Remote embeds an STM32 microcontroller with a custom made object-oriented OS; on the other hand, the Desktop Simulator (Linux & macOS) shares the same applicative layer with an adapted middleware to cope with Unix specificities. The scopes I was involved in are:
- middleware components developed in C and C++ as abstraction layers for higher-level;
- applicative components developed in Lua as both core and user-facing features;
- communication protocols with Mobile Apps & Backend Services with REST and MQTT APIs;
- internal tools for Prototyping, Debugging and Continuous Development in Python;
- software quality with Unit Tests plus Integration Tests with Docker and Gitlab CI;
- debugging software with the Black Magic Probe using a JTAG or SWD port and the GNU source level debugging software, GDB.

In the end, I learned a lot from senior engineers and architects on how to design, develop, test and debug embedded software, and I'm very grateful to them for this knowledge sharing.
More

GoProSeptember 2016 - February 2017

During my 6-months graduating internship, I had the pleasure to join GoPro in Zurich, Switzerland. It gave me the opportunity to strengthen my skills in Robotics, particularly in the Aerial Industry. I am grateful for having the chance to meet so many wonderful people and professionals who led me through this internship period. Keen to know why GoPro?

As a short intro, GoPro was seeking a top tier candidate for an Embedded Software Developer role. I was not that passionate about UAVs before joining but I thrive in a high growth, fast-paced and constantly changing environment. I proved to be a versatile team player, who could problem-solve and facilitate progress through a range of topics.

As an intern, my main responsibilities were to:
- build a versatile development environment and test bench to easily and quickly evaluate new sensors and new algorithms independently from the hardware architecture being used in production. This stack would serve as a proof of concept and would allow the managers to present future alternatives and benchmarks to GoPro’s top executives;
- deliver a calibration software to be used on the factory assembly line. It aimed to calibrate a device composed of several cameras and an Inertial Measurement Unit (IMU) by solving a Non-linear Least Squares optimization problem. By leveraging the PCB design and a tagged checkerboard, one can obtain reasonable first extrinsic and intrinsic guesses to feed the optimization problem with;
- design a Continuous Integration platform using Jenkins linked to Github repositories so the team can practise Test Driven Development.

Main technical components involved during these six months were C++ and Python with ROS and PX4 respectively for the software and hardware stacks.
More

Prefer LimitedApril 2016 - May 2016

During my 6-months study break, I had the chance to work at Prefer for a 2-months contract. I am very thankful to the team for accepting me, without knowing me, for such a short time, and for sharing with me their good practices as a web development agency. Interested in what I did?

My first mission concerned the Tutrust application based on Zend Framework, I :
- added Unit Tests to the application for the most critical parts;
- automated the specific-environment configuration based on environment variables;
- created an out-of-the-box development environment with Vagrant;
- set up Continuous Integration thanks to Travis-CI and Codacy.

Then a second mission was to take the lead on the design, development and deployment of an API based on Lumen (Laravel micro-framework) and Dingo. There, I learned a few key skills like:
- Project Management;
- REST API design;
- Test-Driven Development.
More

EquisenseSeptember 2015 - February 2016

As a freelance firmware developer, I had the opportunity to work again with Equisense on the Motion tracker. The development was made with GNU ARM Embedded, Eclipse IDE with OpenOCD and SEGGER J-Link. The Firmware was based on a Cortex M4 processor.

On one hand, at the drivers level, I could work with the following key embedded communication interfaces: BLE, UART, PWM, ADC and SPI. On the other end, at the application level, I had to develop a few software units to be embedded: UI with LED, Application State Machine, Scheduler and Battery Management.

Initially, the development board was an STM32F4-Discovery by STMicroelectronics but we quickly jumped to the nRF52 SoC by Nordic Semiconductor because it offers a Bluetooth stack with standard profiles to leverage.
More

Heudiasyc Lab, UTC's laboratory on ADASMarch 2015 - June 2015

As part of a UTC's course, we developed an embedded system that turned a customized Renault Zoé into an autonomous vehicle on a private circuit. Two people were in the vehicles to operate: the safety driver who should not take back control too often and the operator who launched programs and monitored the system.

The sensors were:
- a multi-beam lidar;
- a northernmost GPS receiver dual antenna;
- a CAN bus

Software components included:
- Pacpus Framework (developed by the UTC's Heudiasyc Lab)
- Input Components:
- GPS, CAN, lidar, circuit map
- output components:
- CAN interface with the Micro-autobox

I developed the localization module with state estimation based on IMU, GPS & odometry data. A second role was to sanitize theGeo-referenced map and work on the map matching module leveraging.

More

The UTCMarch 2015 - June 2015

Autonomous Renault Zoé by Heudiasyc * The UTC's laboratory on AI and Robotic * UNIVERSITY PROJECT
* Developed the localization module with state estimation based on IMU, GPS & odometry data
* Sanitized the map matching module leveraging the Geo-referenced map of the circuit's segements
* Worked with C++, Qt, Scilab, Pacpus, GeoDB SQLite, GPS, IMU and CAN bus

Facebook Jobs by Work4Labs * The powerful social recruiting technology Paris, France
More

Work4September 2014 - February 2015

During my first 6-months internship I've joined Work4, a startup that develops a recruitment application on Facebook. It allows HR teams to offer jobs directly from their Facebook page. Work4 offers a paid contract that supports automatic import job offers customers in the application and export of candidates directly in the customer's system.

The team in which I work is called ImpEx team. The goal is to fuel the job offers pipeline, JobPipe, the homemade software that automates import. Incoming jobs are obtained through import plugins that plug into an API or scrap our clients' job offers. On the other side, for HR teams to get candidates from Facebook, the ImpEx team writes exports plugins that will send the candidates in the customer's site with a report automatically generated.

JobPipe is a complete software that has been the subject of a patent application and which possesses a rapid development cycle. JobPipe is very versatile and scalable: it has a Web interface for the project owners to easily spawn and tune generic spiders, like Taleo ones.

JobPipe conducts 3 steps: Import the job offers customers in its database, transform the jobs so that they have the correct format for the application, and export jobs to the application. This consists of spiders (Scrapy specific term) that crawl the customer's site and extract the necessary information for each job. The transformations use rules defined in JobPipe to format jobs so that they are properly used and displayed by the application
More

EquisenseMay 2014 - July 2014

At the early stage of startup creation, we need a proof-of-concept to evaluate the feasibility of a product. So with a couple of friends, we decided to develop a tracker for equestrian sports like Withings did for human sports.

As a developer, my main responsibilities were to prototype, design and implement an early stage proof-of-concept.

The prototype was based on an Arduino, it samples data from 3 sensors (9 DoF). Raw data is stored on an SD card that is later read on computer and processed using tool such as Matlab.

We managed to recognize interesting signal footprints. Logic could easily be embedded on some more powerful boards with a better microprocessor unit.
More

USEC - Junior-Entreprise de l'UTCFebruary 2014 - July 2014

The objectives of our mandate was to maintain turnover above 100 k EUR , reduce training time members, provide specific micro-training, strengthen the quality system in place in the SISQ Black OPS project and sustain the association with a controlled and efficient recruitment. My mission was to monitor internal quality and studies. I also participated in continuous improvement of the Quality Management System through the rise of nonconformities, implementation of processes and procedures manual.
More

USEC - Junior-Entreprise de l'UTCSeptember 2012 - February 2014

At the UTC, I volunteered into the Junior Enterprise. As an IT Director, I had to manage IT equipment, user accounts and emails. I also maintained the accessibility of IT services (Nuxeo, GitLab, Mail, LDAP, Apache) and took the responsibility to perpetuate the structure by ensuring backups, protect data and accounts.
More

Quantel MedicalFebruary 2012 - February 2012

This was a 4-weeks internship in the Quantel Medical Laser photo-coagulators sector. I first worked as a storeman preparing commands. I then mounted chassis in the workshop following specifications. I continued in a clean room, mounting the laser cavities and aligning lenses and mirrors. Ultimately, I integrated lasers components, did the calibrations and security audit.

My stack

Other

implementation of processes and procedures, Lead Software Engineer, manage IT equipment, few key skills, develop a few software units, development of the applicative and middleware layers, tremendous experience, network protocols, fsmOS scheduler, battery manager, IMU, Test-Driven Development, Swagger API, engineering experience, Embedded developer, Firmware Developer, Embedded Software Developer, Embedded Engineer, Quality Management Systems, TOEIC, Mobile Applications, continuous development, Embedded Software, Python Programming, CANbus, Masters Degree > Masters Degree Computer Engineering, Pro/ENGINEER, Tech Lead, Proof of Concept, Internet of Things, Bash Shell, 3D, Back End, Scheduler, Python Developer, Assembly Lines, Continuous Improvement, VP, BlueTooth Technology, UML/OMT, English, C Programming Language, industry~it, French, Global Positioning System, a storeman, Mechanical Technicien Assistant, Laser Technician, an IT Director, Automatic Testing, PHP Developer, develop a tracker, self-employed, features development, Director of Information Systems, a developer, Portuguese, Technical Leader, Apple MacOS, Advanced RISC Machine (ARM), Architect, Object Oriented Analysis/Design, Analyst/Programmer, pair programming, freelance firmware developer

Application servers

Apache Web Server

Environment of Development

Eclipse IDE, GDB, Vagrant

Mobile

Embedded Systems

Embedded and Telecom

UART, Firmware, Arduino, Embedded Linux Kernel, Embedded C

Software testing

Integration testing, Debugging, Unit testing

Frameworks

REST, OpenCV, Laravel, Zend Framework

Analysis methods and tools

Design Patterns, Selenium, Agile Methodology

Others

IoT, Quality Management, Continuous Delivery, Teamwork, Project Management, Continuous Integration, Robotics, GitHub, JTAG

Technologies

Web Services, Web development, Software Architect, Unity, REST API, BlueTooth Low Energy

Languages

Java, Matlab, Embedded, CSS3, Python, Ruby on Rails, LUA, C++, C/C++, JavaScript, HTML5

Middleware

Jenkins

Protocols

UDP, LDAP, TCP/IP, HTTP

Databases

MongoDB, MySQL, PostGreSQL

Open Source solutions

Nuxeo

IT Infrastructure

GNU, Linux, Git, Unix

My education and trainings

- Licenses & Certifications

Diplome d'Ingenieur, Génie Informatique, Temps-Réel et Informatique - Université de Technologie de Compiègne2011 - 2016

Master's degree in Computer Sciences, Embedded and Real-time systems - Universidade Federal de Pernambuco2015 - 2015

Bachelors Degree, Applied Science, Maths, Physics - Lycée de la vallée de Chevreuse2009 - 2011