Engineer by day, Superhero by night — Amazing all the time

About Me

Travis V. Anderson has a BS in Mechanical Engineering from Brigham Young University. Now he's concurrently working on an MS in mechanical engineering and an MBA at BYU. Travis is a self-described data-visualization-and-analysis expert, and has 8 years working in front- and back-end web development.

My Sites

When I came home from my LDS mission in Santiago, Chile, in August 2005, I got a job as a student employee, working 20 hours per week on campus in the BYU Campus Accommodations Office. This office handles all of the contracting and collection of rental and other payments for the approximately 5,000 single students and families who live in university-owned housing.

One of my responsibilities the following spring/summer was to take care of the “placement,” which means taking each of these 5000 residents, matching them up with a roommate based on a profile survey they had filled out, and then give them a room assignment. This was done by hand, person by person. Needless to say, it was a very time-intensive and laborious process.

After spending several months working 60-hour weeks on the placement that first year, I then learned a really important lesson: people tend to care a lot about where they live and who they live with. After room assignments were distributed to students, we received hundreds and hundreds of phone calls of unhappy and sometimes irate people who just had to live in X room, or who looked up their roommate on Facebook and there was no way they would ever live together. I did what I could to move people around, but in many cases, there simply wasn’t any thing I could do to “fix” their situation.

I had a background in software development, and I envisioned a better approach to take: a self-service web application where students could see a floor plan of all our available rooms, and choose their own room themselves (something similar to selecting your seat on an airplane). They would be able to browse the profiles of other people living in that apartment or nearby. They would be happier knowing they could control their own fate, and it would be a huge benefit to our office as well.

Admittedly, it took a little bit of convincing to get the support from management to build this, but ultimately they trusted me enough to let me try. I was able to put together a team of other very bright and talented student programmers, and together we created my online room selection.

The next year, we used my Room Selection process to handle all of the contracting for all our residents. Immediately, we noticed about a 95% decrease in the number of complaints we received–A HUGE increase in customer satisfaction! Over time, we were able to reduce about 10% of our total annual operating budget due to reductions in staff (including full-time employees) and savings from paper, printing, and postage. Additionally, our new system saw about 3.5M page views that first year, processed over $35M in financial transactions.

I was asked to present my Room Selection process a couple of times to a housing conference of several hundred universities from all over the world. Here is a YouTube video the office produced more as a tutorial on the room selection process, but it also demos a little bit of what the room selection does:

Room Selection Process Tutorial - BYU On-Campus Housing

I started working full-time a year later, in 2007, managing my little team of developers. The Room Selection soon morphed into what we now call My Housing Account, which includes not just the contracting process, but a whole suite of workflow and tracking software (family apartment selection, room swaps, contract sales, contract petitions, financial petitions, job applications, message board, data collection, etc.). Eventually we added a “My Dining Account” component as well to manage meal plans for Dining Services.

By the time I left in 2010, we had amassed a 25-TB Oracle database and had our application running on a web farm of six production web servers. I had custom-written integration code and interfaces to tie My Housing Account directly to our commercial university financial software, meal plan software, building access security software, and a few other systems on campus.

All-in-all, this was a great experience. I learned a lot, and I feel like I was able to achieve and contribute a lot. My Housing Account is still being used by thousands and thousands of on-campus residents each year.

As a second-year MBA student at Brigham Young University, I’ve been involved on the leadership team for the Miller (named for Larry H. and Gail Miller family) New Venture Challenge. The leadership team basically runs everything. Formerly the Business Plan Competition, we’ve made a number of really awesome changes this year (including renaming it to the NVC). One of the biggest changes is that we’ve created a “BYU Launchpad”, which is essentially modeled after an incubator program. So instead of giving away large amounts of money to first, second, and third-place teams, we’ve decided to award EACH of the top EIGHT teams at least $15,000. During the course of the summer, these 8 teams will continue working on their business, and next October come back again for an opportunity to raise capital from investors.

