Peer-to-Peer Application Development: Cracking the Code