Kaden Gryphon Portfolio

Hello, I'm Kaden Gryphon a recent Master's degree graduate and software developer. Here is a bit about me and some of my work and current projects:


Summary:

Skills:

C/C++ | C# | Python | Git | Linux | Rust | Go | Fast API | Data Collection and Analysis | LaTex | JavaScript |

  • 4+ Years experience with development environments like Unity 2020-2023, VS Code, and Visual Studio.
  • 5+ Years of customer service experience from cashiering and restaurant service work.
  • Developed a HoloLens 2 and Android app that uses the phone as a spatial controller for AR interactions.
  • Published 3 academic works as the primary author.
  • Designed, Coordinated, and Conducted a user study to test the AR/Android app.

Extra:

  • 2+ Years of HEMA fencing: Longsword, Backsword, and Small Sword.
  • 10+ Years Playing Bassoon, and other instruments.

Places to find me:


Work Experience:

Customer Experience Associate:

  • AAFES: 2024-Current

Graduate Research Assistant:

  • University of Alabama in Huntsville
  • 2020 - 2022

Education:

  • Master's of Science, Computer Science

    • University of Alabama in Huntsville 2022-2024
  • Bachelor's of Science, Computer Science

    • University of Alabama in Huntsville 2018-2022

Check out some of my work

Projects

I have a wide variety of projects using a many different programing languages.

DK Lab

This is my home lab.

It pretty simple for now. I will add updates here as it grows.

April 2025

image

I got a patch panel to start cleaning up some of the cables.

I got more services running on it:

  • Navidrome
  • DNS server with ad/malware sink
  • Samba file share (still need to debug some issues with windows connecting to a few of the shares)

Working on next:

  • Adding home assistant to manage IoT
  • Get a 1U server to set up as a router/firewall (might move dns server to this too)
  • Add VPN so I can access file share from outside the network
  • Add video streaming/media playing
  • Remote/cloud backup (setting up a raspberry pi velcroed to a external hdd. once set up will have my brother run it at his place)
  • Set up the dev server with git/gitlab
  • Clean up documentation and localhost them as md book.

Rack layout

  • 01# NULL
  • 02# NULL
  • 03# ═ Patch Panel
  • 04# ═ Switch
  • 05# ═ NULL
  • 06# ═ Power Strip (1F + 8B)
  • 07# NULL
  • 08# NULL
  • 09# ╔ NAS
  • 10# ╚ Shelf
  • 11# NULL
  • 12# NULL
  • 13# ╔ Dev
  • 14# ╚ Shelf 2
  • 15# NULL
  • 16# NULL
  • 17# NULL
  • 18# NULL
  • 19# NULL

March 2025

image

Its mostly parts I got from a local liquidation sale. I added some casters to the rack so I could roll it around.

  • 19U 18" depth rack
    • NULL
    • ⎨ Switch
    • ⎨ Power strip
    • NULL
    • NULL
    • ⎧ Shelf (Dev Server)
    • ⎩ ...
    • NULL
    • ⎧ Shelf (NAS/Docker)
    • ⎩ ...
    • NULL
    • NULL
    • NULL
    • NULL
    • NULL
    • NULL
    • NULL
    • NULL
    • NULL

Both running NixOS.

The Dev server is for a remote VS Code project environment.

The NAS is mostly just testing right now, but is running a few small samba shares, and a navidrome music server.

Rusty Circuits

This is a logic circuits sim made for the terminal using rust and crossterm.

Pretty basic right now, just have the UI frame, and the movable cursor.

image

This is my updated attempt at making an assembly compiler and emulator, but this time with new knowledge, much more ambition, and in rust.

Very work in progress.

The plan is to have a compiler and emulator that are independent of processor and language, and use json files to define how the processor and language work. Right now It can parse code into commands, labels, comments, etc... and can parse commands into opcodes, and operands. Next is converting the parsed commands into binary.

I am also reading lots of documents on micro controllers, hardware interaction, drivers, etc.. to learn more about low level systems to make a more accurate simulator.

Github source code

DK App

This is a work in progress project. I plan for it to be a general day to day app for me and my partner to use for grocery lists, todo lists, budgeting, keeping recipes, etc. I am also using this project to create a full inclusive line by line tutorial on how it is made.

