FULL-STACK-DEVELOPER & DEVOPS ENGINEER

Availability
Not available for new opportunities at the moment
Preferred contact method
Write me
Elsewhere
GitHub
LinkedIn
Wikimedia Foundation
Languages
Français langue maternelle
English fluent
Logistics
Canadian citizen
Living in Montréal, Québec, Canada
See also
Simplified version of this resume

Experienced full-stack developer looking for a position on a conscientious collaborative team. I have a broad and deep understanding of the Open Web stack and font-end and server techniques to build, deploy, and maintain Web sites that scale. I work effectively remotely or on-site.

Highlights

  • Created and maintained architecture for high-performance sites, including WebPlatform.org, and the World Wide Web’s 25th anniversary site
  • Built more than 150 websites between 2002 and 2009
  • GNU/Linux user since 1998
  • Contributor to open-source projects such as MediaWiki and Mozilla Firefox Accounts
  • Experience with Cloud, IaaS, Containers and maintenance of continuous deployment systems

Certifications

  • 2013    Zend Certified Engineer PHP 5.3 (Vue, certificate)
  • 2012    Written English in Communication Contexts (McGill University)
  • 2008    Web Accessibility (WCAG 1) at the Nazareth & Louis Braille institute (University of Montréal)
  • 2007    IBM WebSphere DataPower SOA Appliance (IBM)

Publications and Contributions

See more talks in renoirb.com/talks

Past employers

MozillaW3CEricsson


Work experience

Delivery Engineering Architect

Employer
Colloquial/Betastream
Duration
Jan 2016 – current
Type
Contract
Location
Remote work, Montreal, Quebec
Technologies
SaltStack Apache httpd Bash Fish shell Vagrant VirtualBox Docker OpenSSL EC2 RDS Varnish VCL Fastly CloudFlare WordPress PHP ElasticSearch LogStash Python Prometheus Monit Memcached Node.js Chef OpsWorks Go

As part of a geographically distributed Web Development and IT team for a New York based Agency. My role was to review, plan, and build a next-generation infrastructure and deployment system for the project production pipeline.

During the last 5 months, I released a cloud orchestration solution using SaltStack, running on Amazon AWS, Google Cloud Platform, and Microsoft Azure and where we can manage automatically Web Applications, deployment levels, build steps, and dependencies consistently.

Besides the orchestration system, my main tasks revolved around, coaching, participating to recovery efforts during outages and document recommendations for the operations team.

Delivery Engineering Architect

Employer
CAE
Duration
Mar 2016 – Jun 2016
Type
Part-time contract
Location
On site, Montreal, Quebec
Technologies
Prometheus Heka Ganglia Monit Bash Cygwin VirtualBox Vagrant Chef OpenSSL VMWare ESXi VMWare vCloud Director

Short term and part-time consulting contract to propose Open-Source infrastructure monitoring solutions. My role was to coach System Administrators on how to leverage Delivery Engineering techniques.

The project was to make a monitoring system prototype that could be installed only via scripts and should work within the company’s network security constraints.

The deliverable became a simple set of Bash scripts and a Vagrant sandbox where we can describe a cluster of machines and develop configuration scripts.

Product-Owner

Employer
Mozilla Corporation
Duration
Sept 2015 – Feb 2016 (6 months)
Type
Contract
Location
Remote work, Montreal, Quebec

The Web Browser compatibility data project “BrowserCompat” is a Python based Web application specifically designed to store and serve Web Browser feature support information. Its objective is to improve accuracy and maintenance of browser feature support information data for Web developer documentation sites.

My role was to provide oversight of the development, report on the status, make sure correct people are involved in decision-making, act as subject matter expert, and participate in software architecture discussions.

Responsibilities

  • Drive the overall project forward, serving as key stakeholder/subject matter expert, and make key decisions on all aspects
  • Oversee and report status on all deliverables
  • Help identify where decisions and resources are needed to launch and report to the business and engineering manager
  • Organize and chair meetings with stakeholders, developers, etc.

Developer Operations Engineer (i.e. DevOps)

