Your browser is outdated!

To ensure you have the best experience and security possible, update your browser. Update now

×

Benoît Michaud

Software Engineer

Benoît Michaud
Montréal (H2T 1W8) Canada (Québec)
Professional Status
Unemployed
Available
About Me
Self-taught, curious and innovative developer passionate about programming languages and design patterns. I try to find the right balance between learning new things and making the most out of what I already know.
Resume created on DoYouBuzz

Software Engineer (part time)

Freelance
Since January 2019
  • Worked on phase two of a music learning management system. Rewrite the application in order to make it more scalable and easier to test. Use the application as a laboratory to learn about Vue.js, Lumen, Docker, GitLab CI.

Software Engineer

TapClicks
June 2016 to December 2018
  • As a PHP backend developer I first worked on third parties data integrations. Data from third party APIs, CSV or XML file needed to be fetched, massaged and stored in mysql through ZendDB in a way that allow the TapClicks core API to consume the data. Outside from the ETL work, the models which hold the columns attributes ( label, database column name, mysql expression, etc.. ) needed to be implemented for every data levels of the integration. I have contributed to make the data integration code more DRY by adding a few methods on the abstract ETL classes.
  • Create a data integration code generator tool. The process of writing a data integration was tedious. An integration roughly had between 3 to 10+ data levels which could hold roughly between 30 and 100+ columns. For that reason, I took the initiative to created a web application that the members of the product team would use to write their specs. Instead of defining the columns attributes in a Words document, as they would normally do, they would use the web application which allow them to export the spec as a JSON file which was then import by the developer on their local instance of the app in order to generate about 90% of the integration code. All was left to do was to perform API calls and pass the response in the generated save methods. The tool helped deliver much faster and allowed developers to spent a greater part of their time on business logic. It also led to more consistent integration since it provided a single source of error. The tool was built using javascript/jQuery on the front end with a Lumen API and MYSQL.
  • Move to the platform team working on the core data analytics API. I helped the main backend developer in his effort in moving away from the legacy code structure on which it was getting tougher and tougher to scale on. The new code made use of the Slim framework and a homemade ORM. My first task was to consolidate the logic that dynamically generate new models based on legacy code. I then put a test structure in place using PHPUnit that covered any new or existing data integrations. From there I took ownership of the new API which needed to be consolidated, maintained and tested.
  • I was also playing a role in the release process. For the time that there was a beta version of the new core API which relied on relatively inconsistent legacy code, the changes on the data structure that needed to be performed on each releases rarely succeed. My role was to quickly fix complex migration bugs during the release process in order for the release to be delivered on time.
  • As we wanted to go forward using micro-services I had the opportunity to create a data alert service. I created a console application using Silex that listen to Kafka messages which were sent every time there was a change on data for a given user. The Kafka messages acted as a signal to let the Silex consumer knows, based on data changes, if an alert should be sent to the user. I then acted as a team lead for the phase 2 of the project. I have contributed to define the product while guiding the backend and frontend developers in their development efforts and coordinating the release process.
  • Among other features, the last one I worked on was to add support on the core API to fetch data from either Mysql or Snowflake based on the user. The main challenge was to parse hardcoded mysql expressions/queries on the fly so they become valid Snowflake expressions/queries.
  • I mentored numerous junior and intermediate developers since I enjoy helping people that want to learn and I had developed a good knowledge of almost every parts of the application. I was consulted on various projects for either planing or finding technical solutions since I had a proven track record of finding simple solutions to complex problems and anticipating potential issues.
Company Description
Unified marketing operations, analytics
and reporting solutions
Company website

Software Engineer

Freelance
2013 to June 2016
Montréal
Canada - Québec
  • Inspired by platform such as Dokeos and Chamilo, I created a learning management system (LMS) for music teachers. The platform allows the teachers to build their music courses online. Apart from features that we can find on most LMS (user management, document upload, assignment management and so on) the main differentiator of the platform is its ability to let the teachers create online music theory exercises.

    As an example, a teacher can create a quiz where the students need to write a given chord starting from a randomly selected starting note. He would have previously chosen the chords, the positions of the chords and the clefs for the quiz. The main challenge for such a feature resides in the fact that there are an infinite number of possible questions and in some context there can technically be an infinite number of correct answers to the same exact question. It makes it impossible to simply store questions and their respective answers to perform the live validation of the student answer. Instead, I created an algorithm that can generate the answer to any musical theory questions listed in the application which is then used to validate the input answer. As an end result, the teachers can create a wide variety of custom exercices.
  • The application was written in PHP with a javascript frontend and a MySQL database. Since I had no previous coding experience and I wanted to get a deep understanding of the languages I was learning, I voluntarily used as less external librairies and tools as possible, it’s not something that I would do today of course. Raphael.js to create a simple music editor, the Stripe SDK, jQuery and the WebAudioApi are tools that I haven’t been able to ignore.

Guitar Teacher

Freelance
Since 2000
Freelancer
Montréal
Canada - Québec
  • Private guitar lessons.