STEM Portfolio

San Diego Supercomputer Center Internship

poster
IDK

During the summer of 2024, I was accepted into the San Diego Supercomputer Center’s (SDSC) Research Experience for High School Students’ (REHS) summer internship program at UCSD. My job was to review and debug the Jupyter notebooks that train new Expanse Supercomputer users.

Biotech Project (Diabetes Insipidus)

Link to project presentation

In 11th grade Biotech, I had to choose a biology related problem and find a solution using technology and skills learned in class. I chose treating Diabetes Insipidus, a condition where the body does not retain water properly (this was a condition I was tested for before I was tested for celiac disease). I came up with a protocol to create bacteria that generates vasopressin, a hormone that people with Diabetes Insipidus often do not produce properly, by inserting a plasmid with the vasopressin gene, then harvesting the vasopressin from the bacteria. This involves CRISPR technology. While originally this was a group project, I chose to work on this project on my own.

While working on the project, I realized that there not a way of detecting osmolarity levels in a person quickly enough to respond to changes in their environment. I suspect that hypothetically supraoptic nuclei cells, which detect osmolarity, could be grown and used to monitor osmolarity levels; I did not have the time to research this for my project.

Tiny Renderer Tutorial

Link to GitHub repository

triangles
wireframe

Using the TinyRenderer course by Dmitry V. Sokolov, I am making a renderer that turns wavefront .obj files into a 2d image of a model. The course uses C++ and a library that can create and make simple edits to TGA files; everything else (drawing lines, loading files, etc.) had to be coded from scratch. I restarted the course multiple times as I gained programming and math experience.

Python Projects

Emacs Todo

Link to GitHub repository

A Python file that can add a todo list entries into a file, which can be used with Emacs’s Org mode.

When I made this project, I was experimenting with different todo list systems.


* 19 DEC 2022
* 20 DEC 2022
* 21 DEC 2022
* 27 DEC 2022
* 28 DEC 2022 [4/9]
** DONE Recycle water bottles
** DONE Get controller configured
** DONE Lunch
** DONE Check emails
                

PyGame Asteroids

Link to GitHub repository

asteroids

Following this tutorial, I created an asteroids style game during Independent Study in 8th grade. I used Python and PyGame. The project is incomplete.

Raylib

Raylib is a library used for game development. It has functions for creating windows, getting input, drawing images, and more. I used it to make game prototypes in C++ to learn more about the language.

Raylib Sand

Link to GitHub repository

sand

A sand simulation. Every step, sand falls downward. I learned what not to do with objects in C++, and I plan to redo this project using what I learned.

Dodge Through Gravity

Link to GitHub repository

gravity game

An original mini game where the goal is to move the player in the spaces between the falling objects. The player moves along the horizontal axis. This used C++.

Lynx and Hare Lab

Link to GitHub Repository

lab

A Java simulation of predator/prey relationships. This was inspired by a lab done in my Biology class.

I made this project to practice Java.

Programming on Android

Link to GitHub Repository

Termux is an app on Android that can run a Linux terminal. This allows me to use desktop Linux software like Vim, Git, and cmake on Android. This let me program on Android (in this case, on Kindle Fire).

Termux does not support graphical applications by default. I had to create a VNC server inside of Termux, start a window manager (like i3), then use a VNC client app on Android to connect to the server inside of Termux.

Linux Customization

I customize the applications I use in Linux. I backup and sync the files usually with Git and GitHub

Neovim Config

Link to GitHub repository

Neovim (a fork of Vim) is my primary code and text editor. I configured it using kickstart.nvim as a base.

config

Desktop Environment

rice rofi

I used i3, a basic window manager that requires the user to add/customize most of the basic features.

I used polybar as the bottom panel, and used Rofi as an app launcher.

Nix and NixOS

NixOS is a Linux distribution that uses the Nix language to configure itself and install/configure packages. I used this as my OS on my laptop for almost a year. I used it because it could be configured almost entirely through code; it made package management simpler. I stopped using it because it could only be configured through the Nix language; Nix introduced a level of abstraction that made it hard to debug problems and make changes quickly. Additionally, the things I learnt about Nix and NixOS could not be applied outside of the Nix ecosystem.

On NixOS, I needed to add extra configuration to my programming projects; many of the projects here like Raylib Sand include a shell.nix file.

ICS to Google Classroom

Link to GitHub Repository

One of my middle school teachers posted their assignments on iCalendar; my other teachers posted their assignments on Google Classroom. Since iCalendar lets users export their calendars as ICS files, I created a script that generates Google Classroom assignments from ICS files. This let me use Google Classroom as my only todo list for schoolwork at the time.

Computer Science Independent Study

Proof of completion

During 8th grade, I was allowed to use my elective for independent study to take online courses via Coursera, including: Crash Course in Python, Using Python to Interact with Operating Systems, Introduction to Git and GitHub, Troubleshooting and Debugging Techniques.