Blink without delay, extended to more complex switch patterns

You could use a RTC, but for "on for 10 seconds, off for 5 seconds" sort of stuff, using millis() in an appropriate way is all you need.