2018 -
2019
Profile
Jean-Philippe Boivin
B. Ing, M. Sc.
Name:Jean-Philippe Boivin
Date of birth:August, 1994
Address:Montréal, QC, Canada
Email:contact@jpboivin.me
Website:https://jpboivin.me/
Education
2013 -
2017
Baccalaureate in Computer Engineering
Université de Sherbrooke, QC, Canada
2011 -
2013
Diploma of Collegial Studies in Mathematics...
Collège Bois-de-Boulogne, QC, Canada
Professional Experience
06.2022 -
present
Ubisoft Montreal – Multiplayer
Technical Lead
2019 -
05.2022
Ubisoft Montreal – Multiplayer
Network Programmer
2015 -
2019
Ubisoft Montreal – Storm Multiplayer Engine
Intern — Generalist Programmer
- Redesigned the protocol stack
- Developed a video chat system
- Video capture and rendering
- Conversion between image formats (sometimes using the libyuv library, the Accelerate framework or SSE2/AVX2 intrinsics)
- Bilinear downscaler using OpenMP
- Encoding and decoding of the video stream to transmit it over a network
- Cross-platform: Windows, macOS, iOS, Android, PlayStation 4, Xbox One
- Developed features for the engine’s voice chat
- Audio capture module for macOS and iOS
- Audio capture and playback modules for Stadia
- Speech synthesis (text-to-speech) module for Windows, PlayStation 4 and Stadia
- Speech recognition (speech-to-text) module for Stadia
- Developed a .NET wrapper (C#) for the Storm SDK (C++)
- Developed a sample game and companion using Storm.NET and Unity3D
- Cross-platform: Windows, macOS, iOS, Android, PlayStation 4, Xbox One
- Ported the 2D rendering library to Vulkan for Stadia
Note. I worked in the Storm team for 12 months during my bachelor degree (3 internships of 4 months each) and 4 months during my master degree (1 internship).
2014 -
2015
Ubisoft Montreal – Quazal Rendez-Vous
Intern — Generalist Programmer
- Developed a REST API (Platform as a Service) for Rendez-Vous
- Developed new features and APIs (history, login, etc)
- Integrated the encryption keys obtention through a secured API (RSA, AES, X.509 certificates)
- Deployed and tested the web service in several environments
- Developed a distributed architecture for online services (Quazal Rendez-Vous)
- Added the registration of nodes in Zookeeper
Note. I worked in the Rendez-Vous team for 8 months during my bachelor degree (2 internships of 4 months each).
2012 -
2013
Fluential Inc.
Programmer
- Developed the dialog manager engine with other developers
- Documented a solution for a centralized database (using Amazon S3)
- Designed and integrated a binary file format to package the engine data
- Ported and integrated Python scripts in the C++ engine (stemmer, spell checker, etc.)
- Developed some base modules (logging, configuration, threading, etc)
- Developed an object-oriented wrapper over the SQLite C library
Note. I worked at Fluential for 12 non-consecutive months.
Educational Projects
01.2018 -
04.2018
Interconnected smoke detectors
Université de Sherbrooke, QC, Canada
- Developed in C++1z (w/ CMake)
- Master-nodes architecture running on rPI (using MQ-2 and MQ-9 sensors)
- Discovery protocol using UDP (Networking TS)
- Auto-configuration of nodes using TLS (LibreSSL w/ kqueue and epoll)
- Periodic sensor’s data transmission and commands transmission using MQTT (mosquitto)
- Read about the solution here: Détection intelligente de la fumée
05.2018 -
08.2018
Digital image processing
Université de Sherbrooke, QC, Canada
- Implemented multiple digital image processing algorithms
- Used Intel intrinsics to speed-up the algorithms (SSE, SSE2 and SSE4.1)
- Algorithms: grayscale, sepia, gaussian blur
09.2018 -
12.2018
Ambient Intelligence Lab
Université de Sherbrooke, QC, Canada
- Security management of Hope BigData Platform
Check the project official website for more information about AmI Lab.
01.2017 -
12.2017
Mobile applications for restaurants
Université de Sherbrooke, QC, Canada (for Cluster Systems, Inc.)
- Developed in C# using Xamarin (worked mainly on the architecture and iOS)
- View on the App Store
- View on the Play Store
05.2016 -
08.2016
Web-based version control repository
Université de Sherbrooke, QC, Canada
- Developed in Java using GWT and GWTP
- Supporting Git repositories using JGit and Gitolite
09.2014 -
12.2014
Networked Laser Tag game
Université de Sherbrooke, QC, Canada
- Developed in Java using Apache Tomcat for the web interface
- Client-server architecture using UDP
- Streaming of the player’s camera on the web interface using VLC
- SQLite database for tracking scores of previous games
01.2013 -
04.2013
Role-playing game w/ online features
Collège Bois-de-Boulogne, QC, Canada
- Developed in Java using Swing for the graphical interface (2D)
- Client-server architecture using TCP
- Basic key-exchange using RSA to encrypt the password
Personal Projects
2016 -
2016
Grand Theft Auto: Vice City – Unity3D Port
- Developed parsers for Vice City file formats (COL, IDE, IPL, IMG, ADF, SFX, etc)
- Developed importers for Vice City models (DFF) and animations (IFP)
- Developed importer for Vice City metadata (gta_vc.dat) – loading the whole world inside Unity3D
Note. This project is incomplete. When it was stopped, the map was imported, cars could be imported (no wheels) and characters could be imported (animations working, but not when moving).
2011 -
2014
SqueezeIt – File Archiver
- Developed a prototype in C++/CLI using Windows Forms
- Plugins architecture to support multiple formats
- Supporting BAR archives and BZip2 archives
- Developed a basic version in C++ using Qt4 (and Qt5)
- Plugins architecture to support multiple formats
- Supporting BAR archives
- Supporting most archive formats by using libarchive
- Developed a custom archive format (Boivin ARchive — BAR)
2008 -
2012
Conquer Online 2.0 – Server Emulator
- Developed a server emulator for Conquer Online 2.0 (MMORPG)
- Multiple emulators in C# over the years, one basic emulator in C++ using Qt4
- Client-server topology over TCP/IP
- MySQL database used by some emulators
- Developed a server emulator for the AutoPatch of Conquer Online 2.0
- Developed in C++ using Qt4
- Client-server topology over TCP/IP
- Developed multiple tools (mostly in C#, one ported to C++)
- Tool to unpack/pack custom archive formats used by the game
- Tool to edit the list of maps used by the game
- Tool to encrypt/decrypt protected files used by the game
- Implemented multiple ciphers and algorithms used by the game (in C# and C++)
- Custom XOR cipher (network) — also implemented using SSE2 and AVX2
- Blowfish
- CAST-128
- RC5
- Diffie-Hellman key exchange