Employer
W3C/MIT
Duration
Aug 2013 – Aug 2015 (2 years)
Type
Contract
Location
Remote work, Montreal, Quebec
Technologies
Apache 2.4 Backbone.js gDNSd Bower Browserify/Rollup.js Cinder Compass Discourse DocPad Docker Docker Machine ElasticSearch Express.js Fastly (VCL) Gerrit Grunt/Gulp HTML/CSS Horizon HTTP/2 Hypothes.is JavaScript MediaWiki Memcached Metalsmith Monit MySQL/MariaDB NGINX Node.js Nova PHP Python Redis SASS SaltStack Swift TwemProxy Vagrant WordPress jordansissel/fpm Git

The W3C typically works around specifications with its members. The WebPlatform Docs project was meant to become an independent Web Developer documentation site maintained by an International community of contributors. Sponsors were: Adobe, Apple, DreamHost, Fastly, Facebook, Google, Intel, Mozilla, Microsoft, Nokia, and Opera.

My role was to maintain stability, improve features, strengthen the infrastructure of the site, and act as a technical liaison with Open-source communities.

Achievements

  • Convert content and history of MediaWiki into Static site-generator and Git (2015)

    In order to preserve the contributions made by the community and allow the site to run only from static HTML files, I had to find a way to simplify server setup. To achieve this, I created a conversion system with which I could convert each wiki page into a text file, preserve history for each save into a git commit.

    I could successfully rebuild WebPlatform Docs pages, content and history from MediaWiki that was using more than 25 VMs into one Web server that serves simple static HTML files. Without losing the ability for the community to continue contributing to the documentation.

    See the code, refer to Selected projects section below.

  • Infrastructure deployment code (2015)

    The site relied on a number of Open-Source projects, written in different languages (PHP, Python, etc.) and managed by their own communities. Each component had a set of adjustments to maintain the "look and feel". Each Web application and configuration management scripts wasn’t originally made to support multiple deployment (e.g. staging, local), but only the live site.

    I successfully reworked the whole configuration management system such that we could clone each Web application code, apply their respective customization and configurations systematically. So we could rebuild the whole system from scratch, from any domain name, at any time.

    See the code, refer to Selected projects section below.

  • Self-healing monitoring (2015)

    WebPlatform Docs server infrastructure had no monitoring, only a server health dashboard (Ganglia). I therefore set deployment code configuring Monit automatically for each service and VMs to ensure they remain up, and restart faulty services if they stopped running.

  • Implement Single Sign-On using OAuth2 (2014)

    The site was using multiple web applications such as WordPress, The BugGenie, MediaWiki, Discourse, and many others. Each section of the site would require to create an account manually. The objective was to set in place a system that takes care of storing user profile data and their session state using Mozilla Firefox Accounts.

    See the code, refer to Selected projects section below.

  • Web Browser feature compatibility tables (2014)

    Participate in making a web crawler to get a local copy of compatibility data stored within Mozilla’s MDN content pages and clean it up to generate new compatibility tables within WebPlatform Docs. The project included a generated HTML cache system to prevent heavy server use caused by the feature.

Software Developer

Employer
Ericsson
Duration
Feb 2012 – Jun 2013 (1 year 4 months)
Type
Contract
Location
Montreal, Quebec
Technologies
Doctrine2 Git HTML/CSS JMS Serializer JavaScript LESSCSS MySQL OpenStack Grizzly PHP Puppet Symfony2 Twitter Bootstrap VMWare ESXi/vCloud Director Vagrant jQuery

The project goal was to create a server on-demand provisioning portal managing cloud computing cluster hosted in data centers geographically dispersed.

My role was to Architect, build and lead a Web-based virtualization self-service portal. A key feature I worked on was to allow users to initiate VMs from any data centers, on any cloud provider platforms (e.g. VMWare, OpenStack).

When I joined the project, it was roughly a handful of PHP files and I created a complete solution. After Ericsson wide launch, other members joined.

Responsibilities

  • Analyzed; Interface, functional decomposition, non-functional requirements
  • Designed and implemented an abstraction layer to support different vendor APIs
  • Coached Ericsson employees about the Open Web Platform and Web development methodologies

Web Developer

