Projects
mnist August 2024
RustMLMathGUI
A neural network
mnist is a neural network written from scratch with the goal of being able to recognize handwritten digits, written in pure Rust with minimal dependencies used in the training process. You’re able to train and make predictions directly from the CLI. There’s also a subcommand to spawn an interactive GUI application where you can draw digits and have it perform live inference of the drawn figure. Links: GitHub |
|
proust July 2024
ReactTypeScriptAI
A learning tool
proust is a tool to help you learn more from static content. It lets you define interactive workspaces, places where you can load in static content from disk or from the web, having it fully indexed and ready to be interacted with. It runs fully client-side and in the browser. Links: GitHub |
|
llmbda October 2023
ResearchNLPPython
A large language model based propositional logic deduction
assistant
llmbda was a research project I worked on for a natural language processing course I took at McGill University. Alongside two friends, we came up with a plan to investigate how good large language models could be at parsing natural language into logical expressions. For instance, we wanted to explore turning an expression like this:
into this:
We explored a zero-shot, few-shot and fine-tuned alignment for various available language models, using the most accurate strategy in production for mcgill.courses course graph generation. Links: GitHub |
|
crisp September 2023
CLanguagesLispCompilers
A toy lisp interpreter written in C.
crisp is a lisp written in C with a web playground compiled using WebAssembly. I wrote it initially to get more familiar with C using the book Build Your Own Lisp by Daniel Holden as a rough guide to follow. |
|
mem1p July 2023
ReactTypeScriptML
Memorize your passphrases with ease.
mem1p is a tool that let’s you memorize new or existing passphrases easily. It leverages Web-LLM and Stable Diffusion running on chromes recently shipped WebGPU to generate memorable sentences and images that help you better contextualize your passphrase. This project was built during an internal hackathon with a few colleagues at 1Password during my Summer 2023 internship. Links: Website |
|
edmv June 2023
RustCLIToolsProductivity
Bulk rename files with your favorite editor.
edmv provides a quick way to rename a bunch of files using any editor of your choosing. It works by letting you provide valid paths on disk, having them opened up and editable in a temporary file on separate lines, and then performing any rename operations for modified lines upon exit.
The tool behaves as if you were running |
|
skeleton May 2023
RustCLIToolsProductivity
A project scaffolding utility
skeleton is a tool that makes it easier to start new projects. It stores your commonly used project specific files in one place, letting you easily apply them to new projects.
In essence, a
An
A
Links: GitHub |
|
pdfathom April 2023
PythonCLILangChainGPT
Query PDFs in natural language from the command-line.
pdfathom is a command-line utility that lets you query PDF documents with natural language. It lets you easily spawn a conversational repl environment with PDF documents on disk or in the cloud - building an in-memory question-answering agent with OpenAI embeddings and LangChain as the orchestrator. |
|
textmap April 2023
PythonSpacyNLP
A heatmap-like visualization for text-based content.
This project was an experiment to see what it would be like to introduce similarity-based highlighting to text interfaces. It works by chunking the input text into sentence vectors using Spacy and then ranking them based on their cosine similarity to other sentence vectors within the same body of text - giving them a score that falls within a range which can easily be mapped to a color. |
|
stream March 2023
ReactRustTypeScriptMongoDB
A stream of thoughts.
I wrote stream as a way to post short snippets of text to a feed that isn’t crowded by noise and ads (cough Twitter). It offers a few other niceties:
And it’s easily self-hostable with docker. |
|
mcgill.courses March 2023
ReactRustMongoDB
A course search and review platform for McGill University.
|
|
chatgpt.nvim December 2022
PythonNeovimGPT
Query ChatGPT in Neovim.
This project is a simple wrapper around the ChatGPT API to allow for fast queries within the Neovim text editor. I wrote this soon after an unofficial API wrapper came out for ChatGPT mostly as a way to explore writing Neovim plugins in Python. Links: GitHub |
|
mcgill.wtf September 2022
RustRedisFTSWeb Scraping
A low-latency full-text search engine for McGill's course
catalog.
mcgill.wtf is a fast full-text search of McGill’s entire course catalog with a server implemented in Rust and an intuitive front-end built using React. I was inspired to build this after seeing classes.wtf, a super fast course search engine for Harvard’s course catalog implemented by Eric Zhang - in addition to noticing a need for this considering McGill’s lack of full-text course search infrastructure. |
|
flint June 2022
RustLintersTree-sitter
Write custom, lightweight static checkers using the tree-sitter
query language.
|
|
fx June 2022
JavaScriptCanvasWebGLLanguages
Render art with commands.
fx is a simple command-based language for producing art based on texture input/output chaining. This was a side experiment done before implementing GPU acceleration for degenerate, mostly as a way to fledge out the chaining technique with WebGL textures. Links: GitHub |
|
present February 2022
RustMarkdownCLIToolsProductivity
A script interpolation engine for markdown documents.
present is a tool that lets you interpolate the standard output of arbitrary scripts that get interpreted by the shell into your markdown documents. It offers a nice way to automatically update sections of your markdown documents that might be the standard output of a command, such as command-line utility help outputs or benchmarks.
Simply add a suffix to the initial tag of markdown code-blocks
using the format |
|
ord January 2022
RustBitcoin
Rare and exotic sats.
I was an early contributor to ord, the index, block explorer, and command-line wallet for ordinals - the brain-child of Casey Rodarmor. Ordinals are a numbering scheme for satoshis that allows tracking and transferring individual sats. The work I did on ord was primarily focused on the block explorer and building out an initial wallet prototype to facilitate ordinal-aware transactions. |
|
degenerate December 2021
RustWASMWebGLGraphics
A generative art computer.
degenerate is a programmable generative art engine that runs in the browser that can be programmed with Rust or JavaScript.
Internally, it operates as a chain of image filters. The
output of each filter is used as the input of the next filter.
Programs configure the state of the current image filter and
call
Programs that are written in JavaScript are sent to a Web
Worker for execution. The program then sends back a series of
I worked on this primarily in collaboration with Casey Rodarmor. |
|
tetris November 2021
JavaScriptCanvasGames
A tetris clone written in vanilla JavaScript.
This was my first foray into ‘real’ game programming, among other things the project includes:
I wrote this as a final project for a game programming course I took at John Abbott College taught by Vikram Singh in my 5th semester. |
|
vim-profiler June 2021
RustVimToolsProfiling
A vim plugin profiler and data plotter.
vim-profiler is a light wrapper around the
It operates by simply parsing the output of
|
|
paragon April 2021
PythonBenchmarking
A lightweight command-line benchmarking utility for Python code.
|
|
zk February 2021
RustCLIZettelkasten
A note-taking tool based on the famous Zettelkasten method.
zk is a note-taking tool based on the famous Zettelkasten method with support for fuzzy searching, tags, and link exploration. Fuzzy search is powered by skim with custom keybindings for recursive note exploration based on their links. |
|
quwue February 2021
RustPostgresBot
Meet new people on discord.
quwue is a discord bot for meeting new people. All interaction with the bot is done via direct message, simply add it to your server and let the bot facilitate spontaneous user matchmaking and interactions. This project was initially started by Casey, I joined development shortly after and we eventually got a nice MVP done - it even has flaky integration tests! Links: GitHub |
|
vim-crypto February 2021
RustNeovim
View live cryptocurrency prices without leaving (neo)vim.
|
|
solve January 2021
ReactTypeScriptExpressMongoDB
A fully featured competitive programming workspace in the cloud.
solve is an interface for spinning up competitive programming workspaces quickly. It allows for users to solve problems on various contest platforms, testing and submitting code directly from a single environment - in addition to letting you save these environments for later. Code execution against sample test cases is handled by judge0 cloud. |
|
breakout December 2020
TypeScriptCanvasGames
A simple Atari Breakout clone written in pure TypeScript.
breakout is a simple clone of the popular arcade video game developed and published by Atari - Breakout. It’s a rudimentary clone that simply keeps track of a score and live count, with some basic sound effects to go along with the gameplay. I wrote this as a final project for a basic web programming course I took at John Abbott College taught by Helen Katalifos in my 3rd semester. Links: GitHub |