This year, we had 50 teams enter the competition. In the first round of judging, we recruited about 65 judges, and each entry was reviewed independently by at least 9 different judges. The top 20 teams then had the opportunity to present live yesterday to a panel of VC judges (REES Capital, Pelion Partners, Peterson Ventures, Kickstart, Alta Ventures), who selected our eight winning teams.

At the beginning on the year, we paid $3,000 to purchase a software service called MyReviewRoom, which was going to allow us to collect submissions and enable the judges to review each entry. As I was getting it all setup for our first-round of judging… Well, let’s just say it would have been extremely cumbersome to use, and would have required several minutes of manual labor (including typing in YouTube URLs by hand) for each judge just to get the entry pulled up, not even counting the review time. These judges are so busy, and have been very generous in agreeing to donate so much time during a short turn-around period to help with the judging. Consequently, I didn’t want to have to put them through the torture of using MyReviewRoom to do their judging.

So, I took a few hours and built my own submission judging system. It automatically randomly assigned entries to judges, and allowed the judges to go in and review each entry. The YouTube videos were embedded on the page, and a link was provided right there to download the Executive Summary. Judges could then enter their scores for the entry, add feedback and comments, and then move on to their next assignment. When all the judging was complete, all the applicants received an email where they were able to go in and view the scores and comments anonymously from all the 9+ judges who looked at their entry.

Needless to say, this quick little web app saved TONS of time and frustration for these busy judges!

Last September, ASME’s Journal of Mechanical Design published a technical paper I wrote as part of my mechanical engineering master’s research.

This peer-reviewed paper is about error propagation through design models. Essentially, a Taylor series is often used to propagate error through closed-form engineering models. However, designers typically assume outputs are Gaussian, and neglect any higher-order statistics (such as skewness and kurtosis). This paper shows that skewness and kurtosis can also be propagated using a Taylor series with little additional computational cost, but tremendous improvements in overall accuracy.

System models help designers predict actual system output. Generally, variation in system inputs creates variation in system outputs. Designers often propagate variance through a system model by taking a derivative-based weighted sum of each input’s variance. This method is based on a Taylor series expansion. Having an output mean and variance, designers typically assume the outputs are Gaussian. This paper demonstrates that outputs are rarely Gaussian for nonlinear functions, even with Gaussian inputs. This paper also presents a solution for system designers to more meaningfully describe the system output distribution. This solution consists of using equations derived from a second-order Taylor series that propagate skewness and kurtosis through a system model. If a second-order Taylor series is used to propagate variance, these higher-order statistics can also be propagated with minimal additional computational cost. These higher-order statistics allow the system designer to more accurately describe the distribution of possible outputs. The benefits of including higher-order statistics in error propagation are clearly illustrated in the example of a flat rolling metalworking process used to manufacture metal plates.

This last summer, I did an internship for Lands’ End with the Global Inventory Strategy group. At Lands’ End, they plan on starting a line of clothing at full price, and then periodically marking down the price throughout the season. This is to ensure they move through their entire lot of inventory in the time period they have allocated. Right now, the decision about when and how much the markdowns should be is entirely arbitrary based on past experience, but they’d like to introduce more data analysis into the decision. The ability to optimize the markdown schedule will potentially make a difference of tens of millions of dollars per year.

Lands’ End has been working off-and-on for the last few years trying (unsuccessfully) to create a demand model showing price elasticities. This will tell them if they change the price by X% that the sales units should change by Y%. They have amassed an enormous amount of sales data, but there are so many factors that affect demand that they’ve been unable to build a model with the data they have (e.g., time of year, time of month, temperature, marketing efforts, email campaigns, ad campaigns, competitor behaviors, clothing attributes, etc.). They looked at purchasing a commercial piece of software to accomplish this, but with a price tag of $1M, they didn’t have the budget for it. That’s where I come in…