It has a fastAPI server with SQLite running in a docker container for the backend, and will eventually have a web react, and native react apps for the front end.

GitHub source code
Tutorial

Logic Gate Simulator (C)

image

This was a project that I worked on off and on through out my masters degree. I wanted to simulate a computer running at the gate level, and I wanted to do it in C. That turned out a be a mess as I could not get an simple C image libraries to work so I ended up making my own. I wanted to be able to save images to png format, but after a week of writing a zlib compressor and Huffman tree and was trying to decode a png by hand to try and error check. I eventual had to give up on that and use a call to a python script to convert the raw binary image into a png.

This gif is a simple register being fed into an adder. The register is missing a few gates to be proper registers as their outputs are not being fed back into the inputs.

I learned a lot as did not realize that I needed three states for the wire when I stated and had to make a work around, and I had to figure out solutions to issues with the cycle in the graph created by the registers.

This is only two small components, a single 8-bit register, and an adder, and I would still like to make a full computer at some point. I may try to revisit this project, but I think I might switch the rust.

(I will try to clean up the code and post in on GitHub eventual)

AR Bulletin Board

image

This was my core project for my master's thesis. It is an spatial sensemaking tool that uses the Hololens2 for AR, and a android phone as a spatial controller. The core design goal was using a mobile device to supplement the low dexterity issues that current AR hand gestures struggle with. Documents can be freely moved between the mobile device and AR. If the user wants to highlight text, the user transfers it to the phone, highlights the text, then sends it back to AR.

The mobile device is also used menus and a keyboard for interactions. Documents can be selected by tapping them with the phone and then moved as a group, sorted, organized into a grid, and other functions. The mobile device can be used to select documents based on search terms.

The HoloLens app was made in unity and C#. The mobile app is also made in unity. The communication server for coordinating actions between the HoloLens and the mobile device is made in python using the tcp socket library.

To evaluate the benefits of using this hybrid tool verse only AR I designed a user study. I created a version of ARBB that used an AR menus and gestures to replace the functionality provided by the mobile device. I carried out the user study, teaching the participants how to use AR, and how to use the tool. I had 20 participants in total (10 for ARBB, 10 for AR only).

The results show that there was significantly faster completion times for tasks using the Hybrid ARBB tool, and users were more likely to experiment with organizations as the hybrid tool was more forgiving. We also got valuable user feed back on what made the tool better than the AR only version, and what the main short comings of ARBB were.

(Will add link to full thesis when it becomes available. )

Collect document:

image

Highlight text:

image

Send document:

image

FloodNet

This my final project for my deep learning class that I worked on with another student. We were tasked with recreating the results of the FloodNet full convolution network. We where given a set of images, and the ground truth pixel by pixel classification.

An example of our results:

image

Diagram of our net work design:

image

Loss and Accuracy over training time:

image

More example of the results:

image

Assembly Academy

image

This was my honors capstone project that I eventually turned into a publish paper. It is a assembly programing tutorial made in the Unity game engine using C#. The assembly language used is based of the arm thumb mode, though many instructions (push, pop, etc.) where not implemented.

The user is given simple tutorials that introduce an assembly instruction and then are given a puzzle to solve using that instruction and previously learned instructions. The puzzle have the user program a virtual robot that can move left and right, pick up and put down blocks, and read the value of the block.

Example:

  • Tutorial on the branch instruction "b"
  • Puzzle: "Use a loop to run the robot off the right side of the shelf."
  • Solution:
.text
loop:
	mov r1, #1
	botmove
	b loop

Implementation

I made a compiler that can take the arm thumb assembly and compile it to a binary, using the ARM7TDMI Data Sheet. The compiler can create error message that give line numbers and suggests possibly solutions like, "Invalid Register", "Expected ,", etc.

The emulator loads the binary into memory and then preforms the fetch execute cycles. It displays the current state of the registers, the CCR flags, and attempts to decode the current instruction binary back into an instruction.

The code for this was pretty rough, both in terms of structure and not knowing about key C# string functions that would have made it cleaner. The design of the emulator is pretty limited too, and is not a great representation of how the processor works. I have since gotten a better understanding of microcontrollers and how hardware works and revisiting the idea of a compiler and emulator but this time made in rust you can see how that is going here kgemu (wip)

