I love explaining things. One day, after all this computer madness is over, I’m going to have to make that part of what I do.
In the meantime I content myself with explaining things to myself. Seriously, when I’m learning things, I am continually crafting little rhetorical tricks to explain and re-explain something.
Luckily I have a girlfriend who thinks this is kind of sexy. She’s an actress and administers a local theatre, so for her, algorithms are exotic spices from the Orient.
When she came over last night to take care of me (I’ve been sick) she thought the whiteboard looked really cool, and demanded to know what it was. So….
I gave her an impromptu explanation of not only quadtrees, but the algorithm I came up with to do a kind of quadtree arithmetic. (The problem was to discover what is one “quad” in the tree, excluding another? A set of “quads” which cover the remaining area).
It helps that she’s smart and interested and this is a very visual thing, but it wasn’t that hard either. I started with asking her how she would find a file in a big filing cabinet, and led her to recognize that her strategy is what computer scientists call binary search. Then analogized that to two dimensions in a quadtree, and showed how efficient it was, so we only had to make as many subdivisions as we needed to have a minimum bucket size to contain points. Finally I explained a recursive strategy to do the arithmetic I mentioned earlier (jumping back to the find-a-file example, and getting her to notice that it was a recursive strategy too.)
I know she understands what I’m saying too, when she comes up with apt analogies of her own. I explained how a certain message-passing protocol worked to her the other day, and she said it was like the Underground Railroad for text messages. It was brilliant, because one application of that protocol could be for activists suffering under oppressive regimes. People should hire her just to come up with vivid analogies for geek things.