I first brought in over 260M records of sales data. I then wrote a script to scrape historical weather data from Wunderground.com, and used Topo.ly to match the weather stations to the nearest zip code. I then pulled all this weather-data-by-zip-code into my massive data set. I then took all the marketing data and pulled in media drop dates, catalog circulation quantities, etc. Since I was only interested in price elasticity of demand and not actual demand, I had to come up with some way I could compare change in quantity of a $5 item with a $100 item. So I normalized the prices for each item by it’s average sales price over the last 6 years and thus created a price index. I also had to perform a bunch of other data manipulations to get all the variables I wanted to consider.

With this massive data set (over 100GB of data), I built a multivariate regression script to perform a multi-threaded regression on all 260M data points with all 60 variables. I looked at all first- and second-order variables and all first-order interactions, giving over 2000 inputs to the model. I then checked things like goodness-of-fit, correlation, heteroskedasticity, statistical significance, etc. The regression used least-squares, and I had three different regression algorithms (linear algebra, simulated annealing optimization, and quasi-Newton optimization). I had to run this script using a massive server with 128GB of memory and 16 CPU cores, which I essentially maxed out for about a week.

Upon completion of my regression, I then built a Markdown Price Optimization Tool (as in the screenshot above) that would import this statistical model, convert it from being based on marginal sales data to a cumulative overall demand curve, index the output quantities, and then perform an optimization on the actual markdown schedule. To use the tool, I input the clothing category, projected future media drops, average selling price, the quantity I have in inventory, the start date, and the number of weeks I have left to move through my inventory. I then click the “Optimize” button, and the tool performs an optimization that tells me how much and when I should markdown the price in order to maximize my revenue while still ensuring I move through all my inventory in the time allotted. The output is given in 5 different charts (weekly price, weekly, revenue, cumulative revenue, weekly quantity, and inventory level) and in a data table that can be copied to Excel.

This is a really fun and very data-intensive project to work on. I’m quite pleased with the result. I had the privilege of showing it to the vice president that oversees the planning teams, and nobody had ever seen him so excited about anything before. It has the potential to make a difference of tens of millions of dollars.

Today I received an email from Debbie Ruse, the assistant director of BYU’s MBA program. In the email, she notified me that I am in the top 10% of my MBA class! Here’s a copy of that email:

Travis: It is my pleasure to notify you at the end of your first semester (end of fall 2011) you are in the top 10% of the class of 2013. Congratulations on this very impressive accomplishment. This will not be posted anywhere and we will not communicate this to anyone but you. However, by receiving this notification you can put this on your resume.
Congratulations and thank you for choosing BYU to pursue your MBA.

This month, ASME’s Journal of Mechanical Design published a technical paper I wrote as part of my mechanical engineering master’s research.

This peer-reviewed paper is about error propagation through design models. The formula typically used to analytically propagate error is based on a first-order Taylor series expansion, and consequently, it can be wrong by one or more orders of magnitude for nonlinear systems. Using a higher-order Taylor series does improve the accuracy of the approximation, but this comes at higher and higher computational cost. This paper presents a technique for error propagation that achieves higher-order accuracy but without the additional higher-order cost. This is accomplished by predicting the Taylor series truncation error and applying a “correction factor” to the lower-order model.

Title

Efficient Propagation of Error Through System Models for Functions Common in Engineering

Abstract

System modeling can help designers make and verify design decisions early in the design process if the model’s accuracy can be determined. The formula typically…moreused to analytically propagate error is based on a first-order Taylor series expansion. Consequently, this formula can be wrong by one or more orders of magnitude for nonlinear systems. Clearly, adding higher-order terms increases the accuracy of the approximation but it also requires higher computational cost. This paper shows that truncation error can be reduced and accuracy increased without additional computational cost by applying a predictable correction factor to lower-order approximations. The efficiency of this method is demonstrated in the kinematic model of a flapping wing. While Taylor series error propagation is typically applicable only to closed-form equations, the procedure followed in this paper may be used with other types of models, provided that model outputs can be determined from model inputs, derivatives can be calculated, and truncation error is predictable.

While watching the results from the nail-biting 2012 Iowa GOP Caucus come in, I became frustrated with how long it took news sites to update their tallies after the state GOP updated their results with the latest counts.

