{ "meta": { "theme": "kendall" }, "basics": { "name": "Bruno Pettersen-Coulombe", "shortname": "Bruno PC", "label": "Full stack Developer, B. Eng., Racing geek", "image": "https://avatars.githubusercontent.com/u/6451835?v=4", "email": "work@brunopc.net", "website": "https://brunopc.net", "summary": "My multi-faceted professional experience and my fast learning made me a profesionnal with great adaptability. World record holder, author, coach: I'm a scientific mind in an athlete body. Addicted to caffeine and challenges.", "location": { "city": "Montreal", "countryCode": "CA" }, "profiles": [ { "network": "github", "username": "brunopc-net", "url": "https://github.com/brunopc-net" }, { "network": "linkedin", "username": "brunopc", "url": "https://www.linkedin.com/in/brunopc/" }, { "network": "twitter", "username": "brunopc_net", "url": "https://twitter.com/brunopc_net/" } ] }, "languages": [ { "language": "French", "fluency": "Native speaker" }, { "language": "English", "fluency": "Full professional proficiency" }, { "language": "Spanish", "fluency": "Elementary proficiency" } ], "work": [ { "name": "National Bank of Canada", "type": "mandate", "employer": "Levio", "employerUrl": "https://levio.ca/", "url": "https://www.nbc.ca/", "position": "SDET Analyst", "startDate": "2023-04", "endDate": "2023-06", "summary": "This mandate consisted of analyzing the efficiency of the team and proposing solutions to improve the speed of work. In particular, the potential gains of test automation was studied.", "highlights": [ "Tested new AWS microservices to ensure compliance with legacy system", "Interviewd developers and testers to fully understand their tasks, challenges and slowdowns", "Analyzed bottlenecks, project context and automation costs", "Delivered a factual analysis on test automation relevance" ] }, { "name": "National Bank of Canada", "url": "https://www.nbc.ca/", "type": "mandate", "employer": "Levio", "employerUrl": "https://levio.ca/", "position": "SDET Technical Lead", "startDate": "2022-08", "endDate": "2023-03", "summary": "Building a new testing framework from scratch for the Swift payment infrastructure.", "highlights": [ "Reduced the number of lines of code by 85% compared to legacy framework", "Separated the test framework into several JAR deployed in Nexus: an API client for the main application (APS) and a payment injector to push payments in APS via Kafka Queues", "Refactored the code using Unirest, Lombok, Jackson, Prowide Software libraries (Prowide core and Prowide ISO 2022), object inheritance, dependency injection, and Gherkin", "Implemented Fail-fast principle and detailled logs", "Trained 30 people within the SDET team via 7 presentations on the new test architecture" ] }, { "name": "National Bank of Canada", "url": "https://www.nbc.ca/", "type": "mandate", "employer": "Levio", "employerUrl": "https://levio.ca/", "position": "SDET Developer", "startDate": "2022-03", "endDate": "2022-07", "summary": "Test automation for the Bankmate service, a Swift MT to MX(XML) format converter.", "highlights": [ "Developed about 30 different tests to validate the behavior of Bankmate", "Revised existing Bankmate test code to eliminate code duplication", "Rewrited Bankmate legacy tests using Gherkin structure", "Assisted my colleagues on the technical side" ] }, { "name": "National Bank of Canada", "url": "https://www.nbc.ca/", "type": "mandate", "employer": "Levio", "employerUrl": "https://levio.ca/", "position": "QA Developer", "startDate": "2020-10", "endDate": "2022-02", "summary": "Test automation for the ICOP application and microservices", "highlights": [ "Upgraded the test velocity from 1 manual test/hour to 400 tests/hour", "Developed ~120 automated tests for the ICOP application using the Selenium library", "Developed ~60 automated tests for ICOP microservices (ISRPB/IIAPB/CAOPB) via Rest Assured", "Set up 4 Jenkins pipelines for the execution of the automated tests", "Documented pipeline execution, code structure and maintenance guidance", "Trained new employees on National Bank's Test Automation Framework" ] }, { "name": "Société Générale", "url": "https://www.societegenerale.com/", "type": "permanent", "position": "DevOps Developer", "startDate": "2019-01", "endDate": "2020-09", "summary": "Having worked on the production support as a Application support Analyst and automated a lot of things there, I was recruted as a DevOps Developer as a full time intern employee.", "highlights": [ "Refactored the Eztops to GMI accounting service, with monitoring and automated alerts", "Deployed and configured of an ELK-based monitoring solution for 2,000 Autosys processes", "Developed Powershell scripts to communicate between APIs (Elasticsearch and Autosys)", "Managed deployments", "Writed dynamic documentation scripts (Do-nothing scripts) to improve bug investigation time" ] }, { "name": "Société Générale", "url": "https://www.societegenerale.com/", "type": "mandate", "employer": "CGI", "employerUrl": "https://www.cgi.com/", "position": "Application Support Analyst", "startDate": "2016-08", "endDate": "2018-12", "summary": "My first mandate after graduation to support several global finance applications. Lots of low-hanging fruits so having a development background, I took the opportunity to improve things.", "highlights": [ "Reduced code/repos for financial reports production from 20 to 1 by developing a configurable, automated report producer using Groovy and Autosys scheduler", "Configured and deployed a software and pod monitoring solution based on ELK", "Planned the migration from the OnPrem Newtops to the Cloud based, modernized Eztops", "Automated manual daily monitoring checks and alerts (by email)", "Developed bash scripts to automate fixes for recurring operations failure", "Supported production operations" ] }, { "name": "Constellio", "position": "Developer", "type": "internship", "url": "https://www.constellio.com/", "startDate": "2014-09", "endDate": "2015-04", "summary": "Constellio was a small business (growned and sold since) with a clientele that was mainly governmental. I built out a modular JavaScript web client for their flagship product.", "highlights": [ "Deployed on the Government du Québec website, sucessfully handling 100,000 requests/day", "Developed unit and integration tests for their product, using Mockito and JUnit" ] }, { "name": "Equisoft", "type": "internship", "position": "Junior Developer", "url": "https://www.equisoft.com/", "startDate": "2013-01", "endDate": "2013-05", "summary": "Implemented Entity framework on their subscription management software.", "highlights": [ "First experience as a professional software developer" ] }, { "name": "Solutions Technologies", "type": "freelance", "position": "Web Developer", "url": "https://www.stinfo.ca/", "startDate": "2014-04", "endDate": "2014-05", "summary": "Following a loss of code following a virus, Solutions Technologies contacted me to restore their tailor-made and configurable e-commerce shopping cart module for their various customers.", "highlights": [ "Developed the backend of a modular e-commerce shopping cart based on Magento" ] }, { "name": "Vice Longboards", "type": "freelance", "position": "Web Developer", "startDate": "2013-08", "endDate": "2013-12", "summary": "The small longboard manufacturing company asked me to create their portfolio website", "highlights": [ "Applied learnings from GTI350-Design and evaluation of graphic user interfaces" ] }, { "name": "FJB Casting", "url": "https://fjbcasting.ca/", "type": "freelance", "position": "Web Developer", "startDate": "2011-09", "endDate": "2011-10", "summary": "FJB casting needed a module for uploading and cropping photos of models for her bank of extras. The extras could then manage their images themselves on the Figuration Julie Breton website, a task that was cumbersome for the owner of the company.", "highlights": [ "Integration of a cropping module and image upload in PHP/Javascript" ] }, { "name": "Heritage Software Inc.", "type": "freelance", "position": "Web Developer", "startDate": "2011-05", "endDate": "2011-05", "summary": "Heritage Software needed a drag-and-drop file upload module for their website.", "highlights": [ "Integrated a file upload module in PHP/Javascript" ] }, { "name": "Les 2 Photographes", "url": "https://www.les2photographes.com/", "type": "freelance", "position": "Web Developer", "startDate": "2009-02", "endDate": "2009-05", "summary": "A graphic designer approached me after having accepted a mandate beyond his competence. The goal being to deliver a transactional photographs website. I was proud to have been able to deliver the mandate on time despite the end of the school semester and very tight schedule.", "highlights": [ "Built a recursive algorithm to display available images on the website", "Automated the production of image snippets with watermarks to display available images", "Secured the full size images so that they were inaccessible to the public", "Automated the payment via PayPal API", "Automated email sending with attached full size images once payment was made" ] }, { "name": "CADS Informatique", "url": "https://cadsinformatique.com/", "type": "internship", "position": "Web Developer", "startDate": "2010-01", "endDate": "2010-05", "summary": "First professional mandate (intership) which was an opportunity for me to gain experience in a direct relationship with various clients. I gained experience with both front-end and back-end.", "highlights": [ "Redesigned a citizen news website based on Wordpress", "Built a custom CMS", "Designed a website for an elderly residence" ] } ], "education": [ { "institution": "École de technologie supérieure", "url": "https://www.etsmtl.ca/", "area": "Entrepreneurship", "studyType": "Minor", "startDate": "2014-01", "endDate": "2016-08", "courses": [ "ENT201 - Business financial management", "ENT202 - Introduction to entrepreneurship", "ENT601 - Marketing and sales", "ENT602 - Company management" ] }, { "institution": "École de technologie supérieure", "url": "https://www.etsmtl.ca/", "area": "Software Engineering", "studyType": "Bachelor", "startDate": "2010-09", "endDate": "2016-08", "courses": [ "LOG120 - Software Design", "LOG210 - Object-Oriented Design", "LOG240 - Conception et évaluation des interfaces utilisateurs", "LOG320 - Data structures and Algorithms", "LOG330 - Software Quality Assurance", "LOG410 - Needs analysis and specifications", "LOG430 - Software Architechture", "LOG515 - project management", "LOG530 - Software re-engineering", "LOG635 - Artificial Intelligence Algorithms", "LOG645 - Parrallel Computing", "LOG660 - High performance Databases", "LOG735 - Distributed Systems", "LOG791 - Special projects", "LOG792 - Graduation project in software engineering", "GTI350 - Design and evaluation of graphic user interfaces (GUI)", "GTI610 - Telecommunication networks", "GTI619 - System Security", "CHM131 - Chemistry and materials", "ING150 - Static and Dynamic Physics", "ING160 - Thermodynamics and Fluid mechanics", "PHY332 - Electricity and Magnetism", "PHY335 - Physics of electromagnetic waves", "MAT145 - Differential and integral calculus", "MAT210 - Logic and discrete mathematics", "MAT265 - Differential equations", "MAT350 - Probability and statistics", "MAT472 - Linear algebra and space geometry", "COM110 - Communication methods", "GIA400 - Project profitability analysis", "TIN501 - Environment, technology and society" ] }, { "institution": "Cégep André-Laurendeau", "url": "https://claurendeau.qc.ca/", "endDate": "2010-05", "startDate": "2007-08", "area": "Computer Science", "studyType": "DEC", "courses": [ "201-420-AL - Mathematics and Computer Science", "420-102-AL - Algorithms and programming I", "420-111-AL - Computers and technical support", "420-121-AL - Internet and multimedia", "420-201-AL - Algorithms and programming II", "420-211-AL - Operating systems", "420-221-AL - Web Apps I", "420-301-AL - Object Oriented Design and Programming I", "420-311-AL - Network architecture", "420-321-AL - Web Apps II", "420-331-AL - Systems modeling and UML", "201-421-AL - Statistics", "420-401-AL - Object Oriented Design and Programming II", "420-411-AL - Internet Services and Security", "420-431-AL - Implementation of databases", "401-420-AL - Enterprise Computer Systems", "420-501-AL - Programming user interfaces", "420-502-AL - Quality Assurance and Maintenance", "420-521-AL - Multi-Tier Application Project", "420-531-AL - Integrated Database Tools I", "420-631-AL - Integrated Database Tools II" ] } ], "certificates": [ { "name": "AWS Certified Cloud Practitioner", "issuer": "Amazon Web Services Training and Certification", "url": "https://aws.amazon.com/certification/exams/", "date": "2023-11-05", "id": "e7283417-5935-4b11-b498-53169f85a385" }, { "name": "Start with React", "issuer": "OpenClassroom", "url": "https://openclassrooms.com/fr/courses/7008001-debutez-avec-react", "date": "2023-07-21" }, { "name": "Create a Java Application with Spring Boot", "issuer": "OpenClassroom", "url": "https://openclassrooms.com/fr/courses/6900101-creez-une-application-java-avec-spring-boot", "date": "2023-07-05" }, { "name": "Jenkins, From Zero To Hero: Become a DevOps Jenkins Master", "issuer": "Udemy", "url": "https://www.udemy.com/course/jenkins-from-zero-to-hero/", "date": "2021-01-29", "id": "UC-f5f51268-7bf8-4856-aca7-b72cfe46810e" }, { "name": "Ansible for the absolute Beginner - Hands-On - DevOps", "issuer": "Udemy", "url": "https://www.udemy.com/course/learn-ansible/", "date": "2020-06-02", "id": "UC-6a8d8088-b7d3-4070-a43a-ffb14f2e4b34" }, { "name": "Learn DevOps: Infrastructure Automation With Terraform", "issuer": "Udemy", "url": "https://www.udemy.com/course/learn-devops-infrastructure-automation-with-terraform/", "completion": "60%" }, { "name": "Docker Mastery: with Kubernetes +Swarm from a Docker Captain", "issuer": "Udemy", "url": "https://www.udemy.com/course/docker-mastery/", "completion": "54%" }, { "name": "Amazon Web Services (AWS) Certified - 4 Certifications!", "issuer": "Udemy", "url": "https://www.udemy.com/course/aws-certified-associate-architect-developer-sysops-admin/", "completion": "45%" } ], "skills": [ { "name": "Backend", "level": "Senior", "keywords": [ "API REST", "API SOAP", "Java", "Spring Boot", "Javascript", "Node.js", "Express", "Python", "PHP" ] }, { "name": "Frontend", "level": "Intermediate", "keywords": [ "React", "JQuery", "HTML" ] }, { "name": "DevOps", "level": "Intermediate", "keywords": [ "Deployment optimisation", "CI/CD", "Jenkins", "GitHub Actions", "Docker", "ELK Stack" ] }, { "name": "Databases", "level": "Intermediate", "keywords": [ "Redis", "NoSQL", "SQL Server", "Oracle", "PostgreSQL", "MariaDB/MySQL" ] }, { "name": "Scripting", "level": "Intermediate", "keywords": [ "Bash", "Groovy", "Powershell" ] }, { "name": "SDET/QA", "level": "Senior", "keywords": [ "Gherkin", "Rest Assured", "Selenium", "HtmlUnit", "Mockito", "Spock", "JUnit", "PHPUnit", "Xray" ] }, { "name": "Tools", "keywords": [ "IntelliJ", "PyCharm", "WebStorm", "Visual Studio Code", "Visual Studio", "Eclipse", "Git", "Bitbucket", "Jira", "Maven", "Gradle", "Nexus", "Swagger" ] } ], "interests": [ { "name": "Racing", "keywords": [ "Karting", "Cycling", "Speed Skating" ] }, { "name": "Coaching" } ], "references": [ { "name": "Ali Boutaba, Team Manager, Société Générale", "reference": "Bruno was very good at planning and implementing improvements based on real data. His pragmatism led to realistic goals, which led to mesurable results. He his a great asset for any team leader that needs guidance and arguments that helps to manage the project budjet." }, { "name": "Pierre Bélanger, Entrepreneurship Teacher, ÉTS", "reference": "I'm thrilled to testify favorably on Mr. Pettersen's behalf. Bruno has been an active and invested participant in the entrepreneurship program, both in class and in the practical work where students are involved in influencing the content taught according to the needs of student entrepreneurs. Bruno demonstrated an interest in entrepreneurship that the whole class could benefit from during the discussions on different business scenarios. He also demonstrated an obvious curiosity towards the tools of entrepreneurship and a strong desire to master their operation. It is therefore with pleasure that I refer Mr. Pettersen to any company." }, { "name": "Nicolas Belisle, VP Technology, Constellio", "reference": "Bruno brilliantly overhauled the interface of the official search engine of the Government of Quebec during his internship at Constellio. The engine, which receives several million searches, had a flexible interface technology, but it was complex to integrate and limited response times. Bruno designed the new interface based on the latest generation technologies (Ajax/jQuery). The work done was a success! I would like to highlight the initiative, the concern for continuous improvement and the autonomy demonstrated by Bruno. It is a real pleasure to work with him!" }, { "name": "Louis Parent, Finance Teacher, ÉTS", "reference": "Bruno was one of the brightest student I have had. He has great understanding of Financial Theory!" } ] }