Yale Menus is the #1 student-made app for viewing dining hall menus at Yale. Created to replace the underwhelming official Yale Dining app, and totally rebuilt following Yale Hospitality's infrastructural redesign in 2020, Yale Menus is a clean, simple, student-driven service that helps students get the dining hall and buttery menus they need when they need them. Includes numerous special features such as flagging problematic allergens, notifying you when your favorite menu items are served, and allowing students to rate and review foods. 5,500+ active users (over 80% of Yale students).
After Yale Dining shut down their official API in 2020, I built the public Yale Menus API which uses Selenium to trawl through the various Yale Dining websites that hold dining information and compile it for clean fetching as JSON.
Role: built backend and iOS app, rebuilt Android app originally by Adisa Malik.
Tools: Swift, Kotlin, React, Python, Flask, Postgres, Selenium
Yalies is a redesigned version of Yale's official Face Book, which provides contact information for Yale students. It displays data from the Face Book, Yale Directory, and various department directories, but through a more modern, better designed, and more secure interface. Unlike official Yale sources, Yalies is accessible only to undergraduates, and censors private details (street addresses, room numbers, and phone numbers) that I believe Yale should not divulge.
Yalies also provides an API for student developers. The API powers numerous student projects and university services, including CourseTable, Yale Research Database (RDB), Yale Daily News, Yalies.me, MailYale, Comethru, YPost, yale CLI, Ship, student projects in S&DS 315 and CPSC 490, and more.
I donated Yalies to the Yale Computer Society, where I now lead a development team of 12 students to maintain the service.
Tools: Python, Flask, BeautifulSoup
Press: Yale Daily News
MailYale helps easily generate email lists for the Yale community based on various characteristics such as year, major, residence, home state/country, and more, to help make sending emails a breeze!
Scraper system later repurposed to build Yalies.
Tools: Python, Flask, BeautifulSoup
Comethru is a mobile app to help Yale students post and find parties and social events on campus, and to stay safe while going out. Uses geolocation and Google Maps API to detect presence at events, which helps detect crowding level and allows users to keep track of where their friends are. Also integrates with Facebook API to help students find their friends. 25% of students at Yale (~1,500) were active users when the outbreak of COVID-19 put a pause on the project.
Tools: Ionic (HTML/SCSS/TypeScript), Python, Postgres
MeBots is a powerful toolkit for building, sharing, and using GroupMe chat bots with ease. It provides a public list of bots that anyone can install in their own chats, and a developer platform for making your bots scalable. MeBots modernizes GroupMe's bot system and adds new features, such as a user interface for adding bots to groups, automatic storage of basic bot information, and more! The service currently hosts over 700 bots, with more being created every day.
The MeBots API makes bot development way easier by managing authenticating tokens for unlimited bot instances, which allows bots to operate across many groups, which GroupMe normally doesn't support. It's ideal for simplifying maintenance of bots at many scales, as well as for promoting them through the Bot Shop.
While building and promoting the MeBots platform, I've created a number of bots of my own: Yalebot, Bot Against Humanity, TicTacToeBot, TeX bot, Memebot, xkcdbot, NASAbot, cleverbot, @everyone, Mealbot, GlobalistBot, eightball, and more.
While participating in the Yale Class of 2023 admitted students GroupMe chat, I began exploring the platform's bot API, then built my own chatbot for Yale-related groups. Initially having only a few basic commands, I gradually added features for over 7 months until the bot became an incredibly complex 35,000-line codebase. It continues to entertain admitted students across over 200 groups to this day—it can fill in meme templates, draw on profile photos using face recognition, host entire games of Cards Against Humanity with a corresponding web interface, list available courses, give information about menus and capacity of Yale's dining halls, and literally hundreds of other features. It also supports registration of custom commands by users.
Inspired by Yalebot's success and some of the challenges I faced in scaling it, I later built a "bot store" called MeBots to allow anyone to add it or other bots to their own chats (see above).
During my senior year of high school, I created an interactive map of my class' college/postsecondary destinations and intended fields of study. Over 70% of my class submitted their plans, inspiring the school administration to officially endorse the project and promote it to the community. I continue to oversee the project, which is updated each year by younger students in the Advanced Programming Club.
Press: The Lasso
During my senior year on my FIRST Robotics team, I joined our robot drive team in the position of Drive Coach, with responsibility to keep track of the field and our objectives during each match to help the drivers plan their next move.
I found it unnecessarily challenging to keep track of time during matches. Having recently purchased a Pebble watch, I decided to build a watch app to keep track of game timing and send the user configurable vibration alerts when certain driver actions need to be taken. Because Pebble as a company shut down in 2016, I sideloaded open source software from Rebble in order to bring new life to a $20 watch.
As a senior in high school, I spent a large amount of time logging into PowerSchool to obsessively check my grades. Wishing to streamline this process, I developed a beautiful command line tool for querying grades from PowerSchool. I built a number of configurable features such as displaying attendance information, color-coding grades, securely storing authentication details, and more.
Tools: Python, BeautifulSoup
FRC Dashboard is a fully customizable dashboard for FIRST Robotics Competition (FRC) based on web languages. After working on my team's web-based 2016 driving dashboard, I decided to rewrite the core codebase from the ground up to improve its cleanliness and allow it to be extended and used by other teams. I further migrated the platform to an Electron-based GUI rather than depending on a web browser, to further clean up the platform. FRC Dashboard was extended and used in competition by over 100 teams during the 2017 and 2018 seasons.
FIRSTMap is an interactive online map of FIRST Robotics teams and events. It uses The Blue Alliance APIand the Google Maps Geocoding API to obtain locations and logos. It includes helpful features like search/filtering support and keyboard shortcuts.
FRC New Tab is a custom new tab page extension for Chrome and Firefox which displays information about a random FIRST Robotics Competition team along with a picture of their most recent robot. It also supports showing the team whose number is represented by the current time. 300+ active users as of 2019.
During FIRST Robotics competitions, teams must constantly observe every other team's performance (or "scout") in order to judge whom to choose for alliance selection. VictiScout is an easily customizable Electron app that enables my team to collect data with ease and flexibility, and to easily combine multiple scouts' datasets into a summary spreadsheet to be used by team leadership to make alliance decisions. Because of the general lack of WiFi at competition facilities and FIRST's strict rules against self-hosting networks, VictiScout uses Bluetooth to exchange JSON-formatted data with other clients.
Tools: Node, HTML/CSS, Electron
BWNT New Tab
yaleCLI tool, a helpful utility for Yale students who love the terminal
- Various API wrapper libraries for using Yale APIs in Python: yalecourses, yaledining, yaledirectory, yaleorgdirectory, yalebuildings, yalelaundry, yaleenergydata, and more
- Puremoji, a Twitter bot that posts wholesome emoji art (GitHub)
- Custom Admit Profile, a Chrome extension to take advantage of the lacking server-side validation on Yale's Admitted Students website to allow submission of arbitrary answers for student profiles (GitHub)
- Onext, an intelligent link shortener for browser extensions, inspired by onelink.to.
- schoolopy, a widely-used Python API wrapper library for the Schoology API
sc, a CLI tool for using Schoology in the terminal
- FIRST Robotics robot code: 2019, 2018, 2017.
- Various JS Canvas experiments made during free time in my IB Computer Science class: arbo (GitHub), hop (GitHub), stars (GitHub), lines (GitHub)
td, a command line client for Todoist
- mandelbrot, a program for graphing the Mandelbrot fractal
wif, a CLI tool for managing WiFi connections on MacOS
- euler, a calculator for executing Euler's Method. (GitHub)
- cpparser, a program for downloading, scraping, and summarizing the Excel spreadsheets that hold CyberPatriot score results
- cpdash, a beautiful dashboard of CyberPatriot team scores
- cpsoundboard, a soundboard of CyberPatriot sound effects for pranking teammates used by over 1,000 competitors per season
- ccsconnectiontest, a GNU/Linux version of the CyberPatriot Connection Test
- billieeilish, a fun website for generating alternative names for Billie Eilish
- CourseNames, a fun utility for generating fake names of Yale courses using a Markov chain. (GitHub)
- Cascading Hands, a simple tool for generating hand gradient squares as seen on Twitter (GitHub)
- tokenwarn, a program that scraped GitHub for exposed Discord bot tokens and warned the bots' authors of the vulnerability
frc, a command line tool for viewing FIRST Robotics Competition results in style
- 1418.team, the website of my FIRST Robotics Competition team (GitHub)
- Opinr, a web app for displaying news articles from sources at different points on the political spectrum to help counter the echo chamber effect. Winner of the 2017 US Congressional App Challenge.
- talkso.me, a Rails-based social network for countering echo chambers and filter bubbles
- coconet, a simple proof of concept botnet created during my cybersecurity class at Virginia Governor's School
- API wrappers for The Blue Alliance: tbapy, tbago, and tbarb.
- shirt, a simple Flask/Mongo app for link shortening, and an accompanying CLI tool
- Various websites built for clients: English Now!, Welcoming Falls Church, etc.