Doing some research, I discovered the Iowa state GOP released their results to the public by updating a Google Fusion table. Unfortunately, especially in such a close race, there was a pretty significant delay (at some points, as long as 20 minutes) before news sites wouldn’t update the tallies they were reporting. So half-way through the evening, I decided to build a quick website that would pull the results straight from the source—The Iowa GOP—in real time (well, I guess it would refresh every 10 seconds). Here is the result. It’s not much to look at, but I only had about an hour to do it, and it was my first forray into the Google Fusion Tables API.

Basically, my thesis uses a Taylor series expansion to estimate the distribution of system model outputs resultant from propagating error in system inputs through a system model. I show how variance can be propagated more efficiently and accurately, producing fourth-order accuracy with only second-order computational cost. I also show that output skewness and kurtosis can be estimated.

All of my committee members thought I did really well, and were very impressed by my presentation, the quality and clarity of my writing, and the research work I have done. One of my committee members, Dr. Chase, was particularly excited about my work. He’s in his seventies (he retired last year, but still continues teaching as an adjunct faculty) and has spent his entire career in the field of assembly uncertainty and tolerance analysis. He’s really excited about the contributions I’ve made to uncertainty analysis and its applicability to tolerance analysis. He said mine was one of the best defenses he’s ever been to ("And I’ve been here a lot of years!"), and he asked for a copy of my defense presentation to use as an example for all his current and future grad students.

Since my work was so math-intensive (not very advanced math, but a lot of it), I’ve had Dr. Fullwood, who has his Ph.D. in math, review my papers before I submitted them for publication. He said I’m an exceptional writer. My advisor, Dr. Mattson, said there’s not a single thing that could’ve gone better in my presentation.

There are a lot of different fields within mechanical engineering, but the one that I’m most interested in is engineering design. This last spring term, a professor at BYU sponsored a research project looking at historical trends in engineering design publications. I applied and was selected to be on the team of three.

Basically, we gathered and analyzed data from the Library of Congress and identified some major trends in engineering design publications. We created a video (below) to show our findings. The video’s not the best quality, but I only had a week to do all the filming (with an inexpensive camcorder and no external microphone… Sorry!), get the photos, put in all the effects with the graphs, and do all the editing. But I still think it turned out pretty well:

The History of Engineering Design (according to the Library of Congress)

The Library of Congress provides an API to facilitate search queries of its database. This API (implemented through a number of different REST webservices) allows a user to perform a search query and retrieve the query results. I wrote a script to consume these webservices and obtain the information we desired. I even used some multi-threaded programming in the script. It would monitor its own progress, and as appropriate, spawn new threads to asynchronously process multiple search queries at the same time. AWhen the work-load became too much for the network and/or computer to handle, threads were killed off as the results were processed. Since the data was all stored in a central location, multiple instances of the script could be run simultaneously, if desired, even on different computers. Even still, it took a few days to get all the data we needed.

In all, we obtained over 150,000 books published on the topic of engineering design, but only about 100,000 of them had a known publication date and a publication language. I built a quick data viewer that uses Google’s Charts API to quickly show the results, accessible at http://loc.travisvanderson.com.

For my optimization class last semester, I built an entire chess game using HTML and JavaScript. I also wrote an artificial intelligence algorithm to play as a computer player. My algorithm has about 20 different parameters it uses to score each move and decide which move it should take. For my optimization class project, I then wrote a real-value genetic algorithm with to optimize these 20 parameters to find the “best” settings for the computer player.

My algorithm here only does a two-ply (easy setting) or a three-ply (hard setting) search. With more computing power, this could be increased to improve the “skill” of my computer player. I ran my genetic optimization algorithm on the two-ply search, and that alone took a pretty significant amount of computing time:

Total Generations:

31

Total Players:

128

Games Played:

1,832

Turns Taken:

637,900

Processing Time:

3,830 core-hours (160 continuous days)

There are still a few small bugs that need to worked out (castling sometimes doesn’t work properly, en passant isn’t possible, and a stalemate is treated as a checkmate). But overall, it’s been a fun project to work on!