Computational Fluid Dynamics

January 2024 - present

I am currently working with Swarthmore Applied Mathematics Professor Dr. Joseph Nakao on numerical methods research. We are investigating the theory and applications of partial differential equations (PDEs), focusing on numerical approximations of PDEs using MATLAB. This past spring, I worked under Dr. Nakao, approximating ordinary differential equations using MATLAB to approximate partial differential equations (PDEs) using high-order-accuracy methods including classes of Runge-Kutta methods, Gauss-Legendre Quadratures, implicit-explicit (IMEX) methods, and other spatial discretizations. This initial work--combined with the differential equations course I took in Spring 2024--laid the foundation for our research this summer.

Electrical Engineering Research

December 2023 - May 2024

This past fall and spring, I developed an understanding of the electrical and aerospace science behind the normal oscillatory wind energy harvesting device. I began by preparing several presentations to document the initial system design ideas that I derived both independently and conjointly with Dr. Masroor. In these presentations, I also recorded independently researched topics such as Strouhal numbers, piezoelectric materials, Faraday's Law, and ViscousFlow.... For instance, for a few weeks at the end of last semester, I simulated fluid flow around various simple shapes and analyzed the resultant vortex-shedding patterns like the ones in the figure to the right. I also used Faraday’s Law to predict induced voltage as a function of the frequency with which a neodymium magnet oscillates linearly through a coil of various turn lengths (N). After returning from winter break, Dr. Masroor and I continued brainstorming designs to test in a wind tunnel. Simultaneously, I began creating three-dimensional CAD models that we could use to simulate magnet oscillations through a coil. I built a variation of the scotch-yoke mechanism to power a linear oscillator using a motor whose frequency we varied using an Arduino Motor Shield. I then used MATLAB in tandem with Arduino to convert my laptop into a makeshift oscilloscope which we used to record electromagnetically induced voltage over time as the magnet oscillated through the coil. We then swapped the coil’s position for the magnet’s and oscillated the coil around the fixed magnet, which allowed us to create faster oscillations using less power. I then spent several weeks gathering voltage/time data for dozens of frequency-amplitude combinations to analyze the relationship between voltage, amplitude, and oscillatory frequency–which affects magnetic flux (Φ). I then created a MATLAB data analysis script with which I ran a Fourier Transform to extract the frequency compositions from the time series data and ultimately clean the data. After cleaning the data’s noise, I found the dominant electrical frequency, which corresponded to the coil’s oscillation frequency. I then used the relationship between power and resistance to determine the approximate power from the system (we previously measured the coil’s resistance to be approximately 3𝛀). I then used this script to create a heatmap-type table–albeit very coarse–of power as a function of frequency and amplitude. For the final weeks of the spring semester, I attended wind tunnel experiments during which our group attempted to achieve oscillatory motion from various cylinder-spring combinations.

Image-Generating Generative Adversarial Network (GAN)

June 2022 - August 2022

This python machine-learning script involves two 'competing' algorithms: the generator and the discriminator. The discriminator is trained on an image dataset with the goal of determining an 'authentic' image from a 'generated' image. The generator is an algorithm that produces images which are then fed into the discriminator to determine if the image is sufficiently realistic, subsequently adjusting its weights based on the discriminator's feedback. Eventually, the generator will reach steady-state, the point at which the generator is either no longer improving or the discriminator can no longer differentiate between the training set, or 'authentic,' images and the generator's 'generated' images. The generator can then be used to create realistic images that are similar to the training dataset images. I trained my model on approximately 16,000 abstract artwork images from online databases and achieved pretty good results for the relatively small dataset and lack of powerful computational servers (I used my laptop to train the model and because of my limited GPU was restricted to training on 64x64 pixel images). An interesting next step would be to gather larger datasets and to use a more powerful online server to create higher-definition images.

FireSale

July 2020 - July 2021

During the COVID-19 Pandemic, I dedicated a significant portion of my time to developing FireSale, an Android app available on the Google Play Store that allows food retailers like grocery stores and small businesses to market excess food to hungry Portlanders. FireSale encourages businesses to lower their prices at which they sell extra food that would otherwise be wasted, simultaneously working to solve both problems of food insecurity and food waste. I spent about a year using Android Studio and Java to create this project and learned so much regarding mobile application development, online databases (I used AWS DynamoDB, S3, and Cognito), Java programming, and commercial-grade software development. I also learned a lot about multi-threading and asynchronous tasks, specifically when accessing the AWS databases. I think if I were to pick up this project again, I would begin by researching the desires and needs of grocery stores and other food retailers because I completed this project without any insight from the businesses themselves, which would have been incredibly useful in the marketing process.

Custom Quantitative Stock Trading Algorithms

September 2021 - present

I used Python to create several automated day-trading algorithm based on a variety of quantitative indicators. I began by researching how stock metrics such as Relative Strength Index (RSI), Bollinger Bands, simple moving averages, and bid-ask imbalance affect a future stock's price. I then created several Python algorithms that used stock data retrieved using the Yahoo Finance API to determine whether a given stock at any moment has a high likelihood of being a profitable buy. First, the script web-scrapes the day's highest positively moving stocks to acquire an initial trading list. Then, every few minutes the algorithm picks the best stock on which to trade--either the stock with the largest bid-ask ratio, or most attractive position relative to its Bollinger Bands, for instance. The program analyzes this stock using various quantitative metrics to determine whether the stock is an attractive buy. I created several renditions of this algorithm using the above quantitative metrics. I then rigged the programs to the Alpaca paper-trading platform for testing. All programs achieved profitability to varying degrees. This project, in addition to honing my Python skills, taught me about quant algorithms, stock indicators, day-trading, and real-time server API requests. I still work on, test, and update these algorithms from time to time, which is incredibly engaging, super enjoyable, and always informative.

Squat Rack

September 2021

My homemade squat rack was a pandemic project that I created over the course of a few days. I designed the rack myself, accounting for the compressive load maxima of the 2" x 6" wooden beams that I bought from my local Home Depot to construct the rack. Fun project that has seen significant use over the years!

The Googol Game

October 2019 - December 2019

I developed this project after watching a video about the power and limitations of mathematically influenced guessing. It involves sequentially flipping over tiles to reveal randomly chosen numbers underneath. The goal is to stop flipping over when you have overturned the highest number. This was my second-ever published mobile game and I used a lot of the game-development skills I learned from LineDash to make the Googol Game. Interesting proof of the concept shown in the video, though did not take very long to develop.

LineDash

April 2019 - October 2019

This was the first mobile game I ever developed and published to the Play Store. LineDash is a 2D arcade-style game that involves an eternally-accelerating character switching directions to dodge oncoming obstacles. It notably features an online leaderboard, Google Play Achievements, a variety of levels, and an infinite game mode. I released this game shortly after starting my freshman year of high school after working on it for about six months. I created it using the Unity game engine, writing all of the scripts in C#, and creating the graphics myself in Microsoft Paint :). All in all, LineDash was a fantastic project that taught me a lot about game development, UI, animations, and refining the user experience.