I spent a week building a counter program in Anchor. By the end, every

user had their own account, a global config singleton controlled whether

new counters could be created, and a close instruction returned the rent

deposit back to the wallet. None of that would have been possible without

Program Derived Addresses.