Games & Mods

The Ump Show

Game that lets you be a Baseball Umpire, 2023

Since everyone dreams of being the baseball umpire, The Ump Show lets you fulfill that fantasy. Your job is to call an accurate game while making sure your favorite team wins!

Rocket League Story Mode

Added Story Mode to Rocket League, 2020

RLBot is a framework to create and play against custom bots. I was able to leverage the framework to create a story mode where you play against bots to take over cities. As you win, you can recruit teammates and purchase upgrades! The features was merged back into the RLBotGUI which is the main way of playing against community bots.


Game where you play as RBG, 2018

RBGnRGB is a fun browser game we made for the Github Game month. The game is built using the Phaser framework. You play as RBG and try to destroy monsters by matching their RGB values.

Math Square: Vortexpool

Vortex simulator at MoMath, 2018

MoMath is the National Museum of Mathematics and they have a yearly hackathon where people make exhibits using their SDKs. One of the SDK’s allows you to control the giant touch screen on the floor that kids are usually running around on. Our entry, Vortexpool, came in second in the hackathon. It simulates a vortex for each person it detects on the floor. The link takes you to a demo in the browser (click to create a vortex and click again to remove it)!

Rocket League: Invisibot

Invisible Rocket League bot, 2020

Invisibot is Rocket League bot based on Kamael. It is able to go invisible when far away and suddenly appears when it is near the ball or a player.


Prototype game where you play as a windmill, 2018

As a windmill you can climb obstacles and also hit exploding balls using the windmill arms.

Development Tools


ESLint plugin to lint JSON, 2017

ESLint doesn’t natively support linting JSON. So this plugin hacks around the plugin system to support JSON parsing.

Blender Addon: Add Outline

Add Outline effect in Blender, 2020

The addon allows you to add NPR/Cartoonish outlines in one click. Unlike Blender’s Freestyle feature, this method works in Eevee as well as Cycles engine.

Python AST Preview

VSCode Extension, 2019

Python AST Preview is a VSCode extension that lets you see the AST of the Python file you are working on!

Personal Tooling


Prototype webapp to make and track personal wagers, 2022


Android app to load StackExchange's top questions in a mobile-friendly view, 2021


Disable/enable yubikeys via an app indicator, 2018

yubitoggle-applet adds an app icon in your taskbar to quickly check the status and toggle your yubikey on/off. Tested on Ubuntu but should work on other Linux OS too. It uses yubitoggle to actually toggle the state of the yubikey.


Encrypted personal journal, 2017

A flask based journaling website backed by a sqlite/sqlcipher databse. The database matches layout of the sealnote android application so data can be imported/exported from the android app. The project has been archived since the android app has been archived as well.


Personal Plaid-based money tracker, 2017

With the increasing number of accounts with banks/credit cards, I was finding it difficult to keep track of all my accounts. I tried Mint, Quicken and GNUCash but I had issues with all of them. So I made Lpaid to help me keep track of it! Its a node application that uses Plaid to interact with banks and uses sqlite to store the data locally. The README on github has more info on the project!


Supreme Court Transcripts

Auto-updated archive of Supreme Court argument transcripts, 2019

Supreme Court Transcripts was an existing archive of transcripts of arguments of the Court. The archive was generated through some undocumented scraping process. To keep this archive updated, I wrote a script to update the existing archive and configured it to run via GitHub actions.


Toy version of the Sweet32 attack, 2017

Sweet32 is a birthday attack which exploits encryption algorithms with small block sizes. Sour16 is a toy version that exploits the same attack for block sizes from 8-40 bits.