Hubert Figuière

Senior Software Engineer

Montréal, Canada

e-mail: hub@figuiere.net
github: @hfiguiere
gitlab: @hfiguiere

Profile

Contributor to end-user software to make tools useful, accessible and safe for all.

Worked on consumer software used by millions of people ; contributed to make the web a first class open platform, to make it more friendly to users, and contributed to an attempt to make the web an ubiquitous mobile phone platform.

Track record of open source software contributions.

Professional knowledge

Proficient user of Linux and macOS.

10+ years of working in a remote and distributed setup.

Bilingual French (native) and English.

Programming languages

  • Proficient in C and C++ (25+ years), JavaScript (9+ years), Rust (7+ years), and HTML + CSS (14+ years)
  • Extensive experience with bridging C++ and Rust, and other languages interoperability.
  • Solid knowledge and experience with Objective-C, Python, Perl, shell script, SQL, PHP and Go.
  • Experience with embedded Linux and Linux kernel development.
  • Always eager to learn new languages and frameworks as needed.

Tools and technologies

  • Build systems: GNU autotools, make, meson. Understanding of CMake, webpack.
  • Libraries, toolkit and API: POSIX, C++ standard library, sqlite, Gtk (3 and 4), Cocoa, familiarity with Qt.
  • Version control: proficiency with git and Subversion. Familiarity with Mercurial, CVS.
  • Average understanding of the technologies that power the Internet: IPv4, e-mail, the Web, domain names, encryption, UNIX, etc.
  • Web development tools: webpack, eslint, npm, mocha, expect
  • Web browser technologies: DOM API (web page content), Web Extensions API for browser extensions, WASM with C++ (emscripten) or Rust.
  • Understanding video codecs, image formats (JPEG, PNG, TIFF) and meta-data (Exif, XMP).
  • Intructory understanding of computer music technology: MIDI, audio plugins, etc.
  • Strong knowledge of Flatpak.
  • Fundamental understanding of Open Source licensing and open source development model.

Employment

Senior Software Engineer, eyeo GmbH (remote)

March 2017 - August 2023

Adblock Plus (ad blocker), later eyeo WebExt SDK: Handled improvements on a 10 year old code base for the core ad blocking technology used in Adblock Plus, within a fluctuating development team

Tasks and duties include:

  • Design and implementation of new blocking mechanisms in the web browser extension (WebExtension).
  • Migration of the WebExt SDK to the new Google WebExtensions API known as Manifest v3.
  • Initial developer on the anti-circumvention effort.
  • Interim product manager for the Core (6 month).
  • Assisted in interviewing candidates for the team.
  • Experimented with rewriting JavaScript code into C++ to be compiled with Emscripten to increase performance in the critical code.
  • Experimented with rewriting the ad blocking core in Rust targeting WASM.
  • libadblockplus: library (in C++) to offer an API to use Adblock Plus core technology.

Freelance Software Developer

January 2017 - February 2017

Short term projects: web video streaming, Bluetooth LE, device testing, Raspberry Pi.

Software Development Lead, Clemex Technologies (Montréal, Canada)

April 2016 - December 2016

Development of microscopy applications in HTML5 using React and JavaScript with a RESTful back-end in Python 3 (Flask) and machine learning. Improved the engineering process, set up continuous integration (Jenkins) and testing.

Debugging and porting serial driver code in C++ to Linux, and integration to a Python module.

Led a team of 6 people spread over two projects.

Software Engineer, Mozilla (remote)

October 2011 - March 2016

Connected devices: various small development tasks around IoT. (Rust)

Firefox OS: music player application, performance tooling and testing, improvment of crash reporting for the mobile OS. (C++, JavaScript)

Firefox accessibility: Improvement of VoiceOver support in Firefox on macOS.(C++, Objective-C)

Software Engineer, Apple Canada (Vancouver, Canada)

August 2009 - October 2011

iWork for iOS: Worked on MS Office file format compatibility, as well as ePub export in iWork for iPad and iPhone. Also worked on iBooks textbooks support.

Software Engineer, Novell Canada (remote)

February 2007 - February 2009

SLED (SUSE Linux Enterprise Desktop): GNOME desktop for SLED 10. Firefox in SLED: bug evaluation and fixes, security updates. Improved Firefox lock-down functionality needed for enterprise users; packaging of various software components.

OpenOffice.org: Development of the import filter for PowerPoint 2007 file format (Office OpenXML) and various bug fixes in Impress; Migration of the community hosting for Go-oo.org (Novell-sponsored project around OpenOffice.org).

Previously

  • Embedded Linux firmware development: DSL modem, porting to new hardware architecture.
  • Qt application development.
  • Linux server appliances development.
  • Networking, automation and firewall software development.
  • UNIX system administration.
  • Windows NT server software development.

Open Source

I regularly contribute to open-source projects, either by need, or just by curiosity. Including, but not limited to:

Active

  • Principal developer: Exempi is an API stable wrapper around Adobe open source XMP toolkit.
  • Principal: libopenraw is a library to parse digital camera Raw files, developed from scratch in C++ and currently being rewritten in Rust.
  • Contributor: Flathub is a community maintained software repository of Linux distribution agnostic applications, in Flatpak format, with sandboxing. Task includes reviewing new submissions, submitting new apps, addressing issues in the stack.
  • Core developer: AbiWord a cross-platform word processor.

Past contributions

  • OpenPhoto / Trovebox: Implemented MySQL and local filesystem support for OpenPhoto. Implemented better metadata support, improved geotagging, fixed bugs.
  • Gnote: Started the project to the first releases.
  • gphoto2: Developer on the gphoto project, the leading digital camera support software for Linux and other UNIX systems.

Education

Computer Science degree (DUT), IUT d'Orsay, France.