This year’s Silicon Valley Code Camp was the largest and greatest so far. Like last year, Wealthfront (then kaChing) had few packed presentations. This year we had a full Wealthfront track, focusing on software quality starting with the first line of code through testing to production.
As requested, here our our presentations.
A well-typed program never goes wrong
We will spend this session talking about type safety. After defining this desirable property, we will look at various examples where broken but well-typed programs are converted to ill-typed programs. In other words, we will learn to leverage the type system in order to detect issues as early as possible. All examples presented in this session are coming straight out of kaChing’s code base. Previous exposure to Java and Scala is recommended.
Applying Compiler Techniques to Iterate At Blazing Speed
By Julien and Pascal
In this session, we will present real life applications of compiler techniques helping kaChing achieve ultra confidence and power its incredible 5 minutes commit-to-production cycle . We’ll talk about idempotency analysis , dependency detection, on the fly optimisations, automatic memoization , type unification  and more! This talk is not suitable for the faint-hearted… If you want to dive deep, learn about advanced JVM topics, devoure bytecode and see first hand applications of theoretical computer science, join us.
Automating Good Coding Practices
The price of clean code is eternal vigilance. Everyone wants to work with clean code, but no one wants to be the enforcer. In this session we’ll look how at KaChing integrates style checkers and static analysis tools into the build process to keep errors out without getting in the way of developers. Many of the tools discussed are specific to Java or Scala, but the techniques are generally applicable.
Extreme Testing at kaChing: From Commit to Production in 5 Minutes
At Wealthfront, we are on a 5-minute commit-to-production cycle. We have adopted continuous deployment as a way of life and as the natural next step to continuous integration.
In this talk, I will present how we achieved the core of our extreme iteration cycles: test-driven development or how to automate quality assurance. We will start at a very high level and look at the two fundamental aspects of software: transformations, which are stateless data operations, and interactions, which deal with state (such as a database, or an e-mail server). With this background we will delve into practical matters and survey kaChing’s testing infrastructure by motivating each category of tests with different kind of problems often encountered. Finally, we will look at software patterns that lend themselves to testing and achieving separation of concerns allowing unparalleled software composability.
This talk will focus on Java and the JVM even though the discussion will be largely applicable.
Check out http://eng.weathfront.com/search/label/tests for the latest from our company’s blog.
5-minute Commit-to-Production: Continuous Deployment
By Adam and Eishay
Continuous deployment (CD) takes “release early, release often” to the limit: as long as the build is green you can push code to production–agility at its best. Companies doing CD safely push code dozens (hundreds!) of times a day, rapidly responding to their customers and reducing their “code inventory”. In this talk we will discuss the architecture, tools and culture needed for CD and how your company can get there. For example: creating an effective “immune system” to know what problems are happening; what infrastructure software like Apache ZooKeeper can and can’t do, and how to best use it; deployment orchestration techniques to quickly yet safely gain confidence in new code; and more!
See you next year or in one of our tech talks!