I'm often asked what a theoretical computer scientist does. It would be great to have some nice responses to this question. I tend to fall back to technical jargon and people's eyes usually glaze over at this point.
What does a theoretical computer scientist do, in terms that can be understood by people who are not computer scientists?
A good answer should be snappy, accurate in spirit, without sounding vague or trite. For bonus points, the answer should hint at why a theoretical computer scientist is neither a mathematician nor an IT practitioner.
This question is inspired by the MO question http://mathoverflow.net/questions/3559/colloquial-catchy-statements-encoding-serious-mathematics although the intent is different.