About Me
I am a 21-year-old striving to build my career around my passion for computer science & business. My favorite subfields of CS are Machine Learning, Computer Graphics, and High Performance Computing, but that doesn't mean I don't enjoy learning about other areas as well. In the professional realm, I've had the opportunity to intern at many tech companies working on various projects such as Machine Learning Systems, Natural Language Processing with chatbots, and Artificial Intelligence explainability. I have also founded my own startup in Madison, Wisconsin where I learned that the intersection of tech and business is what I want to delve deeper into.
Additionally, I love working on personal projects which allow me to apply the knowledge I have acquired in the classroom while simultaneously obtaining new experiences I did not expect, whether its creating my own homelab server or upgrading my 3-D printer. I have come to learn that building things that can benefit the lives of others is what I am passionate about. The enjoyment and pleasure gained from learning while creating is a feeling for which I am still seeking the words to describe.
I also have a blog where I write technical tutorials, about my experiences and thoughts about the broader tech industry, and about life. It's an outlet for me to express my introspective side. My only goal is to write about topics or questions that really catch my interest and share my perspective with others.
Outside of computer science, I have a vested interest in rock climbing, working out, 3-D modeling, public speaking, politics, and business. In my free time, if I am not with friends, I am either playing video games, watching TV, or listening to rap music/podcasts, alongside reading, writing, and researching topics that intrigue me in order to continue expanding my knowledge base.
Experience
I've had experience working both at big corporations and small startups.
Skills
Languages
Python
C++
C
Java
Swift
HTML
CSS
JavaScript
SQL
MATLAB
R
Libraries, Tools, and Frameworks
PyTorch
CUDA
Tensorflow
Scikit Learn
OpenGL
Docker
Nginx
ARKit
RealityKit
SceneKit
Django
Flask
NumPy
Pandas
Matplotlib
React
Next.js
jQuery
AJAX
Postgresql
Bootstrap
Three.js
Other
Linux
Git/GitHub
AWS
Google Cloud
Proxmox
Google Firebase
Android App Development
Blender
Portfolio
Check out the projects I've worked on!
Ray Tracer from Scratch
I created a ray tracer that simulates light's behavior in the real world to create photorealistic scenes, all of which are completely generated by the computer. Similar algorithms are used by video games and movies to create more immersive experiences for the consumer. This one has global illumination, anti-aliasing, caustics, and subsurface scattering.
Languages and Tools Used
C++, OpenMP, PyBind11, Python
CUDA Accelerated Neural Network
I used NVIDIA's CUDA API to write a neural network from scratch with C++ and train it on the MNIST hand-written digit dataset. With 96% accuracy, the network was able to go from 57 seconds per epoch without GPU acceleration to a whopping 3 seconds, for a 20x speedup!
Languages and Tools Used
C++, CUDA, Nsight
AR Gallery
This is a simple iOS app that allows you to select pictures from your phone gallery and put them on your room's walls in real life! It'll size them into a beautiful picture frame to make it look like they're actually on your wall.
Languages and Tools Used
Swift, ARKit, RealityKit
Super Mario Bros Reinforcement Learning
I trained the computer to be able to beat Super Mario Bros NES using the popular Double Deep Q Learning algorithm. After optimizing the hyperparameters of the convolutional neural network and thousands of training iterations, the computer can now see the game's screen and determine which combination of buttons to press in order to make it to the end of the level.
Languages and Tools Used
Python, PyTorch
ML Algorithm Visualization Suite
This visualization suite aims to change the perception of these machine learning algorithms that are often viewed as black boxes. The user can learn about Linear Regression, Logistic Regression, or K-Means Clustering and watch each algorithm learn and adapt to the data as each iteration goes on. After placing points on the graph, click the iterate button to see how these algorithms aren't actually as confusing as they seem to be, but rather just a product of elegant mathematics and human ingenuity.
Languages and Tools Used
Python, Flask, Javascript, ChartJS, and AWS
Dine In LLC
I co-founded this startup with the hope to help small and medium sized restaurants be more competitive. Our application allows restaurants to put their menu, which is usually on paper or in a PDF, on our platform. Then customers can access it through a QR code or NFC chip, making the entire experience contactless, which is important during a pandemic. The restaurants can also update the menu in real-time, allowing them to immediately spread word of specials at certain times/dates, out-of-stock items, or changes in prices, resulting in lowered menu costs. Unfortunately, Dine In LLC is no longer active.
Languages and Tools Used
Python, Django, Javascript, and Heroku
Real Time Dining Capacity
The University of Wisconsin-Madison needed an application to track the capacity of their dining halls in realtime to ensure that students that dine there are safe due to COVID-19. This application allows the University to track the halls' capacities and any student on campus can then view the count in real-time, allowing them to make a safe decision on where to dine. UW-Madison no longer needed the application after Spring of 2021.
Languages and Tools Used
Google Firebase, Google Cloud, and Javascript
Rap Generator
I tweaked and retrained OpenAI's GPT-2 model on rap lyrics of my favorite artists. Check it out to see a curated sample of generated lyrics.
Languages and Tools Used
Python, Tensorflow
PyTutor
This application is for students taking the introductory level Python course at the University of Wisconsin-Madison. It augments their learning by requiring them to trace through Python code and guess what the next line to be executed will be. It also asks them questions about the state of the program, helping them know which parts they need to study more for class exams.
Languages and Tools Used
Python, Tensorflow
Rap Analyzer
This application takes a rap song from the user and outputs some statistics that it calculated, such as the average grade level of the lyrics, the number of swear words, adlibs, drug references, etc. It fetches the lyrics from Genius, using their API. Each song is then stored in our database, keeping track of which tracks have the highest count for each of the stats.
Languages and Tools Used
Python, Django, HTML, CSS, Javascript, and Postgres
Python to Java Translator
This application takes in Python code from the user as input, and then outputs the equivalent Java code that performs the same task. Some features that are supported are loops, conditionals, try/catch blocks, user input, and more!
Languages and Tools Used
Python, Django, HTML, CSS, and Javascript
Shotplotter
My team created this application for our high school's volleyball coach. He needed an efficient method to keep track of the opponents' shots during a match; he was initally using pen and paper, which was very tedious. Shotplotter allows the user to draw lines on the iPad—with different styles and colors representing different shot types and players—greatly streamlining the process of analyzing the opponents strengths and weaknesses.
Languages and Tools Used
Swift
Yahtzee
This Android application virtualizes the five dice from the classic game of Yahtzee. The user can lock the rolls on dice they want to keep, while rerolling the other ones.
Languages and Tools Used
Android Studio, Java