Vasco Cardoso Espinheira Rio, Developer in Porto, Portugal
Vasco is available for hire
Hire Vasco

Vasco Cardoso Espinheira Rio

Verified Expert  in Engineering

Software Developer

Location
Porto, Portugal
Toptal Member Since
March 3, 2022

Vasco is a senior embedded software developer with over a decade of experience building reliable products for companies like Synopsys and Tridonic. He specialized in C, C++, Python, and embedded Linux but would also love to work in state-of-the-art products with technologies such as Rust.

Portfolio

Toyota Forklift
C++, Embedded C, Embedded C++, Embedded Linux, Embedded Systems, Firmware...
Tridonic
C++17, Yocto, C++, MQTT, WebSockets, SQLite, GitLab CI/CD, Linux...
Synopsys
Bluetooth LE, User Interface (UI), Cryptography, Linux, Linux Kernel Drivers...

Experience

Availability

Part-time

Preferred Environment

Linux, Visual Studio Code (VS Code), Slack, Jira, GitLab, Teams, Embedded Systems

The most amazing...

...product I've developed from scratch is a fleet device controller for Ecoltra that allows users to book scooters and start them with the mobile phone.

Work Experience

Lead Embedded Systems Developer

2022 - PRESENT
Toyota Forklift
  • Developed an integrated development setup that drastically reduced build time (20x) and allowed running system tests locally and in the pipeline.
  • Created an automated release process built on top of Yocto with versioning, changelogs, release notes, and Azure DevOps reports.
  • Created a firmware flash tool that changed a 12-minute flash time to less than 30 seconds.
  • Implemented an application capable of monitoring system runtime resources and tracking application resource evolution during the product's lifetime.
Technologies: C++, Embedded C, Embedded C++, Embedded Linux, Embedded Systems, Firmware, Release Management, CI/CD Pipelines, Embedded Software, Internet of Things (IoT), CAN Bus, U-Boot, Python, Yocto, Azure DevOps, Git

Team Lead and Senior Software Developer

2019 - PRESENT
Tridonic
  • Developed an emergency lighting management system, nBox, that runs 24/7 on multiple clients and is becoming one of the company's most relevant products.
  • Organized the embedded software team processes and flows, serving the company as the base example of managing other teams.
  • Designed an MQTT-based solution to integrate up to 100x nBox sharing emergency controls and luminaires between them, allowing the product to scale to huge buildings such as airports and stadiums.
  • Implemented a WebSockets-based API with support for publishing, subscribing, authentication, and more, allowing easy implementation of new functionalities and keeping a low latency and a good user experience.
  • Enforced an application API based on OpenAPI, generating code for C++ and React Native.
  • Executed GitLab CI for the nBox project with a Yocto-based repository, an application build with SDK, unit tests, code coverage, and Cppcheck.
  • Made the system completely operational during a failed update by implementing an over-the-air update mechanism based on SWUpdate and symmetric partitions.
Technologies: C++17, Yocto, C++, MQTT, WebSockets, SQLite, GitLab CI/CD, Linux, Team Leadership, Bluetooth LE, Teamscale, Embedded Systems, Debian, GTK+, GTK

Senior Embedded Software Engineer

2017 - 2019
Synopsys
  • Implemented a Bluetooth 5.0 controller, which passed certification and was integrated into at least one of the major semiconductor manufacturers' SOC.
  • Executed a secure protocol between dedicated hardware and another x86 Linux machine.
  • Implemented an HDMI TX Linux driver with a Linux DRM Kernel subsystem.
  • Implemented a base Linux Buildroot image used by the team to deliver Linux drivers to customers in a generic way.
  • Redesigned a Bluetooth controller build system reducing build time from five minutes to some seconds (on rebuild).
Technologies: Bluetooth LE, User Interface (UI), Cryptography, Linux, Linux Kernel Drivers, Bash, C, Assembly, CMake, Makefile, Python, Embedded Systems, Debian

Team Lead and Embedded Systems Engineer

2012 - 2014
CEiiA
  • Implemented a solution for fleet tracking based on Linux, C++, and Python, allowing clients such as Mitsubishi and the Portuguese Environment Agency to track their vehicles and have full access to the history of CAN bus messages.
  • Executed a solution for vehicle sharing based on Linux, C++, and Python, allowing clients such as ECooltra and Itaipu Binacional to reserve their vehicles, lock/unlock, enable/disable the ignition, and monitor them.
  • Hired and organized the entire team, acting as a team lead and senior software developer.
  • Implemented a solution for bicycle sharing based on bare metal Nordic nRF51, C++, and MQTT, allowing fleet management and tracking while keeping low power consumption.
Technologies: Scrum, C++11, Python, Bash, Linux, Buildroot, PCB Design, SOAP, MQTT, CAN Bus, Cortex M4, Embedded Systems, Debian

Software Developer

2012 - 2014
Nonius
  • Implemented a hospitality TV set-top box solution based on Android, capable of running streaming TV, video on demand, order room service, and over-the-air updates.
  • Worked as a developer and scrum master, helping with the company's organization and team commitments.
  • Implemented a C++ state machine framework used as a base for message broker between the hotel TV system and the billing system.