image

Misc. Simulation and Modeling

image

I took two semesters of Simulation and Modeling during my masters degree and they where some of my favorite classes. I did many projects for them.

One semester was focused on discrete event simulation. We had to make our own library of function for generate random numbers for various types of distributions, and create our systems for ques, tellers, and event que. We used these to for a variant of projects including: Airport checking lines, dump truck loading, transporting, and dumping material, and a super computer receiving, scheduling, and processing requests.

These ones didn't really have any nice pictures, and they just output logs of each event and averages.

The other semester was more varied and covers a variety of simulation topics. This was also when I was working on my C image library so I got to use that to generate visuals for the simulations outputs. The two here are a sheep and wolf sim, an example of agent base simulation, and a heat transfer sim, an example of math models based sim.

image image

AR Guitar App

image

This was a project I helped with as a student specialist. It was part of a collaboration between the business collage, and the science collage and a few professors. I was hired to do the programing and some of the design.

It uses OpenCV for python. It converts a set of local coordinates measured from the marker to the frets on the guitar, and uses the marker to translate the local coordinates to the actual screen coordinates. You can flip through different cords and it will display colored dot where your fingers are supposed to go that match the color dots on your finger tips. The number is the mean distance that your fingers are from the correct spot.

I think it also had a metronome to eventual be able to set a list of chords to switch automatically, and options to display the full hand skeleton.

Game Design Final

image

This was made for my game design final. It is a simple space ship combat game. The space ships have momentum and no friction. The enemy uses the physics based seeking algorithm from my survey of artificial intelligence class. Each ship has shields that recharge, and health that does not. I pained the star background my self and made scripts that load in a grid of nine of the each image and as the player reaches the edge of the image they are in it moves copies over so that the map is "infinite". Their is parallax between the layers so the the background barely moves at all, the stars slightly move, and the dust moves pretty quickly to show the actual current speed of the ships.

Dart Game Recorder

image

This was my senior design project for my bachelor's degree. It was a team project. I ended up taking over as team leader and taught the group how to use git.

The project was made in C++ using Qt for the UI. I don't remember too much of the actual implementation but I remember that the dart board had to be a special custom Qt widget that took a while to research how to make. We finally found a way to make a custom widget that could be resized and could translate mouse clicks to local coordinates of the widget. I made the algorithm to convers the x, y position of the mouse into which segment of the dartboard was clicked.

I was mainly working on the back end and made all the classes and data structures that store players data and game logs.

Also competitive dart games are wild to watch.

Misc. OpenGL School Projects

image

I took a computer graphic class in my undergrad degree and it coved a lot of the math around computer graphic, matrix operations for translating, and rotating objects, light sim math for rendering etc.

It used OpenGL for its projects, I had a ton of fun making these, and went well beyond the homework requirements to add more features for the fun of it. I don't have videos of most of them (I will have to dig up the source code and fight with setting up dependencies for who knows how long in order to get them running again.) but I do have a short clip of my final project.

This one was meant to teach about line culling, we pretend that the box is the borders of the screen and thus any world objects that have points outside of that bounds have to be adjusted to avoid buffer overflow errors.

The requirements was just to make the wire frame fish swim around, be able to feed them to increase their life, and move a box around that would act as the bounds that objects needed to be culled by.

I decided to go all in and make an entire fish tank. I added the plants that use sin waves to set their coordinates to animate waving, and made a boid swarm that danced in the back.

To get the whole thing to come together I made a gaussian blur filter to add depth. We were only allowed to turn in one file and where not allowed or instructed to mess with shaders so I had to pull the frame buffer into memory and implement the blur in C, then render that output on a polygon that filled the screen. Very inefficient, made the computer very unhappy to run it for long, but it was the only way I could figure out how apply the blur with out making a separate shader file.

OS Sim

image

GitHub

This was group project for my OS class. We had to make a simulator to compare different methods of time sharing for multiprocessing.

There would a json file that lists a set of processes, their arrival time, and cycles to complete. The CPU would keep a record of processes and swap them out using round robin, fifo, hrrn, and more.

