Summary

Embedded Software Developer with a demonstrated history of working with clients in the aviation, consumer, home automation, industrial, and medical sectors. I have a Master’s degree in Electrical Engineering with a focus on microprocessors and microarchitecture which gives me a deeper perspective when developing embedded applications and board-support packages using open-source technologies.

Education

M.A.Sc in Electrical Engineering

2011 - 2014
École de Technologie Supérieure, Montréal

Title: Characterization and analysis of critical paths in asynchronous integrated circuits.

Contributions and achievements:

  • Design and implementation of a tool allowing the use of traditional CAD software with asynchronous integrated circuits;
  • Automatic detection of asynchronous critical paths in order to validate them using conventional tools;
  • Involved in the development cycle of an asynchronous processor at Octasic.

B.Ing in Electrical Engineering

2007 - 2011
École de Technologie Supérieure, Montréal

Experiences

R&D Software Engineer

2019 -
Jump Trading, Chicago

Embedded Linux developer

2017 - 2018
Savoir-faire Linux, Montréal

Provide expert consulting services to clients in the aviation, consumer, home automation, industrial, and medical sectors:

  • Create custom BSPs with either Buildroot, Yocto, or OpenWrt;
  • Adapt and configure U-Boot and Barebox;
  • Debug and fix Linux drivers, create device trees for custom boards, profile kernel performance, and tune RT patchset usage;
  • Maintain and add new features to legacy code and create custom client applications;
  • Add hardware and system tests to validate the client’s platform and BSP;
  • Participate in design, code, and documentation reviews;
  • Understand and adapt multiprocessor systems and multithreaded applications;
  • Upstream patches to the respective open-source communities.

Embedded software developer

2014 - 2017
Silicon Labs (Micrium Inc.), Montréal

Develop and maintain µC/OS-III:

  • Add features : task protection with an MPU and implement a syscall interface;
  • Improve performance : reduce memory usage and increase execution speed;
  • Create ports, in assembly, for the eSi-RISC, C28x, and ARC architectures;
  • Review designs and code developed by the other members of the team;
  • Implement a new, reliable, and efficient test environment for the runtime tests;
  • Collaborate in the OpenAMP Workgroup of the Multicore Association.

Teaching assistant

2014
École de Technologie Supérieure, Montréal

Create the lab project for the TEL136 course which guides the students in building a network analyzer:

  • Use Quartus and Qsys to create a system based on the Nios II processor;
  • Develop an abstraction library to ease the use of the Ethernet controller;
  • Design tests that generate packets to validate the student’s application;
  • Write the lab book and the evaluation grids.

Lab teaching assistant

2011 - 2014
École de Technologie Supérieure, Montréal
  • Drive the lab sessions, evaluate projects and review the reports for undergraduate level courses in software development, microprocessor architecture, and digital circuit design.

Research assistant internship

2010
LACIME, École de Technologie Supérieure, Montréal
  • Automate the characterization of evolutionary filters on FPGA : synthesis, place & route, evaluate required resources and power.

Software developer internship

2009
CAE, Montréal
  • Create tools in C# to simplify the tasks of the developers.

ASIC designer internship

2008
Matrox, Montréal
  • Design a tool in Perl that generates an instruction disassembler in VHDL.

Skills & Proficiency

Languages

Assembly (ARC, ARM, C28x, C6x, eSi-RISC, MIPS, and x86), C, C++, GNU make, Java, LaTeX, Perl, Python, Shell scripting, Verilog, and VHDL

CAD

Altera Quartus and Qsys, ModelSim, Xilinx ISE and Vivado

OS

GNU/Linux, Mac OS X, QNX, Windows, µC/OS-II, and µC/OS-III

VCS

git, svn, and cvs

Tools

Barebox, Buildroot, Docker, OpenWrt, U-Boot, and Yocto