How do you design good abstractions? By using abstractions that already exist. When I was a boy, I had a cassette tape player. It came with playback controls like these: Soon after cassette players had become widely adopted, VCR manufacturers figured out that they could reuse those symbols to make their machines easier to use. Everyone could play a video tape, but 'no one' could 'program' them, be