Loading...
Loading...
hacking on dynamically typed languages
Coding for 13 years.
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.
2022–2025 | Software consultant
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 an R&D contractor for a generative AI PaaS on LLM-based workflow optimization and evaluation. Full-stack involvement from cutting-edge prompt engineering to computation graph optimizations to JITing prompt optimizers using meta-prompting agentic techniques with DSPy and TextGrad.
2023–2024 | Lecturer – Université de Montréal
I taught two introductory programming courses to hundreds of students. The course uses Python and the codeBoot environment, which I help build and maintain. I managed around 15 TAs for grading, assignment and lab hours. My teaching was highly rated by students.
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 and maintained:
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
I was a teaching assitant for multiple undergraduate chemistry courses (general chemistry, physical chemistry, inorganic chemistry). My work was highly rated by students and innovative for the time, providing extensive course notes, interactive presentations using electronics structure calculations and other software for the benefit of the students.
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.
See pyinterp below for details on the codeBoot Python <-> JavaScript FFI.
jsrna – JavaScript RNA Base Pair Annotation
Web-based RNA base-pair annotator/viewer written in JavaScript. Also created a novel annotation method using a ResNet-based transfer learning model. I reformulated base-pair annotation as a classification task (similar to MNIST) using a canonicalized projection method to create an alphabet. Novel, highly efficient and accurate method yet unpublished.
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. The FFI allows users to seamlessly import and use JavaScript libraries from Python code. This requires careful grammar, tokenizer and parser extensions along with a well designed runtime to preserve the illusion of writing pure Python code.
Try the FFI at https://codeboot.org by executing \alert("Hello!") at the REPL.
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. Deep Wireshark sessions to debug a microcontroller WebSocket implementation.
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).
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.
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.
Contribution Graph
Activity Timeline
Commits and contributions grouped by day, week, or month.