Projects
RPI K3s Cluster
Just before the pandemic, I built a small Raspberry Pi using a Compute Module 3+ that runs openVPN and Kodi on boot. So when the coronavirus hit, I figured I ought to start playing with Kubernetes at home since I play with it all day at work. So I built a Kubernetes Raspberry Pi cluster with 4 Raspberry Pi 4s each with 4GB RAM. I learned a lot and managed to get everything up and running without too much hair pulling. I currently have NextCloud, a UniFi Controller, and a Ninjam server publically available, but I also host other applications privately such as Plex and Home Assistant. Some of the lessons I learned were things I've learned at work, but they're always good reminders.
Lessons Learned
- Assume nothing
- Document everything
- It often pays to know and understand the why behind something working (or not working) before moving on
Ran-Jam
A full-stack web app built with React, Node.js, Express.js, MongoDB, and Tone.js that allows users to jam along with randomly created music. Users can also log into the app using Google oAuth to save their own musical jams.
Features
- Ability to save songs
- Pulls samples from the FreeSound API based on a search query
- Each experience is different with the generative element
- Choose from a variety of instruments
GeoMindr
A full-stack web app with an emphasis on the backend created with Node.js, Express.js, PostgreSQL, JavaScript, CSS, and HTML that allows users to text a Twilio number using IFTTT to then record a reminder and their GPS coordinates. This reminder gets saved in a database to be accessible at a later time either via the web interface or by messaging the same number to get a list of reminders. Bcrypt was used to hash the user's password while express-session was used to keep track of whether the user was still logged in or not.
Features
- Full SMS support through Twilio
- Create, retrieve, update, and delete reminders via SMS or web interface
- View public reminders via web interface
Parity
A front-end memory game created with JavaScript, CSS, and HTML where the user matches tiles based on pictures and sounds pulled randomly from two APIs (Free Sound and Unsplash Image) making every gaming experience unique.
Features
- Progressive level system that allows users to play 5 levels of increasing difficulty
- Match either image or sound; excellent for accessibility
- Change between themes after each level completion or failure
React-Cital Piano
A front-end synthesizer built using React and (Tone.js). The user is given 2 octaves to play with as well as sheet music and a metronome to better help them understand music theory.
Features
- Keys controlled via mouse or QWERTY keyboard
- Each key held down lights up pink to inform the user what keys are pressed
- Multiple keys can be pressed
Eggy McEggy
andFriends
A simple shoot'em up game created using Python and Pygame.
Features
- Ability to travel in all 2D directions (up, down, left, and right)
- Splash screen with instructions on how to play
- A score counter / multiple lives
Scales-O-
Rama
A simple python app that allows users to find scales based on inputted notes or randomly choose scales from a variety of musical modes.
Features
- Scales randomly chosen from major, minor, dorian, phrygian, lydian, mixolydian, and locrian scales
- The itertools module is used to flatten the dictionary of scales into values which then allow the scales to be randomized
- If the incorrect option is chosen, the user is alerted to enter either "lookup" or "random"