Jean Belanger (Industrial Physicist)
Summary
Mandate realized in the IT industry for the last 20 years cover a wide range of industrial settings.
Expertise
- Writing efficient code by using modern C++ features, and programming techniques
- Strong technical professional combining computer skills and scientific background
- Ability to analyze and synthesize large quantities of information (problem solver)
- Experienced in Object-Oriented architecture using design patterns to develop reusable component
- Experienced in physics-based simulation (numerical method and scientific library)
- High-level mathematical, engineering and scientific support to solve complex problems
Consultant Work
Elligno Inc (August 2023 – ongoing)
Title | Senior Scientific Programmer |
Project | DamBreak++ Application (Scientific Programming Environment) |
Technologies | Math3D, 3D programming (linear algebra 3D), Modern C++, real-time, high performance math libraries, Google Unit Test, bash scripting, numerical simulation |
Description | Elligno is a scientific consulting company (for small and large sized organizations) supporting companies in their project and business product development. |
Responsibilities | Responsible for the development of the DamBreak++, a programming environment aimed to understand physics via modern modeling techniques and using new software development paradigms. The software architecture features a layer of base abstraction that users can use to implement new algorithms quickly, accelerating the implementation of physical algorithms for testing and validating. In industrial applications it is not rare that we must modify or change algorithms for the sake of correction or improvements during the development or execution of a numerical simulation. I am currently working on the migration of the first prototype of the application to Modern C++17/20. Read more Main Tasks ■ Optimization technique that use fast-floating type for efficiency; ■ Software documentation (Use Cases, class diagrams, simulation results); ■ Developed new numerical algorithms to validate the design; ■ Write technical reports about the use of the new architecture; ■ Merged many versions of the prototype into one API; ■ Re-write some algorithm (pieces of code by using new features of C++17/20); ■ Developed a GUI to facilitate testing and visualizing simulation results; ■ Development of a Math3d library (environment to test 3D model, physics 3D); |
EA Vancouver B.C. (June 2022 – June 2023)
Title | Contractor Developer C++ |
Project | Large scale refactoring to allow the deprecation of older Math 3D libraries that are still supported in the code |
Technologies | Math3D, 3D programming (linear algebra 3D), Modern C++, real-time, high performance math libraries, Google Unit Test, bash scripting, large system, Clang AST tool |
Description | Electronic Arts Inc. is a leading global interactive entertainment software company. EA delivers games, content and online services for Internet-connected consoles, personal computers, mobile phones and tablets. |
Responsibilities | Member of the Core Systems Group (Foundation), multi-platform game development engine (Frostbite engine) The mathematical library is the heart of video games and is used by all components of the game (Animation, rendering, physics, camera, etc.). The project consists of restructuring the engine to allow the deprecation of obsolete 3D Math library still supported in the Core Engine System, rewriting some algorithms, convert math type from one Math API to another one and merging several versions (3 versions of the library were used by the distinct groups). This is a high-performance mathematical library that uses advanced template trickery for optimization. Converting, say, the Frostbite animation systems from one Math API to another is non-trivial. This project requires both advanced knowledge of programming, particularly in scientific programming, but a good knowledge of 3D mathematics (linear algebra): vector, quaternion, … Due to the large amount of code to be parsed, refactoring would be impossible with a traditional find-and-replace regexp. Automation was done by using Clang AST (Abstract Syntax Tree) tool (wrapped in python scripts). Refactoring was done in two phases: the first phase consists of running scripts replacing old types with new ones (renames types, function signature …). The second step is the difficult part, what was left out by the script. This task required digging into the code, finding bugs, and fixing them, also failures due to missing dependencies that are generated, validating result make sure nothing was broken and, finally test for different platforms (XBox, PS5, PC, …). Typical workflow ■ run Clang scripts on subsector of code base (analyze code) ■ fix functions call and types make it work in the new environment ■ address issues what was left out by the scripts (manual task … merge, name mangling, …missing dependencies) ■ run unit tests ■ check platforms compile ■ repeat until that area of the codebase is clean ■ code review |
Morgan Stanley (October 21 – March 22)
Title | Consultant Programmer |
Project | eFX Trading System |
Technologies | C++17, Boost unit test, real-time, SQL, bash scripting, large system |
Description | Morgan Stanley is a world leader in finance. Electronic system (eFX) developed to execute trades through a software system using the FIX (Finance Information Exchange) protocol. Brokers use this to fill orders and track the progress of each order throughout the system. |
Responsibilities | The application is being deprecated and will be replaced by a new re-designed with modern technologies. I was assigned to fix bugs to support the transition towards the latest version of the trading system. Work in a production environment with tied deadlines. ■ Bash scripting to test and validate fixes ■ Integrated new features (in the legacy code) requested by brokers ■ Code analysis (workflow) of a complex and large code base (no documentation) and minimal supervision ■ Perform unit test and system functional test |
Zimmer Biomet Inc. (March 20 – November 20)
Title | Consultant Programmer |
Project | Robotics application (health care) (ROSA release) |
Technologies | C++11, Qt, Qml, Boost unit test |
Description | The Company designs, develops, and markets medical software, instruments and computerized systems designed to help orthopedic surgeons increase accuracy in knee implant surgery. |
Responsibilities | Integrated the Core Technology group supporting the team in delivering the next generation of the major product ROSA. ■ GUI programming (add new functionnalities) ■ Bugs fix to support the major release of the main product ROSA; ■ Integrated Qt Internationalization package with Dynamic Translation ‘’handle Language Change’’ ■ Perform unit test and system functional test ■ Documentation and system test; |
OpenMindCapital Inc (February 2019 – February 2020)
Title | Scientific and Technical Consultant |
Project | Financial application (programming and simulation) |
Technologies | R, Java, MatLab, Java Swing UI, Git, NetBeans, algorithm development, RStudio |
Description | OpenMindCapital is a quantitative and technology driven portfolio manager. Company develops an application a risk management and simulation platform designed to assist in the construction of efficient portfolios. It is written in Java and provides UI modules for easy navigation and report creation. |
Responsibilities | I was responsible for technical aspects financial app this include support, maintenance and development of new functionalities. ■ Design, implementation and tests of algorithmic trading programs ■ Develop simple or complex software functionality but with limited scope ■ Collaborate with the team to define, design, and ship new features ■ Help maintain code quality, organization, documentation and automatization R package development Developed a library (package) written with R language to automate the creation of financial report. Goal was to provides a set of services that will help task of creating report.The package provides services to read data from simulation platform and put it in a format more easily manageable to compute, plot of statistical data. User can create a report with pre-defined set of functions to extract, visualize and make graphical output that can be inserted in a report. Programming (simulation platform) ■ Refactored the FTP library (simulation application): re-design new class to support multiple connection and data provider in more modularity approach; ■ UI programming to the main application (added new report functionalities to main app). Implemented new functionnalty in the report builder; Financial Algorithmic development ■ Implemented/Integrated a new algorithm that compute the rank of a stock portfolio (measuring portfolio performance); ■ shell cmd function to calculate some stock parameter value by simply writing functions … strategy ); |
Adetel Group Inc (April 2018 – February 2019)
Title | Programmer-Consultant |
Project | Major Porting/upgrade streaming engine (video surveillance) |
Technologies | C++, OO, real-time Boost, STL, GStreamer (video streaming) GNU library |
Description | MPM10 CCTV (Control Console Television Video) console a real-time complete video surveillance solution used by Montreal public transit transportation (STM). |
Responsibilities | Operators in the control room console can watch remotely constant stream of information from CCTV and surveillance cameras through access of the so-called NVR (“network video recorder”) and to be able to monitor, search, playback, camera viewer, remote live video, recording, and video file verification tool. To migrate (porting) the application to a newer version of GStreamer to fix issues addressed by the customer. GStreamer library (GNU) is an open source multimedia framework which provides services for editing, rendering video/audio content. Purpose of the migration (upgrade) was to support new type of cameras for new Azure vehicle cars they bought. Also, to fix issues addressed by STM with the original version of the application. ■ C/C++ programming in the GLib framework of GNome; ■ Perform Code analysis; ■ Script programming for install process; ■ Upgrade some external lib and drivers; ■ Programmed new features reuired by customer ■ Adapt code to support GStreamer newer version; ■ Fix issues and bugs,test and validate; ■ Planification (schedule) and workload estimate; |
Technology 20-20 (June 16 – Feb 17)
Title | Consultant Software Developer C++/3D |
Project | Virtual Reality prototype (IKEA VR Extract) |
Technologies | Boost, STL, 3D math (linear algebra), C++11/14, Autodesk FBX, algorithm programming |
Description | IKEA is evaluating bringing more realism in the interior design with the help virtual reality that will allow people to not only experience a full 360° view, but to also experience walking around the virtual models and feel measurement.See video on ’YouTube’.https://www.youtube.com/watch?v=1S0GO5kbMYo,https://www.youtube.com/watch?v=Figi0Wcz2oE |
Responsibilities | Currently developing a prototype to design kitchen using virtual reality technology to evaluate the feasibility of using virtual reality to achieve higher truly three-dimensional (3D) interior design of a kitchen.My mandate was to create an application that takes a 3D model in the proprietary format and convert it to Autodesk FBX format that can be visualized by a virtual reality engine such as UNREAL. The prototype was released in February 2017 in 3 different stores (Canada, Asia and Europe). Tasks ■ Extracted scene graph data model from proprietary format 3D environment information needed to reproduce the whole 3D environment (meshing with polygons) in the new FBX Autodesk format; ■ Developed a library for reading/writing 3D scene graph and convert to FBX; ■ Adapted algorithm for parsing scene graph; ■ Refactored some of the algorithm in a modular approach (API); |
CAE Inc. (Sept. 15 – April 16)
Title | System Software Engineer |
Projects | Modeling And Simulation of Electro-Optical Sensor Systems |
Technologies | C++, Boost, STL, Real-Time, Object-Oriented, Distributed System, Google unit test |
Description | CAE (www.cae.com) is a global leader in providing advanced simulation and controls equipment and integrated training solutions for customers in the civil aviation, military and marine markets.System Engineer in the Electro-Optics group to support the integration of new sensor models in the simulation environment designed for use in (UAS: Unnamed Aerospace System) training system. |
Responsibilities | My responsibilities include participation in the, contributions to software development, system simulation and analysis. ■ Integrate new sensor model in the programming simulation environment (OO framework); ■ Refactored packages for better integration to support new features of image sensor; ■ Perform unit test and system functional test; ■ Documentation and system test; |
Elligno Inc. (March 14 – August 15)
Title | Scientific Programmer |
Projects | Numerical simulation |
Technologies | OON, numerical simulation, C++11/14, Boost, STL, Qt, 3D Modeling (OpenGL), Google unit test, Matlab |
Description | Development of a physics library which is an object-oriented of Dam-Break solution algorithms written in C++ |
Responsibilities | DamBreak++ Physics SimulatorProject is based on an Object-Oriented framework with main objective is to provide a programming environment for the rapid prototyping of mathematical/physics based algorithm using classes at a high abstraction level. In many industrial project, physicist need to experiment, test different alternative and this kind of library is needed to facilitate and accelerate the prototyping phase for programming numerical physics based algorithm. ■ Rewrite some of the numerical algorithm using optimized data structure; ■ Re-factored simulation code and migrated prototype to C++11 to obtain a more scalable and maintainable new generation; ■ Validated the code by using known solution taken from literature; ■ Set up guidelines and policies for automation (unit testing, documentation); ■ Write technical report and make presentation of the software packages; ■ Development of a GUI to facilitate testing and visualizing simulation result; ■ Performed manual testing as needed, create test cases and defect recorded; ■ Design, develop, debugs, performance optimization, and integrate third party library; ■ Review, research, analyze, and evaluate new software techniques, tools for simulation; Technical Report“A C++ Differential Equation Solver using Object-Oriented Numeric” – J. Belanger, Elligno technical report no. TR1-2004-05 () |
Morgan Stanley (November 2012 – February 2014)
Title | Software System Engineer |
Projets (Mandats) | Financial application (trade-support) monitoring and supporting the technical and operational stability of the trading systems |
Technologies | Unix (IBM AIX), Perl, C++, SQL (Sybase), threading |
Description | Top US major bank investment |
Responsibilities | Member of trade-support group, provide real-time front trade-support working directly with the trading desks and operation team to understand and react to issues as they arise during the trading day. Participate to the development and maintenance of the group’s application stack (writing script to monitor, including database load, cache requests, server requests, and outgoing bandwidth). |
L3 MAPS (March 2012 – October 2012)
Title | Consultant-Programmer |
Project | Computer-generated real-time surgical simulation |
Technologies | C++, Sofa (physics library), 3D, algorithm development, real-time |
Description | L3 MAPPS is a leading global supplier of naval handling and visual landing aids systems, control and simulation solutions products. |
Responsibilities | Surgery simulator Virtual reality (Training System Simulation) is a networking client-server application (client collecting the data and sending to server to perform analysis by running algorithm (metrics). I was hired as a consultant to develop and implement data gathering algorithm library to provide objective metrics for assessing the technical skills of trainees. Alongside my main task, I supervised an employee (technical problems) and ensured that the project progressed according to schedule. I also participated in the development of the algorithm module (metrics). Library of validated metrics algorithms features, including the time needed to complete a task, errors, economy of motion, and psychomotor tracking, thus recording overall and task-specific scores for each student’s performance. ■ Technical support group members ■ Participated in design (architecture) of the module ■ Presentation on a weekly basis of the progress of the project ■ code review and documentation ■ Code optimization (performance) ■ Implemed a module for parsing “xml” document (reading/writing) ■ integration and validation test |
Elligno Inc (January 2008 – February 2012)
Title | Contractor |
Project | Migration, technical support and programming |
Technologies | Windows, Unix, C++, Object-Oriented, numerical simulation |
Description | Worked as independent contractor to provides services such as support, maintenance and programming |
Responsibilities | ■ Consultant for government agency (technical support for the network infrastructure) ■ Programmer on migration project and support a release product. ■ Ported an application (multi-threaded) from Windows platform to Unix AIX (IBM) ■ Analyst-Programmer C++ for an Air management Traffic System (bugs fix, software evaluation and recommendation) ■ Developed a physics library algorithms written in C++ ■ Implemented a math 3D library with main application in real-time physics modeling ■ Support a real-time Windows-based application that serves as a backbone in sawmill facility (Code optimization and solve performance issues) |
Les Entreprises Barrette Inc (September 2007 – June 2008)
Title | Software Developer |
Project | Defect tracking by image processing |
Technologies | C, C#, OO, real-time, .Net framework, Halcon image library, Numerical Recipes |
Description | Hardwood industry (Imagery defect tracking) |
Responsibilities | Developed an image processing algorithm using a third party library (Halcon) and .Net framework for a sawmill facility.Programs featured an algorithm and image concepts, defined as a sequence of instructions that operates on a set of input images, transforming that information into an output image that is of interest to the user.Implemented a numerical library for shape fitting algorithm using numerical recipes |
Hexagram (June 2006 – October 2006)
Title | Programmer |
Project | 3D software that helps art director in the creation of theatrical scenery |
Technologies | Qt, C++, OO, 3D (Open Inventor), OpenGL |
Description | Support on art director graphics product to solve quality issues and prepare the product for final release |
Responsibilities | written in C++ and Open Inventor3D programmingBugs fix |