Employer
Evocatio Solutions technologiques Inc.
Duration
Jan 2010 – Feb 2012 (2 years 2 months)
Type
Co-Founder
Location
Montreal, Quebec
Technologies
Apache Solr Bower Compass EJS Git Grunt HTML/CSS JavaScript LESSCSS MySQL Node.js PHP SASS Subversion Symfony2 Tiki Wiki CMS/Groupware Twitter Bootstrap VMWare ESXi Vagrant WordPress Yeoman jQuery symfony1.x

Co-founded Evocatio Technological Solutions Inc. with two old friends. Our partnership lasted 2 years and at the peak we had 10 employees on our payroll, some of our work won prizes in local industry competitions and other projects got deployed in cities around the globe.

The company worked on projects namely for: Canadian Museum of History, UDA (French-Canadian Artist Union), Astral Media, Equisoft, UPA (Quebec Province professional farmers’ union), Rolls-Royce and Rogers Media.

Responsibilities

  • Coach graphic designers about making websites with the Open Web Platform
  • Participate in software requirements, R&D documentation, and project bids

Achievements

  • Participated in a major Web site rewrite for UDA.ca from .NET into PHP with Symfony 1.x
  • Created meaningful relationships that led to important contracts
  • Created complex e-mail delivery systems to handle bounces at the server level and participated in the creation of a Web-based frontend

Projects

  • Mailing list manager (2012)

    Participated in the development of an e-mail notification system using symfony 1.2. The web application allowed our clients to write communication e-mails using a library of HTML e-mail templates that they could reuse.

  • UDA Web site (2009-2012)

    • Search-engine feature of the member artist database search engine («Le Bottin des artistes»), allowing to find on various criteria: hair color, played music instruments, professional qualifications, etc.
    • Document search-engine feature which had to support multiple file formats and Web documents
    • An artist manager can create an artist selection portfolio to share with other producers
    • An artist can control what information can be visible publicly

    The version I worked on isn’t online anymore, but you can still see a few screenshots here (16 images)

  • Gift exchange interactive game (2010-2011)

    Evocatio’s main business partner, RED l’Agence, wanted to make an interactive Christmas Holiday wish card with their clients and partners. The game had been run two consecutive years and received prizes of recognition from the local marketing agency community («Grenier aux nouvelles»).

    • 2010: 40 different gifts, 40 participants

      Each participant could pick somebody else’s gift, with a limit of 9 picks. At a given time, participants learn which gift they were assigned. Whether or not they picked it. See this article on my blog showcasing the 2010 variant (in French)

    • 2011: «Échange pas très équitable» (An unfair gift exchange).

      One iPad, the desired prize, is hidden in a christmas sock (e.g. blue with white dots), the user gets a hint after each attempt. Each participat had a limit of 9 attempts. The game won the "Grenier d’Or" competition in the Interactive games category.

  • An “Offline-First” news reader in HTML5 for iPad (2010)

    Objective was to allow site visitors to read articles offline from the iPad during transit periods. Project stated that it only had to support Apple iPad. The source site was running WordPress and therefore already had an RSS feed. The site had been built using JavaScript templating library of the time and was assuming the Web browser supported HTML5’s localStorage such that upon loading the page, articles were kept locally and displayed. The project was a success, even though AppCache implementation in Safari at that time wasn’t complete.

    See it in action (still online, but unmaintained)

Web Integrator &
Linux System Administrator

Employer
Groupe Informatique TechSolCom
Duration
Oct 2006 – Aug 2009 (2 years 10 months)
Location
Montreal, Quebec
Technologies
Ant Apache 2.x Apache Tomcat Bind CentOS GNU/Linux CVS Debian GNU/Linux Exim HTML/CSS IBM WebSphere DataPower JavaScript Jaws Maven2 Mootools Nagios/Centreon RHEL GNU/Linux PHP jQuery SNMP Subversion SpamAssassin Struts/JSF SUN Glassfish Syslog Ubuntu GNU/Linux VMWare Server WCAG XML/XSL/XSLT YUI2

My role was to maintain the company corporate image on the Web, maintain their Web site, participate in projects run internally as a Web developer and contribute to the maintenance of the company network infrastructure.

Responsibilities

  • Participate as frontend developer to assigned projects
  • Create frontend pattern libraries (what we called “Web Integration” then) for assigned projects
  • Maintain corporate image on the web for the company and products
  • Maintain company internal network and web hosting infrastructure

