My solutions to Dave Thomas' code kata, in Ruby