Nigel,
I checked out your Keypad Tutorial and it does a very good job of covering the basics. It's obvious you put a lot of time and effort into providing newcomers with a wealth of information in a relatively easy-to-comprehend format.
Unfortunately, there seems to be a problem with your example Keypad code. It seems the four column lines are configured as outputs with one low and the other three high at any given time. I think this must have been an oversight because if you press a switch on the active low column and another switch on that same row at the same time you'll have a short circuit.