Welcome to my Portfolio!

This website showcases some of my coding and development projects. Enjoy looking around using the tabs at the top!

About

My name is Joseph Vohnoutka and I am a skilled software developer with a solid background in computer science. Currently, I am a senior at the University of Minnesota - Twin Cities, where I am pursuing a Bachelor of Science degree in Computer Science.

I am someone who thrives on the challenge of trying new things, even if it means making mistakes and learning from them.

As an experienced programmer, I possess advanced skills in multiple programming languages, such as Java, Python, C, C++, C#, JavaScript, and HTML. With these skills, I can easily develop top-notch solutions for complex problems.

I take pride in working collaboratively with like-minded individuals who share my passion for coding and are dedicated to achieving outstanding results.

My resume

Python Projects

Snake AI

An AI-powered snake that was trained using the Proximal Policy Optimization (PPO) reinforcement learning algorithm with the help of Stable Baselines 3. A model was trained on a 20x20 image with different board sizes within this image. The model takes into account the game board, the closest distance from the current apple in both the x and y directions, the remaining number of moves, and whether a move in any direction would result in the game ending. Based on this information, the model outputs a move. I have also converted this model from Stable Baselines 3 and PyTorch to a JavaScript web runtime environment with ONNX. With this model, I created an in-browser experience where you can interact with the model in several ways, such as changing the color, placing apples in desired locations instead of randomly, changing the speed of the snake, and even allowing you to draw a snake and watch it play.

Your browser does not support the HTML5 canvas tag.
x

Download Snake AI Code

Fruit Ninja Image Recognition

This is an automation of Fruit Ninja using image recognition. Fruit Ninja was emulated using BlueStacksX. YOLO-V8 Nano was then used to detect fruits and bombs. Using this information, a path to slice through the fruits while avoiding bombs was found and executed. The model used in the main program is a TensorRT model for fast inference.

Download Fruit Ninja Image Recognition Code
Download Weights

Fruit Ninja

Recipe Collector V2

This is the second version of the Recipe Collector program. The purpose of this program is to enable you to create and save recipes, ingredients, and their costs. This makes it easier for you to keep track of food items in your house, gives you ideas on what you can make with the ingredients, and calculates the total cost of the recipes.

Download Recipe Collector V2 Code

Recipe Collector V2

Recipe Collector V2.1

This is a different version of the recipe collector mentioned earlier. Instead of storing data locally, the information is now stored on a server. You can preview the software by watching the GIF above. The server used is a PostgreSQL server and the API is built in Python with Flask. You can find the API app in the same directory as the program. To use this program, you will need to download the main.pyw or main.exe file, the gui folder, and optionally the preset pantry folder. The program's purpose and functionality remain the same as the previous version. However, since this version is cloud-based, it requires a username and password. To protect the information, I have created a user account which will automatically reset within 24 hours. This account allows you to edit recipes and ingredients. If you are not logged in, you can only view the recipes and ingredients. The username and password for the user account are "user" and "userpass", respectively. When you download the application, the account information will be automatically signed in. However, if you need to access it again, simply use the aforementioned username and password.

NOTE: This version may take a bit to launch due to the API server going to sleep, so please be patient while first running.

Download Recipe Collector V2.1 Code

C Projects

Spell Checker

This program can spellcheck a text file based on a dictionary of words. By default, an empty dictionary is loaded, but the user can load a previously saved dictionary, add words, check if a word is in the dictionary, print the entire dictionary in alphabetical order and save it to a file to be loaded later. The dictionary words are saved in a text file separated by a newline and are stored in memory using a tree data structure. Users can use dictionaries to spell-check text files. The program will print out the text file and if a word is not found in the dictionary, a [X] is placed after the word. The program also can take arguments in the format "./spell_check [DICT_FILE_NAME] [FILE_TO_SPELLCHECK]" If only a dictionary file is passed, it will be loaded instead of an empty dictionary and if a file to spellcheck is specified, it will spell check that file and exit.

Download Spell Checker Code

Spell Checker

C++ Projects

ESP32 LED Controller

This program controls LEDs connected to a microcontroller to create the illusion of sideways motion. The number of LEDs in a row and their colors are easily adjustable.This program controls LEDs connected to a microcontroller to create the illusion of sideways motion. The number of LEDs in a row and their colors are easily adjustable.

Download ESP32 LED Code

ESP32 LED Controller

C# Projects

Aim Labs Bot

This program automates Aim Labs' challenges by scanning the screen, adjusting the aim, and clicking the target. Frames in the gif below had to be removed for file size requirements which is why it appears choppy.

Download Aim Labs Bot Code

Aim Labs Bot

Java Projects

Chess

This is a recreation of chess in the console. This was developed and tested on windows 11 so there may be some alignment issues if used on a different os.

Classes Created:
Game.java, Rook.java, Bishop.java, Knight.java, Queen.java, King.java

Classes Edited:
Board.java, Piece.java

Classes Provided:
Pawn.java, Fen.java

Can compile by navigating to Game.java location in a terminal and using the following command: "javac Game.java" To run on windows, enter "chcp 65001", "color f0" and then "java Game" in the same terminal. "chcp 65001" is needed to display the chess pieces. If this is not entered a "?" is displayed instead. "color f0" Is needed to change the console color to white. This is needed to display the black and white pieces correctly.

Download Chess Code

Chess

JavaScript Projects

Python Snake AI Imported into the browser with JavaScript and HTML

This is the model displayed in the Python section, but since it was ported to run in a JavaScript runtime environment, the game and observations had to be remade using JavaScript. To view this demo, go to the Python tab.

Download JavaScript Snake AI Code

Chime In Extension

This Chrome extension intercepts the API call for the currently open questions and identifies the correct answer(s) by analyzing this call. The extension then modifies the HTML being displayed to indicate the correct answer(s) with a ✅ symbol. To test the extension, you can access a test website using this URL: https://chimein2.cla.umn.edu/join/521959.

Download Chime In Code

Chime In Extension