Excellent talk. Love the reasoning for TDD - good stuff.... But I am not too sure why removing the test case was a good thing. After writing the two tests, and testing out the "hello" function - we are good. Then I see you'd refactor the test code to remove a test case (which I assume you thought was redundant), but in this case I am not too sure. Someone else can refactor the production code and hard code to "hello GoCon" - your tests will pass, but the code's isn't good no more...I am sure I am missing a point here....
because Hello("GoCon") and Hello("Zach") are in same equivalence class (partition), it means they will find same bug. Hello("") maybe find a different bug.