Time-driven programming