Hey there! I'm Joe L., an IB diploma student from Vancouver, Canada, and incoming CS undergrad @ UWaterloo.
If you're reading this introduction, you likely know me in real life (in which case, hello!) or from the YAGPDB project, where I am an administrator and open-source contributor.
Nowadays, I primarily work with Rust and Go on backend projects, but I also have experience in Python, TypeScript, Java, and C++, among other technologies.
My main interest these days lies in static analysis (and, more broadly, the implementation of programming languages and supporting tooling.) I am currently working on a language server for YAGPDB templates, which implements a handwritten, error-resilient parser that produces a lossless CST with rowan; scope resolution; and a dynamic type checker.
In the past, I implemented multiple language features in YAGPDB's production templating engine and wrote an interpreter for my own toy language, Rocket.
I am also a regular contributor to the YAGPDB project in general, helping to refactor legacy code, implement new features and bugfixes, and write user documentation.
Previously, I worked on:
- vsHacks: An annual hackathon organized by my programming club and others across the Greater Vancouver area — the first of its kind organized by Vancouver high school students, for Vancouver high school students. I contributed extensively to the hackathon website and helped run workshops during the event.
- obscenity: A robust profanity detection library for Node.js, written in TypeScript. It implements a extensible transformer-based design and is thoroughly unit-tested. Used by hundreds of open-source projects with 20k+ weekly downloads on npm and 500k+ downloads total.
- markpdf: A command-line utility to efficiently edit PDF bookmarks using a familiar indentation-based format.
- liftoff: A parser and interpreter for a toy (yet relatively complete) programming language, written in Python.
- yagpdb-cc: The largest community collection of custom commands for YAGPDB, accessible through a Docusaurus-powered website. I created and continue to maintain this project, and have built various automation in Go (yagfuncdata, action-check-yag-tmpl-syntax) to aid in maintenance.
- competitive programming: Solutions to various collections of competitive programming problems, written in C++ and Java. See also my account on the DMOJ.
Since everyone likes numbers:
|
|
(Statistics courtesy of GitHub Readme Stats.)
If you would like to reach out, my email is jliu1602 [at] gmail.com
; I am also active on Discord as jo3_l
.