en en en pt es en en en en cv en en en en en en en en en en en en en en en en en en en en en en en en ca es en es ne en en en en en en en en en fr en en en en en en fr en en es en en fr en en fr en en en en en fr en en en en en en en en fr en en en fr en en en en en fr en en id en en fr en en en en en en de en en en en en en en en en en en en en en zh nl en en en en en en en en en en en en en en it en en en en en en en pt en en en en en en en en en
My name is Maxime Chevalier-Boisvert. I completed a PhD degree with a concentration in compiler design at the Université de Montréal. My thesis was focused on Just-In-Time (JIT) machine code optimization techniques for dynamic programming languages (e.g.: JavaScript, Python, etc.). I’m also interested in programming language design, machine learning, 3D rendering, game development, music, sound synthesis, microcontrollers and electronics. This blog is an outlet for me to talk about my research, technological interests, hobbies and ideas. Most of my recent programming work is open source and available on GitHub.
Combating False Negatives in Adversarial Imitation Learning. Deep Reinforcement Learning Workshop at NeurIPS 2020.
DeepDrummer: Generating Drum Loops using Deep Learning and a Human in the Loop. Joint Conference on AI Music Creativity 2020.
Options of Interest: Temporal Abstraction with Interest Function. Association for the Advancement of Artificial Intelligence (AAAI) 2020.
BabyAI: First Steps Towards Grounded Language Learning With a Human In the Loop. International Conference on Learning Representations (ICLR) 2019.
The AI Driving Olympics at NeurIPS 2018. RSS Workshop on New Benchmarks, Metrics, and Competitions for Robotic Learning 2018.
Interprocedural Type Specialization of JavaScript Programs Without Type Analysis. European Conference on Object-Oriented Programming 2016.
On the Fly Type Specialization without Type Analysis. Chevalier-Boisvert, M.  PhD thesis. Université de Montréal. December 2015.
Simple and Effective Type Check Removal through Lazy Basic Block Versioning. European Conference on Object-Oriented Programming 2015.
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report. Dynamic Language Symposium 2011.
Optimizing MATLAB through just-in-time specialization. Compiler Construction 2010.
McVM: an optimizing virtual machine for the MATLAB programming language. Chevalier-Boisvert, M. Master’s thesis. McGill University. August 2009.
ZetaVM, a Platform for Programming Language Innovation. PolyConf. July 2017 (slides, video).
Interprocedural Type Specialization of JavaScript Programs Without Type Analysis. ECOOP. July 2016 (slides, video).
Simple and Effective Type Check Removal through Lazy Basic Block Versioning. ECOOP. July 2015 (slides, video, poster).
Lazy, Incremental JIT Compilation with Basic Block Versioning. Northeastern University. December 2014 (slides).
Refactoring JIT Compilation. DConf. May 2014 (slides, video).
Dynamic Languages need Dynamic Compilers. mloc.js. February 2014 (slides, video).
Fast and Dynamic. Strange Loop. September 2013 (slides, video).
Higgs, an Experimental JIT Compiler written in D. DConf. May 2013 (slides, video).
Higgs, a Monitoring JIT for JavaScript. Air Mozilla. February 2013 (slides, video).
since you work on compilers, thought you might find this article by Rob Pike to be of interest: http://www.informit.com/articles/article.aspx?p=1941206
“…I was pair programming with Ken Thompson on an on-the-fly compiler for..”
What features in Ruby/Python/Javascript are particularly bad for type inference?
Dynamic loading of code, unrestricted eval, dynamic addition and removal of object fields. The JavaScript “undefined” type and the lack of exceptions thrown on errors.
You might like to see:
I got a Google alert about your post yesterday and tweeted the link. Thanks for the writeup :)
Raul H Macias (@azulraul) permalink
Congrats on the JavaScript compiler work!
edward de jong permalink
Dear Maxime, i am working on a new deductive computer language that outputs to Adobe AiR and Javascript, so that the graphical interactive programs you write can run on 5 different platforms: Mac, Win, iOS, ANdroid, and Web browser. It has many innovative features (is mostly declarative). I will need a compiler writer soon enough, would like to discuss this project with you.
I’m not available at the moment as I already took a full-time job offer, but I’d be happy to give you compiler design advice if you need any. You can message me on twitter @Love2Code or on LinkedIn if you want to exchange contact information.
Hi Maxime. I just wanted to point out that your Gravatar profile is somewhat out of date: “Currently pursuing a Ph.D. degree”? :)
Thanks for pointing that out :)
Impressed with your Gradient project and work on artificial life in Javascript. Was trying to understand it at a deeper level but new to genetic algorithms, wondered if you had made a tutorial or blog post unpacking that project more deeply, showing how all the pieces fit together etc. Would be very helpful. Thanks
Hi Maxime, I am a new Bee in compiler design but I love it. How can i do something brilliant(higgs & zetaVM) like you in this field? Can you give me some advice or your email? Thank you sooooo much~
I would recommend that you start by learning as much as you can about compilers, virtual machines, assembly language, etc. You should know how to program in C/C++. Take compiler classes in university if you can, or watch online lectures from Stanford/MIT, many of them are on YouTube.
XX Files Radio permalink
We would love to invite you to be a guest on the XX Files radio show on CKUT 903FM (Montreal). but can not find your email address. The show is about technology from a feminist perspective. Please let us know if this would interest you and if so, how to reach out.
Hello there! You can reach me through LinkedIn.
I found the site through a random websearch and since I liked the content, I’ll be soon writing a fancy pants wget one liner. Is there any special meaning behind the name?
Yes of course, the name is a pun!
It’s a reference to wild pointers: https://www.geeksforgeeks.org/what-are-wild-pointers-how-can-we-avoid/
And also a reference to a controversial and raunchy adult entertainment franchise: https://en.wikipedia.org/wiki/Girls_Gone_Wild_(franchise)
Typed Shapes Paper Submitted | Pointers Gone Wild
Zeta’s JITterpreter | Pointers Gone Wild
Leave a Reply Cancel reply
Enter your comment here...
Fill in your details below or click an icon to log in:
Email (required) (Address never made public)
You are commenting using your WordPress.com account. ( Log Out /  Change )
You are commenting using your Twitter account. ( Log Out /  Change )
You are commenting using your Facebook account. ( Log Out /  Change )
Notify me of new comments via email.
Notify me of new posts via email.
Typed vs Untyped Virtual Machines
Minimalism in Programming Language Design
Democracy, Dictatorships and Access to Information
Code that Doesn’t Rot
The Internet Changed My Life
What’s Could You Use Tesla Bot For?
NoiseCraft: a Browser-Based Visual Programming Language for Sound & Music
Art Artificial Intelligence Artificial Life Assembly Biology Compilers Creativity D Language Electronics Future Game Development Genetic Algorithms Grad studies Graphics Higgs JavaScript Microcontrollers Microprocessors Music Programming Programming Languages Psychology Rant Robotics Tachyon Technology Uncategorized work x86 Zeta
Archives Select Month June 2022  (1) May 2022  (1) March 2022  (1) February 2022  (2) January 2022  (2) December 2021  (1) June 2021  (1) February 2021  (2) December 2020  (1) September 2020  (1) January 2020  (1) November 2019  (2) October 2019  (2) June 2019  (1) January 2019  (1) December 2018  (1) May 2018  (2) February 2018  (1) January 2018  (1) December 2017  (1) October 2017  (1) June 2017  (1) April 2017  (1) January 2017  (1) December 2016  (1) November 2016  (2) September 2016  (2) May 2016  (1) March 2016  (1) February 2016  (2) January 2016  (1) November 2015  (4) October 2015  (1) September 2015  (3) August 2015  (2) July 2015  (3) June 2015  (1) May 2015  (3) April 2015  (2) March 2015  (1) February 2015  (1) December 2014  (1) November 2014  (2) October 2014  (2) September 2014  (3) July 2014  (3) May 2014  (1) April 2014  (1) March 2014  (1) February 2014  (1) January 2014  (3) December 2013  (3) October 2013  (2) September 2013  (1) August 2013  (2) July 2013  (3) June 2013  (2) May 2013  (3) March 2013  (2) February 2013  (1) January 2013  (3) December 2012  (4) November 2012  (1) October 2012  (1) September 2012  (3) July 2012  (4) June 2012  (2) May 2012  (2) April 2012  (4) March 2012  (2) February 2012  (3) January 2012  (6) December 2011  (2) November 2011  (3) October 2011  (8) September 2011  (4) August 2011  (3)