Downloadable PDF

Education

Doctor of Philosophy, Computer Science — Brigham Young University — Provo, Utah

April 2020

  • Research interests include Control Systems, Cyber Security, Data Analysis, Machine Learning, Software Verification
  • Current projects include Cyber-Physical System Robustness and Contingency Analysis of Power & Water Systems
  • Advised by Dr. Sean Warnick of the BYU Information & Decision Algorithms Laboratories to apply current research to real-world problems
  • Teaching Assistant for CS 611: Advanced Computer Theory

Bachelor of Science, Computer Science — Brigham Young University — Provo, Utah

April 2016

  • Minor in Mathematics
  • Cumulative GPA: 3.4/4.0
  • Member of the Association for Computing Machinery, BYU Chapter & the BYU Developers Club
  • Teaching Assistant for CS 312: Algorithm Design & Analysis


Tools used: C/C++ • C# • Java • JavaScript • MATLAB • Python • Apache Spark • Docker • Git • Linux/Bash • MPI & CUDA

Experience

Director of Engineering — Achilles Heel Technologies — Provo, Utah

Jan. 2018 - Present

  • Responsible for product technical development, implementation, and maintenance
  • Representing capabilities of cyber-physical vulnerability to potential clients, investors, and stake holders
  • Fostering academic and industrial partnerships among university and private research laboratories
Tools used: Python • JavaScript • PostgreSQL • AngularJS • Docker • Git

PhD Intern — Pacific Northwest National Lab — Richland, Washington

Jun. 2017 - Present

  • Selected for the National Security Internship Program in the Computing and Analytics Division of PNNL
  • Researching methods of conducting contingency analysis of power and water infrastructure models
  • Developed component models to capture integrated power and water dynamics
  • Future work to include submission of conference paper and implementation of analysis software
  • Poster describing status of project as of Aug. 2017: NSIP Intern Poster Session PNG (421 KB)
Tools used: Python • Java • MATLAB • Jupyter Notebooks • Git

Research Assistant — BYU IDeA Labs — Provo, Utah

Sep. 2015 - Present

  • Leading development of a web application using vulnerability research of cyber-physical systems
  • Developed and presented project architecture to personnel of sponsoring agency, the Dept. of Homeland Security
  • Conducting analysis on financial market and client data to produce predictive models
  • Assist and collaborate with lab personnel with other projects within the IDeA Labs
Tools used: Python • JavaScript • PostgreSQL • MATLAB • AngularJS • Docker • Flask • GitLab

Software Engineer in Test Intern — Instructure — Salt Lake City, Utah

Apr. 2016 - Jul. 2016

  • Worked with the Data Analytics team to improve test coverage and deployment efficiency
  • Created a framework used to test production SQL that is used in the Instructure ETL process
  • Began a machine learning project with the aim to identify students that teachers should assist
  • Refactored existing codebase to facilitate project needs, like strict typing within Apache Spark SQL
Tools used: Scala • JavaScript • Apache Spark • Node.js • SQL • Docker • Git • IntelliJ • Jira • SBT

Software Development Engineer Intern — Microsoft — Redmond, Washington

May 2015 - Jul. 2015

  • Implemented a feature to mitigate a social engineering attack vector within Microsoft Office
  • Utilized an existing framework to add telemetry tracking of related features to assist business decisions
  • Created a development plan in coordination with the Project Manager based on given specifications
  • Coordinated with other organizations within Microsoft to integrate the project with the existing codebase
  • Authored scenario tests to verify the integrity of the project as development continues
  • A knowledge base article about this feature can be found here:
    Microsoft TechNet: Block VBA macros from running in Word, Excel and PowerPoint files from the Internet in Office 2016
Tools used: C++ • C# • Source Depot • Visual Studio

Teaching Assistant — BYU Dept. of Computer Science — Provo, Utah

Jan. 2015 - Apr. 2015

  • Assisted with the professor in administering course materials for CS 312: Algorithm Design & Analysis
  • Prepared help sessions to familiarize students with C# and projects required for the course
Tools used: C# • JavaScript • Markdown • Git • Visual Studio

Web Application Developer — BYU College of Life Sciences — Provo, Utah

Jan. 2014 - Sep. 2014

  • Developed and maintained different applications used by various departments, faculty, and students
  • Updated large existing code bases to improve performance and add features to existing applications
  • Integrated an SQL database to a C# technical support application to monitor computer systems
  • Implemented an Alpaca nutrient calculator for a BYU research project using JavaScript and jQuery
Tools used: C# • ASP.Net • JavaScript • jQuery • HTML/CSS • Team Foundation Server

Technical Support Engineer — Bluehost — Orem, Utah

Jan. 2013 - Dec. 2013

  • Diagnosed and resolved problems with databases, web applications, system and network settings, etc.
  • Continually exceeded company goals for client satisfaction while taking over 1500 support calls
Tools used: Linux • Bash • PHP • MySQL • Wordpress • IMAP/POP3/SMTP

Projects

Static Secret Santa — Personal Project

Aug. 2017, Ongoing

My extended family decided to participate in Secret Santa this year, and I came up with this as a way to compile all of the information, determine the pairings, and then distribute the assignments. I searched the Internet for something that would be relatively simple to use and deploy but nothing seemed to fit, so I decided to patch one together from a few other open source projects. It was done quickly during a few free hours on the weekend, so I wouldn't call it much of a project, but it works well enough.

