I am currently looking for work!
Immensely curious computational chemist turned software developer. I am currently finishing my Masters' in dynamic languages interoperation. I mostly write Python, JavaScript, Scheme and C (roughly in that order).
My academic and work experience spans the stack from DevOps and sysadmin work (cloud and on-prem) to full-stack web apps to networking, medical imaging, web scraping, smart contracts, API reverse-engineering, compilers and interpreters, FFIs, computational chemistry, LLMs, microcontroller firmware, general/executive consulting, technical expert in litigation etc.
Most of my work is private and not available on this repo.
Happy member of the Mighty Gerbils 🐹
Je maîtrise le français et l'anglais. N'hésitez pas à entrer en contact dans l'une ou l'autre de ces langues!
marc-andre.belanger [-at-] umontreal.ca.
- B. Sc. in Chemistry, Université de Montréal
- M. Sc. in Computer Science, Université de Montréal (ongoing)
- Marc-André Bélanger and Marc Feeley, A Foreign Function Interface between Gambit Scheme and CPython. In Scheme Workshop (SW'22), September 2022. (pre-print)
- Marc-André Bélanger and Marc Feeley, A Scheme Foreign Function Interface to JavaScript Based on an Infix Extension. In European Lisp Symposium (ELS'21), May 2021.
- Ernzerhof, Matthias, M. Bélanger, Didier Mayou and Tahereh Nemati Aram. Simple model of a coherent molecular photocell. The Journal of chemical physics 144 13 (2016): 134102 .
- Marc-André Bélanger and Marc Feeley, Interfacing with CPython from Gambit Scheme. In 1st Languages, Architectures, and Tools for Heterogeneous Computing (LATHC) Workshop 2023, Februrary 2023
- Marc-André Bélanger and Marc Feeley, A lightweight approach for accessing Python modules from Gambit Scheme (Lightning Talk). In Scheme and Functional Programming Workshop (SFPW'21), August 2021.
-
2022–2025 | Freelancer
Worked on various contracts for clients involving web application development, web scraping, consulting, API reverse-engineering, data collection, analysis, and sanitization for SMBs.
-
2024 | LLM Optimization Lead – Early Stage Startup
Worked as a contractor on an LLM optimization and evaluation pipeline. Full-stack involvement from cutting-edge prompt engineering to computation graph optimizations to JITing prompt optimizers using meta-prompting techniques.
-
2023–2024 | Lecturer – Université de Montréal
Taught two introductory programming courses to hundreds of students. The courses used Python and the codeBoot environment, which I help build and maintain.
-
2014–2023 | Software Developer and Consultant – Imagerie des Pionniers
Built business-critical internal and customer-facing full-stack web apps for cloud and on-premise deployments. Acted as a consultant for stakeholders and decision-makers for procurement, strategy and litigation.
I have built:
- An issue tracking and ticketing system for internal use
- A DICOM image sharing portal for practicioners and patients
- A web-based appointment scheduler for patients handling over 20 000 appointments a year
- An SMS-based waiting room management system to contact patients just-in-time for their exam handling hundreds of patients daily for over 100 000 interactions per year
-
2016 | Technical Support Specialist / Software Developer – La Presse
Built Apple device monitoring and reporting system using Apple Profile Manager. Created dashboards for management and tech support using PowerBI. Provided general IT support in a high-volume media environment.
-
2013–2015 | Teaching Assistant – Université de Montréal
Assisted in teaching multiple undergraduate chemistry courses.
In no particular order or categorization.
-
codeBoot - Browser-based IDE for teaching programming
One of the main contributors to the project. I have worked on every part of the project, from the front-end to the compiler to the backend services (cloud and on-prem). I have used codeBoot to teach introductory programming courses at Université de Montréal.
-
BLINX - ESP32-based board for teaching programming
I am a co-founder of the company that markets and sells the BLINX hardware and software. BLINX is a small board used for teaching programming. It can be plugged into a USB port and programmed from the codeBoot environment. It accepts a multitude of Grove sensors. I wrote a high-performance firmware proof-of-concept using ESP-IDF as part of our R&D.
-
py2js – Python to JavaScript Compiler
Wrote a compiler targeting a subset of Python 3. Used in production as part of the codeBoot project, a web-based Python IDE for teaching.
-
pyinterp – CPS-Style Python Interpreter in Python
Implemented the FFI layer as well as Python builtins, critical to codeBoot’s backend. The FFI integrates ideas from my research into a production system.
-
codeBoot on Microcontrollers
Implemented WebSerial communication between codeBoot and MicroPython. Migrated legacy development environments to Docker for higher reliability and reproducibility. Handled firmware build automation and WebSocket bug fixes.
-
Implemented the Ribbit VM in Haskell. Built classical source-to-source transformations (e.g., closure conversion) into the compiler. Bootstrapped an x86-64 backend. Worked on porting Racket’s “sets-of-scopes” expander to Ribbit.
-
Extended Gambit’s infix reader for JavaScript and Python syntax. Built an interface between Gambit Scheme and CPython using the CPython C API. Built an interface between Gambit Scheme and JavaScript which you can try here (write
\alert("Hello!")
at the REPL). -
jsrna – JavaScript RNA Base Pair Annotation
Web-based RNA base-pair annotator/viewer, using a ResNet-based transfer learning model. Reformulated as a classification task (similar to MNIST). Novel, highly efficient and accurate method yet unpublished.
-
2023 DIRO Hackathon
Helped organize the Université de Montréal’s 2023 DIRO Hackathon. Participants built games using the codeBoot platform to run isomorphically on the browser and an ESP32-based board.
-
CLA – Article Reading Club
Organized a scientific article reading club for compiler and programming language theory groups. Also hosted a CTF for the group.
-
Ethereum transaction graph explorer
Back when these things were rare, I built an Ethereum transaction graph explorer using Neo4j. I used this to find evidence of wrongdoing in some personal investments. The chain doesn't lie.
-
Making EVM smart contracts lie
Wrote a PoC EVM smart contract on the testnet to exploit out-of-band problems on a major chain explorer which resulted in spoofed token metadata, misguiding potential investors.