Aidan Bell's Project Gallery

Welcome to my project gallery! This website is a collection of some of my favorite projects over the years. Enjoy perusing them.

YHack 2021 videoSkipper program
I designed and programmed a video player in Python that automatically skips forward in the video when there is silence in real time. I also included other standard video player options, such as skipping with arrow keys or changing the speed of the video. This program helps students watch lecture videos more efficiently. devpost.com/software/video-skipper-player

Neural networks in Minecraft
I made a functioning machine learning network in vanilla Minecraft using commands. The network learns completely inside of Minecraft, and you can actually build a neural network using Minecraft blocks.
Being able to build and experiment with networks in 3D space feels so natural and intuitive. In the YouTube video I made about this project, I attempt to explain the basics of neural networks and backpropagation without calculus.

Using machine learning to play Atari breakout with my mind
I hacked a muse EEG meditation headset so I could use ML to recognize patterns in raw EEG data. I wrote a python program that allowed me to record labeled raw EEG data while performing various actions. With only around 15 minutes worth of training data (broken up to produce around 15,000 training samples, each with 120 previous values for each of the 4 EEG channels), and a relatively simple multilayer perceptron (480 inputs, 128, 128, 3 output), I had 99% accuracy detecting left clenched, right clenched, and unclenched jaw states, and 75% accuracy detecting thinking (and looking) up, down, or straight. In the video, I’m clenching my left or right jaw to control a game of Atari breakout.


Robotics

I have hundreds of hours of software development and control systems experience through robotics, both FRC and FTC. I learned how to effectively (and how easy it is to ineffectively) collaborate on software, and I got to work with some incredibly talented student and mentor programmers. I was the software lead for three years on my FTC team, and below are our 2019 (left) and 2020 (right) robots.

In 2019, I designed a program that saves encoder values while a human is driving, and then plays those values back so that the robot can drive itself. From the saved encoder values we calculated the robot's change in x, y, and rotation in between each data point. The recorded x,y, and rotation then became setpoints for our control system. Using this method, we were able to get smooth curves into our autonomous (non-driver operated) period, and we ended up having one of the highest scoring and most consistent autonomous periods in all of the San Diego region.

^ this video is sped up 2x, our robot is #10092, on the left side of the screen


Bioinformatics Projects

Cell Photobleach Analysis Program
Over the summer of 2021, I wrote a program in Python using ImageJ and TrackMate to automatically identify & track cells from a fluorescence microscopy video and plot their brightness over time. We use this program to quantify how quickly different fluorescent proteins photobleach, and we also occasionally use it for photoswitching fluorescent proteins -- doing the assay by hand takes a technician ~2 hours per video, while my program can do it in seconds.


OSER assay automation program
With a coworker, I wrote software to automate the OSER assay (an assay designed to measure whether fluorescent proteins interact with themselves and disrupt cell function), a critical assay for fluorescent proteins before they are published. The software features UIs, clean data output, and undo functionality, and is designed to process ~100 images per hour, whereas previously 100 images would take a technician over a week to process.


Camera-based colony screening software

I wrote software for the low light camera our lab recently acquired, that allows us to quickly quantitatively screen for brightness (that previously was done by eye), and to screen for other traits that were previously impossible. The software detects the boundaries of all of the colonies based on the input images, and then ranks the colonies based on a user-defined equation. For example, the program can compare the before and after states of photoswitching proteins and select the colonies that changed the most, or select for bioluminescent proteins that use up the substrate quickly.

Once the colonies have been ranked, the results are displayed on an iPad mini, so that the user can easily pick the right colonies by putting the plate on top of it. I ended up having to use three different programming languages, one scripting language to control the filter wheels and camera, the imageJ macro language to do the vision processing, and Java to make the GUIs.
I was asked to write software just for photoswitching proteins, but I expanded the program to also screen bioluminescent, photobleaching, and standard fluorescent proteins.


Video Game Projects

In Search of Utopia

When quarantine started, I saw it as an opportunity to make the game I had been thinking about forever: In Search of Utopia. In Search of Utopia is set in the far future where humans have colonized the cosmos, and people have created various utopian and dystopian societies. The idea of the game is to present different utopian ideals fully fleshed out in a civilization, and to allow the player to explore and interact with strange societies and decide for themselves which, if any, utopia they want to settle down in.

So far, I've fleshed out one utopian planet, an underwater science-oriented civilization that uses genetic constructs for labor and heavily uses full-dive and AI technology.

I created original pixel art, animations, music, and dialogue for the game. I coded the game in GameMaker studio 2





Playing Minecraft without a mouse using my hands
I used a Leap motion hand sensor and processing to recognize hand gestures and hand position. I wrote a program that controls all the mouse functions in Minecraft, so that instead of using a mouse with your right hand you can actually do the actions. You punch to hit things, use an open hand to place things, use two fingers to look around, and one finger swiping changes item slots. As you can see at the end, you can also pull your ring finger in and then turn your hand to cast spells. My processing program types commands into the Minecraft chat really fast to communicate with the Minecraft mod I wrote for the spellcasting. So far you can teleport, and shoot fireballs and lightning


Homecooked video game

Since the beginning of quarantine in 2020, I've been the lead software developer for the indie game Homecooked. Homecooked is a cooking-themed fantasy role playing game featuring original animations and music. It's been amazing to work with a team of 10 incredibly talented artists, writers, and musicians. The game is programmed in Gamemaker studio 2, and one of our demos is available here: homecookeddev.itch.io/homecookeddemo







Ben 10 Minecraft Mod
I’ve made dozens of mods, but the series I made about recreating Ben 10 aliens was the most popular. The project ended up spanning several years with several complete rebuilds from the ground up. The code is thousands of lines long, and I designed many of the 3D models, animations, and sound effects myself. I collaborated with other creators to make some of the models, because this was such a huge project. This version of my mod allows players to make an Omnitrix (the device from Ben 10 that allows you to shapeshift) and use it to transform into 10 unique aliens. This is a clip from one of my YouTube videos about the mod, and you can find the full video here: https://www.youtube.com/watch?v=MVKIs3semYc&t=944s
This mod ended up getting showcased by numerous other YouTubers, many with well over 1 million subscribers

Vocabulary.com chrome extension bot
This is a chrome extension I wrote that automatically answers Vocabulary.com questions. I was poking around the site's HTML, and noticed that some of the questions had hard coded in answers, so I couldn't help myself. At the time, I knew nothing about chrome extensions or JavaScript, so I spent the next three months learning and working on this project. For the multiple choice questions, the code actually scrapes Vocabulary.com's definition page for a word, and then determines if any of the answers are found in the definition page. The program gets the right answer about 80% of the time.