Reflective Metatesting. Protecting You from Yourself and Everybody Else.

November 16, 2016

Infrastructure projects often take user-defined configuration classes as input. I’ve worked on several during my tenure at Wealthfront. You cannot trust the validity of these configurations, even if you wrote them yourself. A pattern I’ve grown to love is writing JUnit tests that use reflection to gather all the input classes to run a suite… Read more

How to Make Your Persistent Queues Run Faster Safely

May 04, 2016

What is a Persistent Queue? A persistent queue is a list of objects that persist in the database waiting to be polled and processed in some way. Usually it is a table that has columns for data, timestamp of when the object persisted, and timestamp of when the object is polled. As opposed to an… Read more

Building Mobile A/B Testing Infrastructure

April 11, 2016

Twenty years ago, one would have hardly heard the phrase “A/B testing”. In 2000, Google served its first A/B test to determine the optimal number of search results to display. In 2011 alone, they ran 7000 A/B tests across their platforms. A/B testing has become the bread and butter of product decision-making for Silicon Valley… Read more

iOS UI Testing

September 16, 2014

I was initially attracted to Wealthfront by its great business model and engineering driven culture. But after visiting the office, I was convinced that I belonged to Wealthfront because of the strong emphasis on test driven development (TDD), continuous integration, and rapid deployment. Furthermore, a solid foundation had already been laid for the iOS initiatives… Read more

Testing Cascading applications

October 15, 2013

This post explores how we apply our test-driven-development philosophy to analytics problems. In particular, it shows how use test-driven development with Cascading, which we’ve recently started using to drive analytics at Wealthfront. Cascading let’s us specify complicated analytics pipelines in Java. It works well for problems that would normally require multiple MapReduce jobs to get a… Read more