in reply to Schedule Optimization
DateTime::SpanSet may help you write the time functions, together with DateTime::Event::Recurrence. Although these modules don't provide all the logic you need, they do provide the basic operations.
DejaVu Sans Mono
Droid Sans Mono
Envy Code R
Source Code Pro
The default, whatever it is
Results (55 votes). Check out past polls.