Our team used the .NET frame work and C# for it. Our team leader made some integrated tests for us and would run the test and do a code review with us before our part of the project could be merged into the main branch.

We used an agile like development cycle, each team member had a feature to implement for the week and at the end of the week would all do our code reviews, merge it all together, run tests, then decide who would work on what next.

Magic Mirror

image

This was my project for a rapid prototyping class. Its a magic mirror made up of a one-way mirror, a monitor, a raspberry pi, and an IR touch frame. It ran the Magic Mirror 2.

I made a wood frame for it all and made an owl to top it off.

I plan to revisit this one too as I work on my DK App, and I want to try and integrate that into the mirror.

image image image image image

DARC is the robots team that I was on in high school in 2016-2017. I was a programmer for the robot the first year. We used C and an Arduino. The second year I made a game in unity that was part of the marketing booth, and helped advise programming for the robot. The team competed each year at South's BEST

Both years I was one of our drivers for the competition and was at the workshop at least 3 days a week to work on the programming, help out with the building, or practicing the driving.

I helped with the prototyping and brainstorming of the designing and game plan for scorning the most points with the given game rules. The second years game needed a robot to shoot ping pong balls at stacks of cups to knock them down. I came out with the initial mechanism for that, a wheel that could pull back a door spring each time it when around and then use the spring to flick a ball, and spent a lot of time helping fine tune and come up with solutions to increase consistency.

Both years our robot and drivers scored 1st at South's BEST competition for the south east US, and our marketing team won 2nd. https://www.southsbest.org/results.html

Marketing Booth game

The player controls a robot in first person and moves around a building putting out fires.

image

image

image

Timed Tag

This is a simple game I made for the AP computer science class.

One player used WASD the other used the arrow keys. The player who is "it" changed every 5 seconds, and they have to tag the other player to get points. Because who is it changes you have to quickly be able to swap from chasing to running. Inspired by PI tag mobile game.

image

March 23, 2025

image

I decided to try and add some updates on what I have been working on, kind of a blog style. I'll aim to have an update every week or every other week.

This week I did not get much done on any of my main ongoing project because I was working on setting up a server. I have been planning on setting up a home lab eventually to host the DK App and other projects, but didn't have any extra hardware to do it. Then while looking around Facebook market place I found a local business that was having a liquidation sale.

I ended up getting:

  • 19U 18" depth server rack
  • Optiplex 7010
  • Optiplex 3010
  • Monitor
  • Printer
  • Many Cables
  • Misc. Office stuff
  • poe injectors
  • rack mounted power strip

All for just under $100.

The rack was meant to be wall mounted and just had bolts sticking out the bottom, so it would have damaged to floors If I just set it there. I got some casters and bolts from homedepot and added those. Drilling the hole through the metal was fairly painless with the preparations I made. A pair of selves, and a switch off Amazon and I had a functional server rack to hold the computers and can easily roll around as needed.

I then spent the rest of the next two weeks setting up the servers. I wanted to try out NixOS as I like the idea of the declarative configuration files. It feel familiar to making make files or pyproject tomls.

I don't quite have the hardware I want to fully setup the functionality I was so a am mostly just using these to learn and test stuff. They are running with no desktop environment so I had to refresh on Linux commands. And NixOS is pretty barebones, it doesn't come with much at all pre install or configured so I had to learn how all the Linux administration stuff worked to set up my users, ssh keys, permissions, automate services to run at start up.

I have learned to love vim, and will probably look to add a vim like controls addon to vs code when I get back to those projects. I have also learned where to find various log files and how to read them to trouble shoot problems, which is pretty important when you run commands you think should be doing something but can't see anything happening.

I have been studying for security+ the last 6+ months and am planning to take the test soon, so I am also trying to keep in mind what I have learned for that as I set up my server and try getting some hands on experience with some of the tools and concepts I only had flash card knowledge of.

So far I just have a couple small samba shares set up to set the configuration and mounting process, and making multiple users, along with a navidrome server to host music. I have a large external hard drive that I might add to the server and try using that to set up a more long term setup.

While this server is mostly a NAS and host for services like navidrome, homemanager, etc. the other server I am planning to set up for a remote VS Code project environment.

May 4th, 2025