The project is a couple of NodeJS scripts merged with a few Mustache templates to generate a static website from information contained in a JSON file. Setup consists of configuring the project parameters, editing the information for the participants, running the scripts (which generate the site and then send emails out via an SMTP account), and then copying the static site to a web server.

Tools Used: HTML/CSS • JavaScript • NodeJSMustache

Jekyll Album Template — Personal Project

Aug. 2016, Ongoing

On one hand, I'm a bit of a fan of Jekyll, the static website generator that powers this site as well as GitHub Pages. On the other, my wife and I recently had an adorable baby whose pictures need to be appropriately shared with loved ones. I tried a few things, but I wasn't satisfied with either ownership of the images when uploaded, or the process with uploading them to the service. So I combined these two things to (mostly) automate this. I use Syncthing to automatically sync my phone, my default camera, to my computer. With the photos already automatically being uploaded to my computer, I set up a chron job to run a script that uploads images to a folder on a server that hosts the site.

Where this project comes in is in generating the album. The template defines albums as images within specified folders, and then the cron job that uploads the server just needs to build the Jekyll site once the photos are uploaded. All I need to do is take the pictures, and put them in the right folder to be uploaded. The generated album uses lazy loading to help save bandwidth, and is friendly for mobile devices, including a swipe-able light-box for viewing individual images.

Tools Used: HTML/CSS • JavaScript • JekylljQuery • Liquid (Template engine for Jekyll)

Mission Impact Situational Awareness tool — BYU IDeA Labs

Sep. 2015 - Present

This project is federally funded to provide a prototype web application that can evaluate the robustness and security of a cyber-physical system. Aimed towards modeling attacks on critical infrastructure, the application should be able to determine weaknesses within the system, suggest reconfigurations, and assess the impact of a given attack on the system mission. My role with this project has been to help the development of the web application and design the architecture of the system.

Tools Used: AngularJS • PostgreSQL • Python

Apache Spark SQL query testing framework — Instructure

Apr. 2016 - Jul. 2016

Instructure makes use of Apache Spark to transform and send data from the production database into a data warehouse that can be queried by clients for their own purposes. I implemented a Scala framework that provides automated testing to the production SQL queries. This allows for a faster response time from the Data Analytics QA team to test new queries, meaning increased productivity for engineers and greater satisfaction from clients.

Tools Used: Apache Spark • Node.js • Scala

Tracking Illness using Big Data — BYU CS 401R: Big Data Science & Capstone

Jan. 2016 - Apr. 2016

Using publicly available data sources we visualized symptoms of diseases as they came up over time within the United States. We conducted a scalable data exploration project with an emphasis on social media data. Using an open source Twitter archive, we attempted to use sentiment analysis and other features, both native and derived, of the available data to discover correlations that can be used to identify and predict outbreaks of illness or other events that could benefit national security.

Related article: Undergrad collaborations prime hiring pipeline

Tools Used: Apache Spark • Python • R

Python Sensitivity Analysis for Machine Learning models in Apache Spark (PSAML) is a Python package with the capability of performing sensitivity analysis on ML models from PySpark, namely, subclasses of the `pyspark.ml.model` abstract class. The caller needs only to have a DataFrame of sample data and a trained data model to be analyzed. With a few extra Python primitive parameters for things such as analysis sensitivity and which input columns to analyze, analysis is incredibly easy. The DataFrame containing PSAML analysis is both simple to understand and easy to visualize via graphing libraries, requiring only two Python function calls within your Spark live shell or submitted job.

Related article: Undergrad collaborations prime hiring pipeline

Tools Used: Apache Spark • Python

As part of a group project, I lead our team's effort to create a platform that would host JavaScript games with a focus on mobile support. The idea was to allow for a game to be started at a social gathering within 30 seconds, using mobile devices as interfaces with the game. The minimum viable product was successfully completed, and further development is a possibility. I served in the role of Project Manager for this group project. While I was not able to contribute much in the way of lines of code, I spent most of my time coordinating with the other team members or producing course documents and other documentation.

Tools Used: PostgreSQL • React • Scala

SMS Viewer — Personal Project

Jul. 2015, Ongoing

I had been using a popular app for Android, SMS Backup & Restore, and I wanted to be able to view the exported files within a browser on my desktop. I made this over the course of a few hours one weekend, and it served my purposes. There are some other things I would like to do with it, but haven't had the time.

Tools Used: HTML/CSS • JavaScript • jQuery

Block VBA macros in untrusted files — Microsoft

May. 2015 - Jul. 2015

My internship project was to create an enterprise feature to mitigate an existing social engineering attack vector. Users of Microsoft Office were being tricked into running malicious code in the form of VBA macros hidden inside files that were sent from the Internet. This project allows enterprise administrators to disallow the running of VBA macros in files that were deemed untrusted. A knowledge base article about the feature can be read here:

Block VBA macros from running in Word, Excel and PowerPoint files from the Internet in Office 2016

Tools Used: C++ • C#


Technologies

Languages

C / C++
C# / ASP.Net
HTML / CSS
Java
JavaScript
Python
Rust (learning)
Scala
SQL

Tools & Miscellaneous

AngularJS
Apache Spark
Eclipse IDE
Git / GitHub
Hadoop
jQuery
Node.js
React JS
Visual Studio IDE