Home About Experience Portfolio Skills Contact
GitHub
Image J Image B
Programming Languages
c++
python
javaScript
R

Select a programming language on the left to learn more about my experience and projects using that language.

C++

C++ was the first programming language I learned at university, and I worked with it for about three years. Initially, I enjoyed its low-level design and the direct control it provided over memory management, which was both challenging and rewarding. Over time, however, I found myself growing frustrated with its complexity. Despite this, one of my most memorable projects involved constructing various data structures, such as splay trees, AVL trees, B/B+ trees, and binary search trees. This experience highlighted both the power and the intricacies of C++.

Python

Python was the second programming language I learned, and it quickly became a favorite due to its intuitive and user-friendly nature. Despite being completely different from C++, I found Python easy to pick up, thanks to its straightforward syntax and readability. It is currently the language I use most often, especially for data exploration and analysis, where its powerful libraries and ease of use shine. Throughout my academic journey, the majority of my projects were completed in Python, as its simplicity allowed me to focus more on problem-solving and less on the intricacies of the language itself.

JavaScript

JavaScript was the fourth language I learned, and while it was easier to pick up than Python given my C++ background, I'm not a huge fan of it. Its complexities often reminded me of C++. However, I’ve used JavaScript for both the front and backend of a Chrome extension project, some website animations, and even a quirky Discord bot that would respond to !bee with the entire Bee Movie script. Despite my mixed feelings, it has been useful for various creative and technical projects.

R

I learned R during my sophomore year of college, making it the third language I picked up. While I found R useful for data mining, cleaning, and statistical analysis, it wasn't as intuitive as Python. It was valuable for learning concepts like linear regression and decision trees, but I’d generally prefer Python for these tasks unless R is specifically required.

Web and Application Development
html
css
flask
nodejs

Select a technology on the left to learn more about my experience and projects in web and application development.

HTML

HTML was the first language I learned in high school. Though it can be a bit tedious at times, it makes sense to me and has been a useful tool throughout the years. I’ve used HTML for various projects, from high school website assignments to my Chrome extension project and even on this very website.

Flask

Flask is my preferred framework for creating servers and APIs in Python. I find it intuitive to use, especially with its blueprint system, which streamlines development. Flask has served me well in various projects, including this website and the backend for an API I’m currently developing for my iOS application.

Node.js

Node.js, while not my favorite, proved to be quite useful for my Chrome extension project. Its structure for application routes was similar enough to Flask that I found it relatively easy to pick up. If I needed to build another website or server, I’d definitely consider using Node.js again for its practicality and efficiency.

CSS

CSS was a language I picked up after high school. Although it can be a bit tedious at times, I find it quite intuitive and valuable in web development. I've used CSS for various projects, including my Chrome extension and this website, to style and layout content effectively.

Data Science
pandas
matplotlib
seaborn
scikit
tensorflow

Select a technology on the left to learn more about my experience and projects in data science.

Pandas

I really enjoy working with data manipulation and analysis tools like Pandas. I first encountered it when I learned Python, and it quickly became a favorite due to its efficiency and versatility. Pandas has proven to be an invaluable tool for exploratory data analysis, making it easy to clean, transform, and visualize data. Its intuitive features have streamlined many of my data projects, allowing me to gain insights and draw conclusions more effectively.

Matplotlib

I learned Matplotlib when I first started with Python, and I generally prefer it over Seaborn for its simplicity and speed. Whether it's a straightforward linear graph or a histogram, I often choose Matplotlib for visualizing data due to its efficiency and flexibility. I’ve been using it consistently for the past four years, and it has become my go-to tool for creating clear and effective visualizations.

Seaborn

Seaborn is a library I learned later during university, and I found it to offer much more detail and functionality than Matplotlib. While Matplotlib is great for basic visualizations, Seaborn provides more advanced and aesthetically pleasing options. Whenever I needed finer-grained control or more sophisticated visualizations, I turned to Seaborn. Its built-in themes and statistical plotting capabilities make it a valuable tool for creating detailed and informative data visualizations.

Scikit-learn

I’ve been using Scikit-learn for about two years, and it has become my preferred library for machine learning, especially compared to languages like R. I find its functions for data splitting, model evaluation, regression, and clustering extremely useful. Scikit-learn has also saved me a lot of time during the preprocessing phases of data analysis, as I find Python’s syntax and functionality simpler and more intuitive than R.

TensorFlow

In my classes, I delved into neural networks and Keras, and I find it to be an incredibly powerful library for building and training deep learning models. One of my favorite projects involved using Keras for a neural network tasked with identifying handwritten numbers. This project required me to build several different models and streamline the process to select the best-performing model for evaluation. The ability to quickly experiment with different architectures and hyperparameters in Keras made it an invaluable tool for this project, allowing me to effectively tackle the complexities of image recognition.

