Welcome to my space. Let me tell you about some of the stuff I have worked on.
TL;DR

Voting

I have this crazed obsession with voting methods. I just wanted to get the best result when voting on a game for board game night, but maybe I went a bit too far...

Go Vote Tally

2013-2014
All of my side projects are partially rooted in learning something new. At the time, I was learning Go and so I wrote a few different voting algorithms in the Go playground. I started with Borda, then went to instant runoff (IRV) and then eventually landed on a (highly questionable) blend of both.
I was tired of sending a survey out and then manually entering the survey data into my program. I started on the Indifference Engine (source; old broken site), so called because it allowed for people's ranked choice votes to have ties in them. It started out based on my earlier IRV / Borda blend but eventually was migrated to the minimax method.
Indifference Engine Screenshot
I spent quite a bit more time on this project and learned about Node.js, Express, publishing packages on npm, MongoDB, Heroku, unit testing in Mocha, test coverage in Coveralls, CI/CD on Travis CI, Bootstrap, and using templates in Dust.js.

No More Voting!

Revonarchy

2015
koa
I got tired of my favorite games never getting picked, so I decided to move away from voting to let people just pick a game and then rotate who picks the game each time. The problem that quickly showed up was that some people would only show up rarely and yet got to pick just as often, Thus Revonarchy was born. (Source; site was never deployed)
Revonarchy was relatively short lived but I still learned some great stuff including Bower, Koa, Less, Gulp, Ramda, and most importantly React.

A Triumphant Return to Voting

Majority Judgment

2019
After a long hiatus, I decided to go back to the drawing board with voting. I had been reading about this new interesting voting method known as Majority Judgement. I implemented a modernized board game night voting site (source; site no longer deployed).
After learning a lot of frontend work in my day job, this project became focused on learning more backend and devops. I used Elixir's Phoenix Framework for the backend and deployed it using CircleCI and Amazon ECS. The frontend was React using nivo for charts, Bulma for CSS, and webpack for bundling.

Gaming Side Projects

Sensors Are Down

2017
I have always loved designing and programming video games, but the problem is that video games have a lot of art and I do not enjoy making art.
Enter Alexa. I could make an audio only game! I decided to create an Alexa space combat game (source; never published).
In the end, I created something that just wasn't very fun. I fell into the trap of making a system too complex considering you cannot see the current state. I think I had some good ideas and I have follow-up ideas for redesigns but I shelved the game for now.
Sorry for poor audio quality
This project involved mostly learning various AWS technologies that go into making an Alexa skill. I used an AWS Lambda which I deployed to using the Serverless Framework. I also tried typed JavaScript for the first time but picked a losing horse and used flow-typed.

Instantaneous Card Game

Scala.js

2018
I love card games. I could write about that topic alone forever but suffice it to say, I had an idea for a collectible card game where you build the deck and then the game plays itself where the winner is whoever had the better deck.
I made an early prototype in Scala.js (source; site). I stopped mostly because the Scala.js ecosystem was incredibly barren with lackluster tooling and few tutorials which were all broken and out of date.

Unity

2019
Over the holidays that year I discussed the idea with my brother and it was rekindled. Conveniently, I got a Humble Bundle with a bunch of card art assets for use in Unity, so I decided to build the game in Unity (backend source; game not released).
The game client was coded in C# and built with Unity. The backend was coded in Python deployed to AWS Lambda with the Serverless Framework.

Making a Real Game

Boats and Bridges

2020-2021
Lo
BabelRust
In 2016, I made a couple modified hashi puzzles for my wife and friends to solve. I really enjoyed making the puzzles and thought maybe I could make a puzzle game similar to the Hexcells series except instead of modified minesweeper I would do modified hashi.
The idea evolved over time but eventually I started working on a level solver and accompanying level editor to build some puzzles. (level editor source).
I spent a lot of time on a 3D Unity implementation of the game but every time I developed new visuals they would either not look how I wanted or they would obscure the gameplay elements to the point of being a net negative for the game. After spending a long time on a pencil hatching shader and being disappointed with the results, I took an extended break from the project.
Unlike most of my projects, this project was much more focused on execution rather than learning new technologies. The level solver was built in node with a heavy use of lodash for array manipulation. The level editor was just vanilla ES6 JavaScript using babel to transpile and webpack to bundle. I had a brief diversion where I learned Rust and started migrating the level editor to Rust for performance improvements.

Fun with Family

My family does an annual get-together where we play games and solve puzzles together. For the occasion I decided to make a little quiz game, sort of a cooperative version of sporcle. I used the opportunity to learn Gatsby and sharpen my skills with websockets (backend source; frontend has private source and implementation).
It was my first time using any sort of react based static site generator. I found Gatsby to be annoying to use especially their GraphQL internal api. I switched from JavaScript to TypeScript starting with this project. I deployed the frontend using CircleCI for CI/CD and Amazon S3 to host. I learned Auth0 for authentication and authorization.
I used an aws official sample for a chat app as the foundation for my backend. I deployed the backend using Serverless and included Lambdas, DynamoDB, and ApiGateway from AWS.

Convention Schedule

The most recent family get-together I decided to make a digital schedule. I added some functionality where attendees could pick which games they were going to join (source; site - use username Will and give it a few minutes for vercel to start the server before refreshing and logging in).
I had the pleasure of building this site using Next.js and deploying using Vercel. It made my life really easy and I definitely want to work with Next.js more in the future. For styling I used Bulma and as a database I used AWS DynamoDB.

The museum is its own exhibit

Last, but certainly not least, I want to discuss the very site you are on right now. The intention is to have several implementations in different UI frameworks both as a quick way to learn a bunch of technologies and as a demonstration of their performance against each other on a simple one page website.
This museum implementation is built using Create React App. For styling it uses Tailwind CSS. It is deployed using Netlify.
Thanks for stopping by!