Projects

  • TechSolCom web site

    • 2009 site version rebuilt with good care of the WCAG recommendations
      Screenshots (4 images)

    • 2007 site version was running with Géranium CMS
      Screenshots (5 images)

  • Namminik, an home-inventory Web application (2008)

    Namminik can be used to keep a record of your belongings for your insurance. The initial version had both a website and an Apple iPhone iOS application (2008). As of 2012, the Web application had been deprecated and only the Android and iOS applications are still maintained (2016).

    Namminik was my first “Agile” project in my career, we were a team of 4, two programmers, a SCRUM Master, and myself as Product/UX Designer and Frontend developer.

    Screenshots (5 images)

  • Beebox/TSCM, a Continuous Integration Web application for IBM WebSphere, Apache Glassfish J2EE runtime engines (2007-2009)

    Beebox was a Continuous Integration system written in Java deployed at the National Bank of Canada, Téléfilm Canada and other clients. In 2008, Beebox became freely to download, but unfortunately didn’t get attraction from the public and we can’t find anything online about that product.

    • Web integration using IBM Rational application development environment and IBM WebSphere portal
    • Participated in the creation of a Struts tag library
    • Participated in the user documentation

    Screenshots (4 images)

  • Site Finder, a White-Label branch locator iOS application (2009-2011)

    Participated in the Web-based back-office portal providing data to an outlet geo-location tool for iOS, the project was later was adapted for Desjardins as the “Localisateur Desjardins” (2009-2011).

  • Jacob.ca, a temporary on-site contract (2009)

    • Built a JavaScript AJAX Outlet locator, reading data from XML files
    • Built XML schema and XSL stylesheets
    • Contact us form, using cross-origin frame communication
  • Téléfilm Canada, a temporary on-site contract (2008)

    Create an HTML/CSS markup library based on Adobe Photoshop files. At the time, there were very few UI frontend frameworks, I used the most robust of the time, Yahoo!’s YUI2 and adapted the framework’s base CSS to match the mockups.

    Screenshots (3 images).

  • System administration

    • Managed multiple VMWare ESX and VMware Server servers, and virtual machine instances
    • Built a monitoring service using the SNMP protocol, centralized syslog server, and configured a Nagios monitoring service
    • Managed and tested SOA integration patterns with the company’s IBM WebSphere DataPower development blade
    • Built an SMTP e-mail relay server, using SpamAssassin, and other filtering technologies

Web Developer

Employer
Câble Axion Digitel
Duration
Oct 2005 – Nov 2006 (1 year 1 month)
Location
Magog, Quebec
Technologies
CentOS GNU/Linux HTML/CSS Microsoft Access MySQL PHP Qmail SpamAssassin Subversion Sun OS (Solaris)

Câble Axion is a cable service provider. Their network coverage goes from Montreal South Shore, follows the US borders, and go up until the Beauce area in the province of Quebec.

My role was to rewrite the corporate website, maintain internal applications and do level-2 support calls from subscribers.

Achievements

  • Maintained the company website
  • Maintained of the internal Microsoft Access support dashboard software

Web Developer

Employer
Inexis solution web Inc.
Duration
Feb 2002 – Nov 2006 (4 years 9 months)
Type
Self-employed
Location
Sherbrooke, Quebec
Technologies
CentOS GNU/Linux HTML/CSS MySQL PHP Qmail RedHat GNU/Linux Subversion

INEXIS solution web Inc., was a one-man web development service provider form I founded to serve graphic design agencies in the region of the Eastern Townships. Services typically included creating HTML/CSS based on Adobe Photoshop/Illustrator mockup designers were making, creating e-mail templates, and managing hosting services.

Achievements

  • Managed sites for well-known local organizations
    • City of Sherbrooke, «Sherbrooke, Ville étudiante» (A city project to invite students to study in Sherbrooke),
    • the regional county municipality of the Val Saint-François,
    • Mont Bellevue (a ski resort), and
    • Hydro-Sherbrooke (local electricity provider)

