Menu

dev2ops Video Q&A: Continuous Deployment requires great testing

November 17, 2010

Thanks to Damon Edwards for the great questions during our interview at Yahoo! Large Scale Production Engineering Meetup.

Continuous Deployment talk at Yahoo! Large Scale Production Engineering (LPSE)

Last night I gave a talk at the Yahoo! Large Scale Production Engineering (LPSE) meetup. They said I had about 20 minutes to talk about continuous deployment at Wealthfront so I went fast, but there were at least another 20 minutes of questions so I was happy to oblige! Thanks to Chris Westin of Yahoo!… Read more

GUI Testing, Without The Gooey Parts

November 16, 2010

Alright, so I know that Java on the desktop has never reached the level of popularity that it enjoys on the server side, but regardless of popularity, there are cases where the requirements favor or maybe even necessitate a desktop solution. Testing a user interface can get kinda sticky, but with the right abstractions, you’ll… Read more

Monitoring Long Running MySQL Queries with Nagios

November 15, 2010

We’ve been using Nagios as part of our monitoring infrastructure from some time now and it has been very useful to monitor our databases. To look at long running queries (those whose running time is measured in seconds) we use the show processlist command. Here is what the output looks like on an empty machine…. Read more

Less IO for your Unit Tests with a Java SecurityManager

November 11, 2010

Our quest for a truly test-driven engineering team has enabled us to confidently ship our software every few minutes. Automated testing is the keystone of continuous deployment, and as a result our unit tests and smoke tests are thorough. Perhaps, a bit too thorough. (Our last unit testing extravaganza in the form of a cyclomatic-complexity-driven… Read more

Computation: “There is no try”

November 09, 2010

Often a complex, multi-step calculation requires your code to react to many circumstances. Typically you use exception handling to separate the normal control flow from error handling: Option<BigDecimal> result = Option.none(); try { result = compute(); } catch (WhateverException e) { // Perhaps rethrow. } if (result.isEmpty()) { // Perhaps retry, or set a dummy… Read more