I'm a 4th year CS student at BYU, and will graduate in December 2019. During school, I'm a (part-time) software engineer at Instructure, working on services and underlying platforms that helps Canvas run a little bit easier and a little more secure.
My wife and I traveled to Seattle for a summer, where I worked on Microsoft's Whiteboard app. This app aims to redefine remote collaboration by presenting a refined digital canvas, and I am proud that the improvements I made are now live.
In 2018, I worked on the Devops team at Lingotek, where I built an internal tool to make container orchestration a little easier and to allow developers to deploy their own code.
Over two summers, I worked for Instructure as a software engineer intern. My team and I rolled out two new services to our users built on AWS's Kinesis and S3. I loved the exposure to new technology, and felt privileged to start the groundwork on a service and then be part of releasing it the year after.
I've discovered that helping my team do their best work is what fulfills me. This usually takes the form of good documentation and proper tooling. I've had the opportunity to build multiple deployment tools that have saved so much time and made the process so much easier. I fully subscribe to the attitude of "leave it better than you found it"!
When I'm not coding or in class, I'm usually reading whatever I can get my hands on. I love absolutely everything about Star Wars and could spend hours raving about the story, the drama, the music, the movies, the shows, the books, and everything else. I'm a 4-year member of the BYU Men's Chorus, the largest and greatest collegiate men's chorus there is. I also enjoy playing the organ, though I don't pretend to be very good.
I spent a semester abroad with my wife, as volunteers teaching English in Russia. It was an amazing adventure and we loved getting to know the kids we taught and exploring the history and sights of Russia and Europe.
Built for the BYU choirs, this sheet automates the work of organizing choir members by height and section, calculating section sizes and seats, and putting it all together. It generates a seating chart configured to the user's liking, the same chart in list format, and an alternate chart to mix it up.
Google App Script
Keeping customers in the loop is very important at Instructure. Canvas generates "live events" for many actions that are taken by users in the system, and sends them to interested subscribers for their own use. I kept this system from being overwhelmed by the volume of events, and re-wrote key pieces to run much faster.
Internal - Instructure
Instructure has excellent internal deployment tools, but these tools lack proper support for deploying AWS Lambda functions. Instead of treating Lambda functions as only infrastructure that needs provisioning, Elysium treats the function code as releases that can easily be deployed, changed, and rolled back. Elysium can be added to a project with a simple config file, and has removed a significant amount of friction from deploying the Lambdas associated with Canvas Live Events.
Internal - Instructure
This whiteboard started as a simple canvas for drawing, but has transformed into a powerful collaboration tool that is bundled with every Microsoft Teams meetings. I contributed to easy object organization and alignment by snapping object rotation to the cardinal directions and snapping an object to other nearby objects, which made it easier to resize objects without unwanted rotation and neatly organize groups of objects.
I enjoy using the Pomodoro technique to manage my time, but wasn't satisfied with the existing timers out there. So, I built my own. This was a hackweek project and took less than a week of work to get running, thanks to Nuxt and the beauty of static sites.
A fundamental change to the way Canvas and other Instructure handles files from users. I introduced a Kinesis -> Lambda batch processing stream, migrated a massive Dynamo database, and provisioned and deployed it to multiple AWS regions. This service consolidated several disparate and insecure code paths for file uploading into one, removing a huge chunk of dead code.
Internal - Instructure
A bare-bones text parser that looks for keywords and regular expressions and plucks them out of the text. Inspired by Todoist's Quick Add functionality, which uses Natural Language Processing (NLP) to understand what you type. This is a very simple version (<100loc!), but was an interesting exercise in using regular expressions.
Lingotek depends on Mesos and Marathon for container management, but the Web UI had been marked as deprecated and was lacking needed features. I built this from the ground up as a wrapper around Marathon API calls. It replicates the existing Web UI and provides extended features that reduced a 5-step deployment process (editing JSON!) to 1 click.
The GPA calculator is my version of a "Hello World" for a language - easy logic, actually does something, and is just complex enough to get a sense for the language and tools. I've been curious about Elm for a while, so I did something about it and built this.
I wanted to make an iOS app, and needed something simple to test the waters with - enter the trusty GPA calculator. For this, I decided to use Swift alone, with Xcode's Storyboards providing the design.
This plugin helped my team at Instructure drop its dependency on
nodemon for live reloading. However, it didn't have the capability to allow arguments on
node or the server script. I added those capabilities and submitted a PR. One day, it'll get merged...
My team of 3 built this website from the database up to help serve the BYU community by giving them a Quizlet-like website that integrated with BYU's LMS. In addition to scoping and building both the API and front-end, one of my responsibilities was collaborating with designers on features that students would appreciate and use.
This site is a simple one, built in (mostly) plain HTML and Sass. Originally started in React before realizing that was too complicated. Learned some interesting lessons with my first attempt at a small React app, but development was much easier on a more simple scale.
August 2019 - Present
May 2019 - August 2019
April 2018 - May 2019
December 2017 - April 2017
August 2017 - December 2017
April - August 2017
April 2016 - April 2017
February 2016 - February 2017
Docker + Docker Compose
HTML + CSS