Projects

  • Géranium (2002-2008)

    Inexis was publisher of its own proprietary Client Relationship Management Solution (CRM) and Content Management System (CMS) called Géranium.

    The CRM distribution was used internally so that I could manage sales and work with 4 partners in the same time. At its peak, the company served more than 60 Web sites with all related services.

    The CMS distribution had been deployed until 2008. It started as a full featured CMS, and became a static site generator in 2006.

  • Adapt a Web application to have better printed reports, temporary on-site contract (2004)

    I have been hired to participate in a project Web application written in ColdFusion that had to support printing their reports from a Web browser. At the time, it had to work reasonably well with Microsoft Internet Explorer 5 on PC.


Selected projects

Convert content and history of MediaWiki
into Static site-generator and Git

Project
WebPlatform Docs
Sponsor
W3C/MIT, Volunteer
Technologies
MediaWiki Pandoc PHP 5.3
See the code
New WebPlatform Docs content repository
Abstract library “content converter”
MediaWiki converter

I wrote an abstract library “content converter” and a MediaWiki converter system with which I could convert each wiki page and write contents into a text file. I preserved history for each edit using Git. The conversion takes into account every special URL MediaWiki allowed (i.e. non ASCII fragments) and generates a rewrite map for NGINX. Last conversion step was to convert last version of each page into Markdown.

Requirements

  • Make each page into a valid ASCII URL fragment
  • Keep any URLs that had invalid URL fragments by keeping 30x redirects
  • Preserve edit date, author and content for each pages
  • Keep history and possible redirects of deleted pages
  • Support edition using GitHub or a local text-editor, in Markdown
  • Support compilation into static HTML

Infrastructure deployment code
with Salt Stack

Project
WebPlatform Docs
Sponsor
W3C/MIT
Technologies
Python SaltStack
See the code
Configuration scripts
Workspace

WebPlatform.org relied on a number of Open-Source projects, written in different languages. Each component had a set of adjustments to maintain the site image.

The objective of this project was to improve the deployment system in order to work with the same code locally or in the cloud so that I could work on configuration locally and test them in staging prior to deploy changes in production.

Requirements

  • Possibility to run on any Open-Stack cluster and/or Vagrant VMs
  • Possibility to change passwords and secrets, apply changes on servers and client configuration files
  • Possibility to deploy different stacks; Docker containers, PHP, NGINX, Apache, Node.js, Python, etc.

Implement Single Sign-On using OAuth2

Project
WebPlatform Docs
Sponsor
W3C/MIT
Technologies
Mozilla Firefox Accounts Express.js Backbone.js OAuth2 JavaScript
See the code
GitHub Pull request
See in action
YouTube screenast

As previously said, WebPlatform.org relied on a number of Open-Source projects, written in different languages. We wanted to simplify authentication, and had to create a way to share session state between different stacks.

In order to allow users to use one set of credentials on separate web applications, I developed a mechanism to implement a Single Sign On using Mozilla Firefox Accounts. My work caught attention of the Accounts team at Mozilla, but hasn’t been merged yet.

The objective has been achieved, but isn’t in use because we migrated WebPlatform into a static site-generator driven publishing and no longer support any backends.

Requirements

  • Possibility for a configured web application to get user session and data associated to a shared token from an authoritative server
  • Possibility for a configured web application to either use or create a user locally and start a session
  • Possibility for a configured web application to drop a local session if authoritative source doesn’t find a valid session
  • Implement HTTP calls from relier backend to initiate roundtrip check to authoritative server
  • Implement HTTP response from relier backend to confirm status of check

Improve offline use
on a prototyping tool

Project
RoughDraft.js
Sponsor
Volunteer
Technologies
JavaScript
See in action
Mockup of my wedding RSVP Web site
Mockup of my Web site

RoughDraft allows to create HTML documents without any backend — All in the browser!. It makes it possible to create simple static HTML files with loops, "Lorem Ipsum" and placeholder images without having to copy paste boilerplate code.

Contributions

  • Class name sequence generator (PR #9)

    When creating loops in a case where the pattern has to have predetermined class names. For example, <ul><li class="foo-alfa" data-draft-repeat="3" data-draft-text="1/w"></li></ul> would generate a list with three Lorem Ipsum words, each list item would be named foo-alfa, foo-bravo, foo-charlie

  • Improve offline use support (PR #14)

    Few additions to speed up load time. Ability to use inline SVG images and instead of using external placeholder image providers.