Erick Lavoie

Ph.D in Computer Science (2019) advised by Laurie Hendren (1958-2019)

curriculum vitae

I want to empower individuals, communities, and organizations (businesses, non-profits, and governments) with peer-to-peer tools that leverage resources they already own but may not use to their full potential.

Current Projects

I am currently helping to bootstrap the Secure-Scuttlebutt community and peer-to-peer protocols.

Past Projects

Pando (PhD)

Pando is a tool for personal volunteer computing that enables programmers from the general public, including scientists and engineers, to use their personal devices and those of their friends to collaboratively map a function on a stream of inputs.

Pando is easier to deploy than BOINC for smaller projects: the master process can run on user hardware and all workers are dynamically opened in participating devices' browsers with no prior installation. Pando has been tested in local area networks with a dozen of personal devices (including smartphones), on Grid5000 with hundreds of cores, and Europe-wide PlanetLab nodes connected over WebRTC. Interestingly, in many cases, a collection of older personal devices provided similar performance as more recent devices or server nodes (running the same unspecialized code): users therefore have an incentive to use all their personal devices and the other machines they have access to before renting distant resources.

Pando should be accessible to a large majority of programmers: it abstracts the complexity of distribution with a fault-tolerant declarative concurrent programming model; it is usable in Unix pipelines; and it transparently supports user-defined processing functions that leverage existing JavaScript libraries.

Pando's StreamLender, and Limiter core abstractions are clearly described in my dissertation to make them easier to reimplement in other programming environments that support higher-order functions. The design of Pando should therefore be resilient to the quick evolution of Web technologies.

Publications

Proceedings papers

Erick Lavoie, Laurie Hendren, Frederic Desprez, Miguel Correia
"Pando: Personal Volunteer Computing in Browsers"
Middleware. Davis, California, US. December, 2019. (to appear)
Paper: [Arxiv]

Dominic Tarr, Erick Lavoie, Aljoscha Meyer, Christian Tschudin
"Secure Scuttlebutt: An Identity-Centric Protocol for Subjective and Decentralized Applications"
Information-Centric Networking (ICN). Macao, China. September, 2019.
Paper: [ICN (Open Access)]

Erick Lavoie, Laurie Hendren, Frederic Desprez, Miguel Correia
"Genet: A Quickly Scalable Fat-Tree Overlay for Personal Volunteer Computing using WebRTC"
Self-Adaptive and Self-Organizing Systems (SASO). Umea, Sweden. June, 2019.
Paper: [Arxiv][DOI]

Erick Lavoie, Laurie Hendren
"Personal Volunteer Computing"
Computing Frontiers (CF). Alghero, Sardinia, Italy. May, 2019.
Paper: [Arxiv][DOI]
Slides: [pdf]

David Herrera, Hanfeng Chen, Erick Lavoie, Laurie Hendren
"Numerical computing on the web: benchmarking for the future"
Dynamic Language Symposium (DLS). Boston, MA. USA. November, 2018.
Paper: [pdf]
Wu-Wei Tool: [github]

Erick Lavoie, Miguel Correia, Laurie Hendren
"Xor-overlay Topology Management Beyond Kademlia"
Self-Adaptive and Self-Organizing Systems (SASO). Tucson, AZ, USA. September, 2017.
Paper: [pdf]

Hanfeng Chen, Alexander Krolik, Erick Lavoie, Laurie Hendren
"Automatic Vectorization for MATLAB"
International Workshop on Languages and Compilers for Parallel Computing. Texas A\&M University, College Station, Texas, USA. October, 2017.
Paper: [pdf]
Experiments: [github]

Faiz Khan, Vincent Foley-Bourgon, Sujay Kathrotia, Erick Lavoie, and Laurie Hendren
"Using JavaScript and WebCL for Numerical Computations: A Comparative Study of Native and Web Technologies"
Dynamic Language Symposium (DLS). Portland, Oregon. USA. October, 2014.
Paper: [pdf]
Source Code: [github]

Erick Lavoie, Bruno Dufour, and Marc Feeley
"Portable and Efficient Run-time Monitoring of JavaScript Applications Using Virtual Machine Layering"
European Conference on Object-Oriented Programming (ECOOP). Uppsala, Sweden. August, 2014.
Paper: [pdf]
Source Code: [github]

Maxime Chevalier-Boisvert, Erick Lavoie, Marc Feeley and Bruno Dufour.
"Bootstrapping a Self-Hosted Research Virtual Machine for JavaScript - An Experience Report."
Dynamic Language Symposium (DLS). Portland, Oregon. USA. October, 2011.
Paper: [pdf]
Source Code: [github]

Grégoire Mesnil, Yann Dauphin, Xavier Glorot, Salah Rifai, Yoshua Bengio, Ian Goodfellow, Erick Lavoie, Xavier Muller, Guillaume Desjardins, David Warde-Farley, Pascal Vincent, Aaron Courville and James Bergstra.
"Unsupervised and Transfer Learning Challenge: a Deep Learning approach."
JMLR W\& CP: Proceedings of the Unsupervised and Transfer Learning challenge and workshop. Bellevue, Washington. USA. 2011. pages 97-110.
Paper: [pdf]

Workshop papers

Peer-reviewed but unpublished

Erick Lavoie, Bruno Dufour and Marc Feeley. "Metacircular Virtual Machine Layering for Run-Time Instrumentation" Runtime Environments, Systems, Layering and Virtualized Environments (RESoLVE). Houston, Texas. USA. March, 2013.
Slides: [pdf]

Dissertations

"Personal Volunteer Computing"
Ph.D Dissertation. McGill University. 2019.
[pdf]

"Harnessing performance for flexibility in instrumenting a virtual machine for JavaScript through metacircularity."
Master Dissertation. Université de Montréal. 2012.
[pdf]

Talks

The SAFE Network from First Principles
YouTube Videos: [playlist]
"1. XOR Distance Metric and Basic Routing". McLab Seminars. McGill University, Montreal, October 2014.
Slides: [pdf]

"In Praise of Metacircular Virtual Machine Layering."
Mozilla Corp.San Francisco, California. USA. 2013-02-01.
Principles Of Programming Languages, Student Session's Short Talk (POPL). Rome, Italy. 2013.
The SIGPLAN Programming Language Mentoring Workshop, One Minute Madness (PLMW, co-located with POPL 2013) Rome, Italy. 2013.
Slides: 1min [pdf] 10min [pdf] 30min [pdf][video]

Teaching

Teaching Assistant, COMP 621: Program Analysis and Transformations, McGill University, Fall 2015

Teaching Assistant, IFT3065/IFT6232: Compilers and Programming Languages, Université de Montréal, Winter 2012