Legacy Systems Learning Resources Refactoring Legacy Code using Tiny Types and Data Oriented Programming in Java Untangling Legacy Systems Writing Good Tests with JUnit