I have been busy the past few weeks. I got a rack mount case to transfer the nas server into.

![image]

I pulled all the school and all the general programing projects I could find and sort them into a schools project GitHub and a mono rep.

I got and finished building the Lego Titanic.

![image]

On the side as I have time between things I have been working on the design for my own 8bit processor architecture. This is a continuation of a project that I keep coming back to off and on for the last 5+ years. It lead to making the Assembly Academy project and the pngGates. This time I am doing a lot more research and planning ahead of time, using rust, and am trying to make more general useful tools for it as I do so. I think I have most of the design for the commands done, I just need to work more on the details like the memory map and block diagram. In order to actually make it I have two tools to make. The compiler and emulator that I started a bit ago. I need to make a json config for my design and then update the kgemu to finish more of its features. After I have a design running in kgemu that I like and think is functional enough I can start on the new version of a gates simulator and start building the computer in that. This is a project that I have to do on the side and make sure I am getting progress on the home lab done too.

March 30th, 2025

Not a ton of new for this week, just steady progress and setting up the lab.

I got a patch panel to clean up the cables.

image

I am beginning to realize that getting the new switch might start to become a priority faster than I thought as I realize that I only have 3 open ports left. One will be the new router, one will be an poe camera, and the last will end up being a third server (for hosting Minecraft other other type servers for my friends). That a future problem to figure out though.

Otherwise I mostly just kept working on setting up the services that will run on the NAS.

  • Switched from the external hdd to an internal ssd (will change to a RAID setup eventually)
  • Reconfigured the shares, and music server to use the new ssd location.
  • downloaded my entire archive from the cloud on to the nas.
  • reorganized some of the files to set up home directories for each of the users on the file share
  • added a dns server to set a custom intranet domain name for each of the systems on the network, along with a dns sink for ad/malware.
  • Continued to update the docs.

Other than that I cleared the new extreme for ff14, and have got my gear set up to prog the new savage tier next week.

March 23, 2025

image

I decided to try and add some updates on what I have been working on, kind of a blog style. I'll aim to have an update every week or every other week.

This week I did not get much done on any of my main ongoing project because I was working on setting up a server. I have been planning on setting up a home lab eventually to host the DK App and other projects, but didn't have any extra hardware to do it. Then while looking around Facebook market place I found a local business that was having a liquidation sale.

I ended up getting:

  • 19U 18" depth server rack
  • Optiplex 7010
  • Optiplex 3010
  • Monitor
  • Printer
  • Many Cables
  • Misc. Office stuff
  • poe injectors
  • rack mounted power strip

All for just under $100.

The rack was meant to be wall mounted and just had bolts sticking out the bottom, so it would have damaged to floors If I just set it there. I got some casters and bolts from homedepot and added those. Drilling the hole through the metal was fairly painless with the preparations I made. A pair of selves, and a switch off Amazon and I had a functional server rack to hold the computers and can easily roll around as needed.

I then spent the rest of the next two weeks setting up the servers. I wanted to try out NixOS as I like the idea of the declarative configuration files. It feel familiar to making make files or pyproject tomls.

I don't quite have the hardware I want to fully setup the functionality I was so a am mostly just using these to learn and test stuff. They are running with no desktop environment so I had to refresh on Linux commands. And NixOS is pretty barebones, it doesn't come with much at all pre install or configured so I had to learn how all the Linux administration stuff worked to set up my users, ssh keys, permissions, automate services to run at start up.

I have learned to love vim, and will probably look to add a vim like controls addon to vs code when I get back to those projects. I have also learned where to find various log files and how to read them to trouble shoot problems, which is pretty important when you run commands you think should be doing something but can't see anything happening.

I have been studying for security+ the last 6+ months and am planning to take the test soon, so I am also trying to keep in mind what I have learned for that as I set up my server and try getting some hands on experience with some of the tools and concepts I only had flash card knowledge of.

So far I just have a couple small samba shares set up to set the configuration and mounting process, and making multiple users, along with a navidrome server to host music. I have a large external hard drive that I might add to the server and try using that to set up a more long term setup.

While this server is mostly a NAS and host for services like navidrome, homemanager, etc. the other server I am planning to set up for a remote VS Code project environment.