Projects

Below are some of the notable projects I’ve built over the years outside work. If you ever want to chat about anything regarding the apps or the tools I used to build them here, shoot me an email with the contact button at the top of the site.

Bungie Pls

Bungie Pls is a news site dedicated to Bungie’s game Destiny 2. I created it after a deep dissatisfaction with the availability able news sources for the game. The most popular accounts on social media would release individual bits of info as many little social media posts, and between these would post discussion and controversy bait posts, both presumably to drive up engagement. These made for a pretty miserable experience for wanting to know the news without hearing about everyone’s hot takes or missing a piece of news because the algorithm gobbled it up. There are also several large Destiny YouTube channels that cover news, but these aren’t very readable and include quite a bit of commentary that I personally don’t care about. I wanted there to be a news source that was comprehensive but focused, aggregating all the new and future developments in the game without any extra fluff. So I made it myself.

The site is a Next.JS site with a Strapi CMS. My hope was that by integrating a CMS, I could make the experience of contributing to the site accessible enough that other contributors could help out, but so far I’m the only real author. This project is what I used to learn Next.JS and React after years of mostly using Angular, and I really fell in love with the framework in the process. I’m also particularly happy with the branding that I came up with, “bungie pls” is a long standing joke used often when making an angry (or humorous) plea to bungie for changes in the game. Using a strong yellow as the core color for the site is really recognizable in the competition space as well, if a bit basic.

Where The Fuck is Xur

Where The Fuck is Xur (WTFIX) is a project I’ve been working on with a group of collaborators for years now. It’s a joke site (think along the lines of those irreverent weather apps) dedicated to one specific vendor Xur in Bungie’s game Destiny 2. Xur is only present in the game on the weekend, and his location is randomly selected from a set of possible locations. It’s impossible to find him within the game without checking each location until you see him, so tools like WTFIX exist to save players the time of looking for him themselves. For years it was run quite manually by one guy who would log in when he appears, hunt him down, and update a barebones HTML site with his location. I happened into a Discord server created by the guy, and alongside a few other volunteers, offered to simplify the process.

While there are still other collaborators on the project (less than when I joined), I’m currently the singular programmer. The original creator is still there and contributes jokes to the many places on the site we have for injecting them. There is another remaining team member that runs some quite successful social media accounts (11.6k followers on Twitter).

Over the years the technical side of the site has evolved with my own experiences and learnings, as well as the changes to Xur in the game. It grew from a slapdash node script run on a VPS every 5 minutes and storing state in a git repo, to a Kubernetes cluster with multiple services working in lockstep to deliver one video game guy’s location to whoever wants it. The core website is now built in Next.JS, with a golang micro service for managing the game manifest, and worth special mention is the Discord bot that can post his location on command or to a specific text channel as soon as he’s found. The bot is in ~6000 servers, with ~3750 of them registered to receive notifications when he’s found. There are ~500,000 users in all those servers put together.

This project was really formative for me, introducing me to some close friends that have persisted through the highs and lows of the game we assembled around. It gave me a space to very directly apply what I was learning about programming in college, and explore tools and libraries that I found interesting. I think it helped form me into a particularly flexible programmer, able to learn new tools and go from idea to implementation really effectively.