Hello, I’m passionate about technology and how it can be used to build simple solutions to difficult problems.

I've spent most of my professional career doing web services development, with a focus on video delievery, solutions architecture, and microservices.

I've discovered that you don't need to choose between doing it right or doing it fast. Using the right tools, you can get things done quickly, reliably and elegantly.

When I'm not coding up the Next Big Thing®, I enjoy reading, skiing, and spending time with family and friends.

I'm experienced in architecting solutions using proven design patterns and object oriented principles. Here's a summary of the technologies I've used recently:

Backend Technologies & Frameworks: AWS Chalice, Spring Framework, JEE (including JAX-RS using Jersey), Jackson (JSON processing), Servlets, Jetty, Tomcat, Google App Engine, Flask, Grails, Memcached, AMQP messaging, MyBatis, Liquibase, XML, Bigtable, JDBC

Frontend Technologies & Frameworks: React, Angular, TypeScript, Backbone (with Marionette), Google Web Toolkit, CoffeeScript, SASS & SCSS, Grunt, JQuery, HTML5, CSS3, Handlebars, Jinja2, JSP

Other Tools: Maven, Gradle, Git, Continuous Deployment, UML, JIRA, PaaS Providers (AWS, GCE, Heroku), Debian packaging, Unix, SSL, and TLS

Java

Python

C & C++

JavaScript

HTML & CSS

Video Encoding & Delivery

Relational Databases

NoSQL Databases

Amazon Web Services

2016 - Present

Verizon

Cloud Services Architect / Principal Developer

Technical lead and services architect for Verizon Envrmnt, a virtual reality platform.

Defined high level architectural specifications across various backend microservices, ensuring feasibility and functionality with disparate systems.

Utilized serverless designs for various computational components, leveraging the power of AWS platform to scale to thousands of users. Built apps using AWS Chalice for full serverless solutions built on Python Lambda functions.

Developed the ingestion, authoring, and video encoding workflow. Utilized FFMpeg and Elastic Transcoder for encoding and Wozwa Streaming Engine delivery.

Created a common services framework for multiple microservices, built on Spring Cloud, Spring Boot, and Spring Security. Automated deployments using Jenkins.

Deployed and supported microservices deployed to Kubernetes, ECS, EC2, and Lambda with API Gateway.

Coded applications using various relational and non-relational databases for persistence, and ActiveMQ for message processing across services.

Extensive use of the AWS platform including compute, containers, database, media services, and security.

2013 - 2016

Domo, Inc.

Senior Software Engineer - Cloud Services

Core services engineer for Domo, a SaaS based business management platform.

Designed, implemented, and maintained the RESTful backend services using the Spring Framework.

Technical lead for the content service, which manages viewing, organizing, and creating visualizations in the product.

Utilized the MyBatis SQL framework for data persistence and Liquibase for database migrations.

Lead developer over the translation of a customized query language to SQL for visualizations.

Before working on Domo, I was the lead services developer for BattleCard, a web application used for competitive intelligence.

Added fault-tolerance and a new testing framework on top of a Dropwizard-like custom framework to ensure uptime and stability.

Dramatically improved server response time using distributed Memcached servers.

Configured task queue management using Quartz scheduler and inter-server communication using AQMP message passing.

Designed an asynchronous request handling mechanism in Jersey 1.x

Optimized existing MongoDB queries by modifying indices, refactoring models, and rewriting queries. These changes allowed for more real-time queries such as immediate search and auto-complete for a better UX.

Created various client features and views using Backbone.js and RequireJS, for a single page app experience.

2011 - 2013

Sling TV / Echostar

Software Engineer - Encoder Team Lead

Designer and architect for Encoder project, responsible for capturing and high performance transcoding various video sources into an adaptive bitrate for Sling TV.

Re-architected the workflow in Python to allow for capture of live TV sources, while still maintaining existing workflow for static movie files.

Created a multithreaded architecture for creation and output of encoded assets, improving speed of throughput.

Significantly improved the code reliability of the system by refactoring the core pipeline process, adding pylint checks, and engineering a testing framework.

Added improvements to the FFMpeg library; used for decoding and segmenting various video formats in an efficient manner.

Added various layers of fault tolerance to ensure a constant signal and better user experience for customers.

Improved monitoring and communication with external systems to get faster and more accurate real-time data about the state of the encoder.

Changed the workflow to allow the encoder to immediately start encoding a new asset without having to restart the program. Before this improvement there was a signal loss as the encoder was restarted every 24 hours.

2008 - 2011

Adaptive Computing

Software Engineer - API Development

Promoted to Senior Engineer in August 2010

Senior developer for Viewpoint, a web portal designed to manage and use the Moab intelligence engine. (Software as a service)

Implemented a framework to embed any web page into GWT-created pages and communicate using a JavaScript API.

Designed and implemented web services for various object calls, while maintaining compatibility with GWT’s RPC mechanism.

Created a framework to customize form creation and action logic using XML. This allowed administrators to easily customize the various forms in a single file.

Helped design and implement a poller that cached Moab’s data for web services consumption using Hibernate.

Created a fully documented Java API used to connect to and administer Moab.

Principal developer for Moab Cluster Manager, a multi-threaded client application written with Java Swing. Created various pages and UI components including a visual cluster view of the client’s datacenter.

Helped with re-layout of the application’s navigation, switching to a tabbed layout with a built-in docking for the various pages.

Performed performance analysis and decreased memory consumption in XML parsing by over 50% by using a SAX parser.

Developed a Java API for IBM’s xCAT. This API simplified communication to the server using a local, process based connection or SSH key connection.

2006 - 2008

BYU - Religious Education

Web Developer and Application Support

Developed and maintained website using PHP, JSP, and Ajax technologies.

Managed Microsoft IIS web server, as well as SQL database for department inventory, users, and groups.

Supported about 100 employees with various services, from troubleshooting to finding software solutions to a wide range of problems.

Created documentation for problems and different solution proposals, to help both clients and support representatives in the future.

2004 - 2008

Brigham Young University

Computer Science

Minor in Business Management

Graduated with emphasis in web applications and operating system design in April 2008

Took 2 years off from 2002 to 2004 to volunteer as a missionary in Brazil, where I learned to fluently speak, read, and write in Portuguese.

XBMC Project

Created a plugin to make video more family friendly

I've hacked on the core XBMC code (written in C++), as well as created a plugin (Mute-Profanity) written in Python. Check it out here.

SweepsCoach

Project to track and monitor internet usage

Created a client application using Adobe Flex to track and manage internet usage for a friend's business. This application communicated with a backend written in PHP that interacted with a MySQL database.

My Branches

Web Application used to order custom artwork

A Google App Engine app, using AngularJS on the client, and Python on the backend. Built my own authentication and user model on top of the webapp2 framework. Application allows users to create, manage and track orders. Check it out here.