I hate testing. That probably means I'm doing it wrong. Here I'm trying to learn about testing with EUnit from other people's tests.
Pushing the phone controller state machine by simulating 200,000 phones. Lessons are learned about designing, analyzing, and debugging interacting state machines. I learn the importance of reasoning both at a higher level than the API, and at the level of individual messages.
Implementing the phone controller finite state machine from Designing for Scalability with Erlang/OTP. Some lessons are learned about keeping data separate from state.