// firstDelay = delay static FixedRateTimer doEvery(long delay, final O r) { ret doEvery(delay, delay, r); } static FixedRateTimer doEvery(long delay, long firstDelay, final O r) { FixedRateTimer timer = new(shorten(programID() + ": " + r, 80)); timer.scheduleAtFixedRate(smartTimerTask(r, timer, toInt(delay)), toInt(firstDelay), toInt(delay)); ret timer; } // reversed argument order for fun static FixedRateTimer doEvery(double initialSeconds, double delaySeconds, final O r) { ret doEvery(toMS(delaySeconds), toMS(initialSeconds), r); } static FixedRateTimer doEvery(double delaySeconds, final O r) { ret doEvery(toMS(delaySeconds), r); }