projects

Easy Wedding Jekyll Theme

Are you or a friend getting married? Do you want a quick way to make a customizable website? This is the theme for you!

When I got married, I created a website to commemorate the occasion as well as to provide information to my guests. Then not long after, I had a bunch of friends get married, who also wanted a site. I made the same site three times until I finally realized my life would be a lot easier if I could just use the same structure, but with different content. Enter Jekyll Theme: Easy Wedding.

It’s really easy to get started. The github README explains how to install and use the theme, then once you’ve done that, all that’s left is to change the data in a handful of yaml files. The best part is that if you set the theme as a dependency in a Gem file, you’ll get free updates as the theme improves.

Wedding Website

My wife, Sarah, and I got married June 15, 2019. to prepare for the occasion, I created a website to provide our guests with info about us and about the ceremony. To start, I forked wedding-website on github, then added some new content and features to make the site unique to us.

On the site, our guests were able to learn about how Sarah and I met, get to know the people in our wedding party, get directions or order an uber to the venue, find links to our gift registries, or get answers to common questions about the ceremony.

The coolest thing about the site, however, was that our guests could RSVP without filling out those so-easy-to-lose RSVP cards. The backend setup for the RSVP feature was super simple. The web app made requests directly to Google Sheets, so our guest list was automatically updated and easy to sort and search. Not only that, but Google Sheets allowed us to register event handlers to send our guests confirmation emails as well as notify Sarah and me that we’d gotten a new hit.

The wedding is already over, but you can still RSVP at the link below! (use code 0615)

Five in the Hive Fantasy Sports Web App

My roommate, Kane loves football! For years, he and his friends have played a fantasy football game with a bit of a twist. Each week during the season, each person chooses five NFL teams that they think will win against the Vegas spread for a specific game. In the past, everyone shared their picks in a group message, and calculated a leaderboard at the end of each week and again at the end of the season, but all that was a ton of work, so we made it easier!

Five in the Hive is Kane’s game as a web app. The app is hosted completely on AWS. The front-end is in Angular, hosted in S3, and distributed with CloudFront. The API is written in node, and hosted as a Lambda Function. The data-updating scripts are also hosted with Lambda but written in C#. We use DynamoDB as the database.

Click below to play! It’s a PWA, so if you love it, you can install it to your phone.

Squirrel Petting Simulator Computer Graphics Project

Squirrel Petting Simulator is a game I created for my computer graphics class. The shaders were required for the project, and were written using WebGL. The animation and the game mechanics I coded in just for fun. All of the 3D objects I borrowed from creators online.

Click below to play the game! The controls require a keyboard and mouse, and the game works best on Chrome.

Random Restaurant Amazon Alexa Skill

Random Restaurant is an Alexa Skill that helps people decide where to eat. Often, friends may disagree on what to have for dinner, or if someone is new to an area, they may not be aware of all the nearby food options. Users can simply say “Alexa, ask Random Restaurant for a place to eat”, and the app will give them a restaurant recommendation that is nearby and currently open.

The Skill is hosted on AWS as a node.js lambda function. It works by collecting the user’s address from the device that makes the request. It then passes that information to the Yelp public API, which returns a list of nearby and open restaurants. From that list, one restaurant is randomly chosen and suggested to the user. Users can also request a specific type of food or limit the price range of the suggested restaurant.