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, but I am proficient in both frontend and backend technologies.

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: 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: BackboneJS (with Marionette), AngularJS, Google Web Toolkit, CoffeeScript, SASS & SCSS, Grunt, JQuery, HTML5, CSS3, Handlebars, Jinja2, JSP

Other Tools: Git, Subversion, UML, Scrum methodology, Crucible, JIRA, FFMpeg, x264, PaaS Providers (AWS, GCE, Heroku, AppFog), Debian packaging, Unix, SSL & TLS

Java

Python

C & C++

JavaScript

HTML & CSS

Video Encoding & Delivery

Relational Databases

NoSQL Databases

2016 - Present

Insight Global - Verizon Labs

Cloud Software Architect, Contractor

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

Developed the video transcoding and delivery platform for VR experiences.

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

Created the common services framework for all microservices, built on Spring Cloud, Spring Boot, and Spring Security.

Deployed and supported microservices deployed to Tomcat and Apache on Amazon Web Services cloud platform.

Centralized configuration management using Spring Config Server, automated deployments using Jenkins for continuous delivery.

Coded applications using Hibernate and Spring Data for persistence, and ActiveMQ for message processing across services.

2013 - 2016

Domo, Inc.

Senior Software Engineer - Web 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

Move Networks / 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 - Web 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 Computer 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.

Google Contact Sync

Website that syncs LDS contacts with Google contacts

Using Google App Engine, I wrote an open source, free website that will connect to a user's Google account to update their contact information. It uses OAuth 2.0 for authentication and security and Python for backend processing. See it live here.

My Branches

Web Application used to order custom artwork

Another Google App Engine app, using AngularJS on the client. 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.