Here, I will attempt to document some of the thought processes, design decisions, and challanges faced while programming.