So reverse is not a method on end object? It can be end.any_method_that_is_available_in_the_return_object?
b is the block param for the second block (the one that goes with select). The reverse reverses the results up to that point.
Basically it's a chain of array transformations.
David