sclass NotTooOften { long minDelay; long lastTime; *() {} *(long *minDelay) {} *(double minSeconds) { minDelay = toMS(minSeconds); } bool canDoAgain_willDoIfTrue aka yo aka get() { ping(); if (lastTime == 0 || now() >= lastTime+minDelay) ret true with lastTime = now(); false; } void dO(Runnable r) { if (get()) r?.run(); } }