Technologies: C++98, Android, Embedded Systems, Debian

Tridonic nBox – Emergency Lighting System

https://www.youtube.com/watch?v=Se7MMSwQsbw
A system that controls emergencies in a building. The nBox supports addressable DALI over PLC luminaires and remote switches and uses a mobile interface to complete commissioning and maintenance. It excels in being ultra-responsive due to our subscription-based API over WebSockets. The product also uses MQTT to integrate up to 100x nBoxs, allowing it to scale for huge buildings.

I was one of the main developers and later became the team lead.

CEiiA Mobility Device Controller – Linux-based Enabler for Fleet Devices

https://www.youtube.com/watch?v=tPQuG3-ELYU
The MDC is CEiiA core for vehicle sharing and fleet devices. It was designed as a framework to allow the integration of vehicles in the "mobi.me" ecosystem.

I worked on it from concept, hardware design, software implementation, and production. We collaborated with Renault, Govecs, Ecoltra, and Mitsubishi, adding support for some of those manufacturers' vehicles to lock/unlock, enabling/disabling the ignition, monitoring location and CAN bus parameters. For Ecooltra, we build a fleet management system for scooter sharing.

CEiiA Micro Mobility Device Controller – Bicycle Sharing

https://mobi.cascais.pt/
The uMDC is a fleet management device for ultra low power vehicles. It is based on Nordic NRF51, runs bare metal C++, has a GPS, and uses GPRS to communicate with the server.

I've worked as an architect and senior developer for the product. We've implemented an MQTT library for server communication. It also uses Bluetooth LE for mobile communication and allows features like tracking, reservation, locking, unlocking, battery monitoring, and anti-theft alarm.

Synopsys Bluetooth LE Controller

https://www.synopsys.com/designware-ip/interface-ip/ble-thread-zigbee-ip.html
The Synopsys Bluetooth LE controller has a dedicated CPU and communicates with the host using HCI.

I was one of the Synopsys BLE controller firmware developers, mainly working on redesigning the product build system, supporting ARC CPU, fixing air timing-related issues, and interoperability testing (Barcelona UnPlugFest).

SDAP – Secure Protocol

https://www.synopsys.com/dw/ipdir.php?ds=security-hdcp-esm
SDAP is a secure protocol that allows any machine to send signed and encrypted code to dedicated hardware. The code is executed in the target without anyone in the middle having access to it. The receiving hardware can confirm the authority of the receiving message.

I've implemented a library that can communicate using SDAP with another machine-dedicated SDAP hardware.

SDAP is particularly useful for products such as HDCP, where HDMI TVs can decrypt high-secure streams, and it is desired that the secure firmware gets updated.

Nonius Hospitality Set-top Box (Android)

https://noniussolutions.com/hotel-tv/
Android Set-top box is one of Nonius's significant products, installed in thousands of rooms across Portugal and Brasil.

I designed and implemented the Android Set-top box for hotel TVs, implementing applications such as stream TV, video on demand, room service, promotions, configurable themes, games, and more. I also implemented both Android applications and provided platform work.
2004 - 2010

Master's Degree in Electrical and Computer Engineering

Faculty of Engineering of the University of Porto - Porto, Portugal

JULY 2021 - PRESENT

Top Lead

Neves de Almeida

FEBRUARY 2018 - PRESENT

Embedded Linux Kernel and Driver Development Training

Bootlin

NOVEMBER 2013 - PRESENT

Embedded Linux Training

Bootlin

OCTOBER 2011 - PRESENT

Certified Scrum Master

Ambithus

Languages

C++98, C++11, Python, Bash, C, C++, Embedded C++, Bash Script, Python 3, Assembly, C++17, PHP, Java, Rust, JavaScript, HTML, SQL, Embedded C

Paradigms

Scrum, UX Design, DevOps, Azure DevOps

Platforms

Linux, Embedded Linux, Debian, Bluetooth LE, ARM Linux, Visual Studio Code (VS Code), Android, Docker

Other

NMEA, Programming, Scrum Master, Certified ScrumMaster (CSM), APIs, Concise Binary Object Representation (CBOR), Embedded Systems, Teams, WebSockets, Team Leadership, SWUpdate, GPS, Ellisys Bluetooth, Toolchains, Compilers, Architecture, Technical Leadership, PCB Design, SOAP, CAN Bus, Cortex M4, User Interface (UI), Cryptography, Linux Kernel Drivers, Yocto, Teamscale, Nordic nRF51, Linux Kernel, Electronics, Algebra, Bluetooth, BACnet, Constrained Application Protocol (CoAP), Firmware, Release Management, CI/CD Pipelines, Embedded Software, Internet of Things (IoT)

Frameworks

Google Test, Android SDK, Swagger

Libraries/APIs

API Development, REST APIs, OpenAPI

Tools

Jira, Buildroot, MQTT, CMake, GitLab CI/CD, Git, U-Boot, Microsoft Teams, Slack, GitLab, Makefile, Android NDK, Subversion (SVN), GTK+, Qt Creator, NGINX, GTK

Storage

SQLite, PostgreSQL

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring