1. What are the problems caused when 'printf' is used for testing distributed systems? Distributed systems can be tested by having all instances produce a log file. Then bugs are found by manually inspecting the logs. Manually inspecting log files can be time consuming so a tester will write scripts to analyze the log files. Often different programs will have different log file formats. Therefore scripts to process log files are often not portable between different tools. Log file formatting can even change between versions of a program, requiring the testing scripts to change as well. 2. Are there any limitations in expressivity of Pip's Expectation Language? Put another way, are there any types of problems that can't be detected by writing recognizers and/or aggregates? In PIP the authors describe one limitation to the PIP Expectation Language; one expected behavior can not be defined by the output of another behavior. For example, to create a message a loop in process A runs for n iterations, where n is unknown before A is run. PIP can not test to verify the receiver, process B also loops for n iterations when processing the message. In the paper, the authors mention that path coverage is an important, though orthogonal, consideration in running Pip. Why is this so? - Ths paper presents a language to describe the expectations for path events. It does not offer any insight into getting the best path coverage to find bugs in all paths. PIP proposes testers make high quality expressions to define expected behavior of the program. Running all paths in the program to test these expressions will find the most bugs, but the authors assume these techniques are already known.