2023
Ripplify is a sophisticated data visualization platform that enables users to examine their Spotify music listening history through beautiful stream graphs. The app allows users to see the entire story of their music taste's evolution over time, and to reflect on how their tastes and engagements with music have shifted during their lives through a beautiful portrait of how their life has intertwined with their favorite artists. This project was built for my Senior Thesis Project at Yale to complete my BS in Computer Science. The completed website implementation can be found at ripplify.io.
Role: Sole creator
Tools: React, Python, Flask, PlanetScale DB, AWS Lambda, JavaScript, D3
2021
UMenus, originally growing out of Yale Menus, is the #1 student-made app for viewing university dining hall menus. Originally created to replace the underwhelming official Yale Dining app, and totally rebuilt in 2020, UMenus 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+ monthly active users (including over 80% of Yale students).
Role: built backend, data scraping service, web interface, React Native mobile app (as well as deprecated native Android and iOS apps)
Tools: Swift, Kotlin, React Native, Python, Flask, Postgres, Selenium
2020
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
2024
Yale Memory Project is an anonymous website where individuals can leave markers of their most spacial spacial memories from their time at Yale.
Tools: JavaScript, Google Maps API
2024
Yale Arts Map is a website centered around a force-directed graph representing the relationships of artistic productions and people on campus. It uses data scraped from a variety of sources, such as the Yale College Arts website, Yale Daily News, and more, and displays and interactive graph of how people and performances are connected.
Tools: Python, JavaScript, Three.js
2020
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
2022
YaleAPIs indexes the many powerful Yale-related APIs available officially and unofficially, helping student developers access the information they need.
2020
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
2022
YaleOrgs is a clean and powerful API platform for accessing information about the various student organizations and clubs at Yale in flexible JSON format. Created in 4 hours for YHack 2022.
As of September 2022, YaleOrgs has been deprecated and merged into Yalies.
Tools: Python, Flask, Postgres
2019
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.
2019
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).
2019
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.
Tools: Google Maps JavaScript API, Tabletop.js
2018
Newlogy is a browser extension that enhances the Schoology Learning Management System interface. It cleans up graphical styling, hides unnecessary user interface elements, and adding new useful features by injecting CSS and JavaScript code into Schoology pages. Within a week after I released the extension, it was installed by over 40% of students at my high school, leading Schoology itself to offer me an internship.
Press: The Lasso
2018
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.
Tools: C, FreeRTOS
2018
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
2016
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.
Tools: HTML/CSS/JavaScript, Electron
2016
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.
Tools: HTML/CSS/JavaScript, Google Maps JavaScript API
2016
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.
2016
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
2016
A minimal but customizable new tab page for Chrome and Firefox. 2,500+ active users as of 2021.
yale
CLI tool, a helpful utility for Yale students who love the terminalsc
, a CLI tool for using Schoology in the terminaltd
, a command line client for Todoistwif
, a CLI tool for managing WiFi connections on MacOSfrc
, a command line tool for viewing FIRST Robotics Competition results in style