Ten years of professional software development have given me a healthy awareness of edge cases - I'm always trying to code defensively, validate input, catch exceptions, use assertions, and of course pick holes in sloppy specifications ("ah, but what if...").

I must learn that these skills should not always be applied to my personal life though, as exemplified by a conversation with The Wife yesterday:


Jocelyn (excitedly): "We're going to have a 'Secret Santa' for all the babies in our antenatal group!"

Me: "Huh. How does that work then?"

Jocelyn: "Well, we each buy a gift for under £10, put them into a bag, and each pick one."

Me: "What happens if you pick out the gift you bought?"

Jocelyn (less excitedly): "Well, you put it back and pick another."

Me: "So, you have an even number of babies in the group?"

Jocelyn (testily): "There are seven."

Me: "Then what happens if the last person picks their own gift?"

Jocelyn (deflated): "Ian...!  OK, so we won't open any gifts until they're all selected - happy now?"


I was. In my mind this is like recursively calling an algorithm if a post-check fails. It's an unusual approach, but it should work OK here.