API design   Hanging around the ruby crowd for a while, I've
come across the term 'Humane Interface' quite a bit. It
describes part of the rubyist attitude to writing class
interfaces, I think it also sets up an interesting contrast
between two schools of thought in designing APIs (the other is
the MinimalInterface).  The essence of the humane interface is
to find out what people want to do and design the interface so
that it's really easy to do the common case.  The obvious
contrast to a minimal interface is that humane interfaces tend
to be much larger, and indeed humane interface designers don't
worry too much about the interface being big. This isn't to say
that classes with humane interfaces need be larger in terms of
implementation. The fundamental functionality of the two is
often quite similar.  A good way of looking at the difference
between humane and minimal interfaces is to compare the list
components in Java and Ruby. Java has an interface
(java.util.List) which declares 25 instance methods. Ruby