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.
My fellow monks
Can't tell (I'm NSA/FBI/HS/...)
Others (explain your deviation)
Results (101 votes). Check out past polls.