Shot Clock is a mobile app designed to help
individuals track their alcohol consumption and stay safe. With a simple and
intuitive interface, users input basic information and start a session where
they log each drink they have. The app then provides an estimated blood
alcohol content to help users stay informed and know when they might be
reaching unsafe levels.
The app was built using React Native and the Expo framework, streamlining the
development and deployment process. This was my first time diving into React,
and learning about the concepts of state management and component lifecycles.
Considering the target audience may be impaired, I focused on creating a
simple, user-friendly UI. User inputs are stored asynchronously on-device to
ensure both security and simplicity. For calculating blood alcohol content, I
leveraged scientific literature on the Widmark equations, ensuring accurate
BAC range estimates based on several specific parameters.
Lightcurves (2023)
While working with the Center for Astrophysics, I
processed large datasets from the Chandra X-ray Observatory. Initially
tasked with manually downloading and analyzing the data, I developed
software to automate the process, making it more than 50 times faster. This
innovation significantly boosted productivity and enabled quicker
insights.
The program starts by querying and downloading data from an astronomical
database based on user-set parameters. It took significant effort to
understand the specifications of the data as documentation was sparse.
Afterward, I processed the data using Pandas, NumPy, and a proprietary
analysis package called CIAO. The data was then plotted with Matplotlib and
exported to a web format. While developing, I put a focus on real-time
logging, progress reporting, and crash reporting, so anyone could see why and
where the program had any issues.
This was my first project where I utilized parallel computing. Using Python's
various parallelism systems I implemented a system that could download and
process astronomical sources several at a time. Along the way I learned about
resource contention, mutexes, race-conditions, the GIL, and more. The result
was a program that was extremely quick, many times faster than a
single-threaded one would be.
I then made it interactive, allowing the data to be re-binned with different
time durations. This allowed for data to be examined further, making it more
useful for analysis. This was done by making a server that could host the
output, allowing it to send a request to run a source through the pipeline
again. See it in action below.
Circuit Creator
(2023)
This was suggested to me by my high-school
physics teacher. The web app allows users to use a web interface to design
complex circuits of resistors, generating a rendered schematic alongside a
comprehensive data sheet that calculates and details key electrical
properties.
This program was my first experience with Python web apps. I chose Flask over
other frameworks because it is lightweight and proved easy to learn. I also
learned how to use Jinja, a templating engine for Python, to generate dynamic
HTML pages. I used JavaScript to create the interactive UI and to send data to
the server. I used CSS for the layout and style.
To effectively store and manage circuit data within the app, I needed a
structure capable of handling configurations of series and parallel items and
their permutations. To address this challenge, I designed a recursive
structure represented as JSON that can represent circuits with variable
complexity, ensuring I could represent diverse circuit designs.
FRC Robot Code (2024)
This code was developed for the FRC
Robotics Competition at the world-championship level. It encompassed
programming several complex subsystems, including a drivetrain, a two-joint
robotic arm, accurate camera-based localization, an advanced odometry
system, sensor filtering, and more — all with simulation capabilities.
The project was built using WPILib, the standard library for FRC robotics, and
the AdvantageKit framework for advanced logging and diagnostics.
The drivetrain can perform autonomous path following via a sophisticated
odometry system. The robotic arm, featuring two degrees of freedom, is
controlled by high-frequency motion profiles and a feedforward control model.
This approach accounted for system dynamics, allowing the arm to reach target
positions quickly and accurately.
Vision-based localization was achieved using two high-resolution global
shutter cameras connected to a Raspberry Pi running PhotonVision, an
open-source localization framework. Through meticulous calibration, the system
achieved a stationary accuracy of within two inches. My custom filtering
algorithm maintained usable localization data even during high-speed motion.
The program leverages both built-in simulation tools from the libraries I used
and custom solutions I developed. These high-fidelity simulations allowed for
rapid testing and iteration in a safe environment, minimizing risks and
optimizing performance before deploying the code to physical hardware.
Portfolio
Website (2025)
This is my portfolio site: a platform where I
showcase my work and share information about myself. I approached its design
with the same principles a business applies to a customer-facing website. My
goal was to create a seamless user experience that is fast, visually
appealing, and easy to navigate.
I chose Eleventy as my static site generator. It allowed me to streamline the
development process using templating while still compiling to only pure HTML,
CSS, and JavaScript, ensuring an extremely fast site.
Creating an intuitive user experience was a top priority. I utilized media
queries to ensure the site looked great across a wide range of screen sizes.
Additionally, I carefully designed the interface to look its best in both
light and dark themes. I used Google's Lighthouse tool to audit my site,
making sure it was fast, adhered to best practices, and was optimized for SEO.
This project was also my first experience with deployment. I hosted the site
using Cloudflare Pages, leveraging Cloudflare's CDN for reliable performance
and uptime. I created a CI pipeline with GitHub Actions to automatically build
and deploy the site whenever changes were pushed.