Richard Soper

QA Automation Engineer, homelabber, tinkerer

Richard in Seattle, Washington

What I know

  • Swift
  • Python
  • Traefik
  • JavaScript
  • Docker
  • Docker Swarm
  • Selenium

What I'm learning

  • SwiftUI
  • Django
  • Kubernetes
  • Laravel
  • Node
  • Vue JS

Current Projects

Traefik 2.0 Reverse Proxy Stack

This stack is deployed on a multi-architecture cluster that is a mix of Raspberry Pi 4 ARM64 devices, and an x86_64 i3 based system. All of these devices and containers connect to a NAS device via NFS for data storage with the SQL databases also running on the NAS device due to instability with containerized SQL datasbases and NFS data persistence. Beyond the standard reverse proxy functionality this implementation includes:

  • Automatic lets-encrypt SSL certificate generation
  • Dynamic file-based configuration
  • Dynamic docker label based configuration
  • LAN Whitelist middleware
  • Secure headers middleware(STS, XSS)
  • Middleware chains
  • Monitoring stack with Grafana, Prometheus, cAdvisor, Node Exporter

One Championship Calendar

This is a simple project out of my own want for a subscribable calendar for the One Fighting Championship events. Its a is simple calendar subscription service made with flask, and beautiful soup to extract the event data from the official webpage, create a calendar in the ICS format, and serve it up. It was something that I wanted to use myself and seemed like a fun project.

Dockerized Nullboard

This project is a fork of the primary nullboard project and so far only handles the creation and publishing of a docker image to run the project. The ultimate goal with this project is to persist the data in a database while still maintaining the local storage functionality that allows it to work offline.

Jekyll Multi-arch Docker images

This project was in order to make this Jekyll site run in my docker swarm cluster without having to restrict the container to a specific device within the cluster. The intent is to make it as simple as possible to run a jekyll site without restarting or rebuilding the container/image when you add new content.

Discord Role Bot

I wanted to allow the folks in my personal discord server to have control over what channels they are included in. Naturally I stumbled across the Mee6 discord bot. It has a fantastic Reaction Roles feature baked into it, but you are limited to only 2 options without upgrading to their premium service. It really is a great option for folks who want this functionality(and more) without having to worry about any of the backend stuff. But I did not want to add yet another subscription service to my growing list of them, and saw this as an opportunity to learn about something new. The initial goals with this project are simple:

  1. Allow users to configure which emoji reactions add/remove which roles on their server
  2. Build it into a docker image so anyone on any 64-bit system can easily spin up their own bot server.

And the next step will be to create a Flask based web interface to further simplify the process of configuring the emoji - role relationship. Once I hit this future goal I may look into expanding the functionlity past just role management, but so far thats the feature that really speaks to me.