Prison-Based Programming: What it Can do and Why it is Needed