Data Technologies
pyspark
postgresql
sqlalchemy
powerbi

Select a technology on the left to learn more about my experience and projects in data technologies.

PySpark

I picked up PySpark during my first big data course at university. Its similarity to Python made it relatively easy to learn, and it was quite useful when paired with Jupyter Notebook. One of the most enjoyable challenges was a large project where we had to create friend recommendations for over 50,000 people in the dataset. It was a complex task that required a different way of thinking and exposed me to new language and syntax constructs. Successfully completing it provided a great sense of accomplishment and broadened my technical skills.

PostgreSQL

PostgreSQL was the first SQL language I learned, and it has been a love-hate relationship. I find the general syntax easy to work with, but configuration files often cause trouble. Despite these challenges, PostgreSQL remains a powerful tool. Over the past two years, I've used it for various tasks, including data mining, managing databases for my APIs, and other projects.

SQLAlchemy

SQLAlchemy is a newer technology I learned this year. Its ORM model provides an efficient way to connect to SQL databases and simplifies querying. It has saved me significant time by automating migrations, queries, and database management tasks. Currently, SQLAlchemy is the backend for one of the APIs I’m building.

Power BI

Experienced with Power BI for creating interactive dashboards and reports to analyze and visualize business data.

APIs and Networking
Gmail
OpenAI

Select an API or network technology on the left to learn more about my experience and projects using these tools.

Gmail API

began working with the Gmail API in early 2024, when I built our first prototype using OAuth2 configuration and client IDs. The initial prototype was straightforward—it fetched the five most recent emails of any user who utilized the extension. As the project progressed, we expanded the API scopes and integrated it into a seamless flow, where fetching and processing email data were handled entirely on the server side using authentication tokens. This evolution allowed for more secure and efficient email data management within the application.

OpenAI API

I recently started using the ChatGPT API for my Chrome extension project. After identifying emails with a simple language model, we passed them to the GPT-3.5-turbo model for advanced data scrubbing. This allowed us to extract relevant details such as application status, interview dates, recent activity, interviewers, and the sender's information. Integrating the ChatGPT API added a powerful layer of data processing that significantly enhanced the functionality of our extension.

Server and Cloud Management
Compute Engine
SSH
NGINX

Select a server or cloud management technology on the left to learn more about my experience and projects using these tools.

Google Compute Engine

I began working with Google Compute Engine this year, and I’ve found it to be a very powerful tool. Although it wasn't entirely intuitive at first, learning to manage remote VMs through their free trial was a valuable experience. I utilized Google Compute Engine for my Chrome extension project, this website, and various other APIs I've been building. It's been instrumental in helping me understand cloud infrastructure and scale my projects effectively.

SSH

I began using SSH during my sophomore year of college with PuTTY, and I was initially quite confused by it. However, as I started using GitHub more and working with remote VMs through Google Compute Engine, I began to appreciate how useful SSH really is. I've even configured VNC software to tunnel all connections through SSH, and I've grown to love it for its security and simplicity. It’s become an essential tool in my workflow for securely managing remote systems.

NGINX

I started exploring Nginx for one of my API projects, and while it was initially a bit confusing to integrate with Gunicorn and Flask, I got it to work. Nginx quickly became a staple in my toolkit, proving invaluable for configuring reverse proxies, setting up HTTPS redirects, and more. Since then, I've used Nginx in every project involving virtual machines and APIs, whether for JavaScript or Python servers. Its flexibility and reliability have made it an essential component of my development workflow.

Linux
Unix
Ubuntu
Arch

Select a Linux distribution on the left to learn more about my experience and projects using that OS.

Unix

I first experimented with Unix during my sophomore year of college, using it alongside PuTTY for one of my classes. My professor at the time made it a bit more confusing than it needed to be, but working with Unix eventually laid the foundation for my transition to other Linux distributions as my daily drivers. This experience opened the door to a deeper understanding of operating systems and command-line interfaces, which has been crucial in my development journey.

Ubuntu

Ubuntu was the first Linux distro I tried when I was younger. I wiped the family computer and installed it using a live boot disc made with Rufus. I was surprised by how smoothly it ran compared to Windows 7, though my family didn't share my enthusiasm. Later on, I installed Ubuntu on a few of my laptops, initially as a dual boot and eventually as the primary operating system. I've also used Ubuntu as the base for the Docker container in my Chrome extension project, appreciating its reliability and ease of use throughout my work.

Arch Linux

I first tried installing Arch Linux last year, and it was a painfully challenging process. I attempted the classic installation method but kept forgetting to install crucial packages, which left me without a network interface. I also overlooked encryption and repeated the same mistakes during subsequent attempts. Even after trying the install script a few times, I still managed to miss things. However, in the end, I got it working, and now it's my go-to operating system. I love Arch for being lightweight, open-source, and incredibly flexible, especially with the AUR