About This Server
This server hosts various services I use for personal projects and development. It also serves as my learning platform for Linux, server administration, and web development.
About Me
I'm Andrew Mattson, a computer science student at the University of Alaska Fairbanks. I am passionate about robotics and Godot game/software development. I also like working on MQTT-based architectures. You can learn more about me on my main website.
Things Of Mine
This section contains projects that I have developed, some with others and some solo.
Pebble
Pebble is an MQTT-based robot control architecture developed for my Master's project. Like we did with Symergy (see below), I developed an MQTT Standard with the goal of allowing any robot, regardless of body plan, the ability to be a part of the network. The only requirement to be a part of the network is communicating in alignment with the MQTT standard. See my project paper here.
Pebble GitHub RepositoryLUMINSim
This is a lunar mining simulator I developed alongside Dr. Orion Lawlor and the Aurora Robotics Team. For those with poor internet, download the executable for your platform here. This project is integral to the LUMIN system. Try it out here!
Play LUMINSimBounce Crack
Bounce Crack is a game I developed alongside Bruce Smith and Kylie Lambries for our senior capstone class as practice before our real senior capstone projects. Go check out the Bounce Crack GitHub Repository. to pull the repository yourself if you choose, or play it online.
Play Bounce CrackSymergy
Symergy Godot is a microgrid digital twin interface I developed alongside Anand Egan, Rylan Clavell, and Kylie Lambries for our senior capstone class for our senior capstone project. Go check out the Symergy Godot GitHub Repository. to pull the repository yourself if you choose, or run it online.
Note: Because this is the web export of Symergy Godot, tcp connections will not work. So, to connect to an MQTT broker, you must prefix your broker hostname with wss:// (secure websocket). This tells the MQTT logic to use a websocket. Your broker must enable websocket connections, too.
Run Symergy GodotPond Liner Calculator
This is a simple HTML/CSS/JS webpage I made for a relative for calculating the approximate size of pond liner rectangle needed to cover the inside of a pond. It can do rectangle, ellipse, and free-hand shapes. It assumes your pond walls are perfectly vertical. If they aren't, the calculator will overestimate a little bit. Try it out here!
Pond Liner CalculatorGantt Chart Viewer
This is another simple HTML/CSS/JS webpage I made for the Aurora Robotics Team. NASA often likes gantt charts for timelines, but there aren't many good tools for making them, and I found myself making them by hand in Google Drawings. So, I took some time to put this together. It takes a JSON file formatted like this (our proposed NASA X-Hab 2026 timeline). The JSON (string) keys this program takes are:
- title: A string; the gantt chart's title.
- global_start_date: A string in YYYY-MM-DD format; the gantt chart's start date.
- global_end_date: A string in YYYY-MM-DD format; the gantt chart's end date.
- tasks: The chart's tasks. A list of dictionaries, with each having the following
(string) keys:
- name: A string; the task's name.
- start_date: A string in YYYY-MM-DD format; the task's start date.
- end_date: A string in YYYY-MM-DD format; the task's end date.
- type: An integer (starting at 0) corresponding to the task's type's index in the types list, defined below.
- important: A boolean (true/false). Makes the task's text bold.
- types: A list of strings whose indices correspond to the type key for each task in the task list (above). The name of each type of task. Determines each task's color.
-
breaks: The chart's break periods, marked with a grey background. A list of
dictionaries, with each having the following (string) keys:
- name: The break period's (string) name (e.g., 'Spring Break').
- start_date: The break's start date in string YYYY-MM-DD format.
- end_date: The break's end date in string YYYY-MM-DD format.
-
major_dates: The chart's major dates/deadlines, marked with a red line. A list
of dictionaries, with each having the following (string) keys:
- name: The (string) deadline/date name.
- date: The string YYYY-MM-DD formatted deadline/date.
Pigs of the Mist
Pigs of the Mist is a game I developed for Dr. Orion Lawlor's Computer Graphics Animation & Simulation class. This was for the HW0 assignment, and if you look at the requirements, you might see that they are minimal. Coming into this class, I already had some experience in Godot, having spent the last summer developing LUMINSim. So, to give myself a challenge, I turned the assignment into a sort of game jam. The idea for the project came from my desire to develop a horror game, along with the humorous concept of red-eyed demon pigs. After the project was complete, a few small changes were made to allow for a web export of the project. Many issues still remain, but you can still try it out here! You can also see the source code on the GitHub repository.
Pigs of the Mist