I've always wondered why String#capitalize downcases the whole string
before it upcases the first letter. It's easy to subsequently downcase
the string if that's what is wanted, but it's more cumbersome to
capitalize the first letter on it's own. Ie.

Currently,

  "the ATeam".capitalize  #=> "The ateam"
  "the ATeam".sub(/\A(.)/){ $1.upcase }  #=> "The ATeam"

if otherwise,

  "the ATeam".capitalize.downcase  #=> "The ateam"
  "the ATeam".capitalize  #=> "The ATeam"

It may seem minor, but it also can have cascading effects. For
instance I have a #camelcase method. It UppperCamelCases every word of
a string. But it you pass false as an argument it lowerCamelCases
every word. If we wanted to lowerCamelCase every word, except for the
first, it would be nice to do string.camelcase(false).capitalize. But
we can't do that. Moreover it means lowerCamelCase + captialize !=
UpperCamelCase, which is odd.

T.