A method for resetting a device or turning a computer program ON, the computer program executed by the device and comprising: turning the device ON (1602, 1702); for a set of defined memory locations, select a first defined memory location out of the set of defined memory locations as a selected defined memory location; for a set of defined milestones, select a first defined milestone out of the set of defined milestones as a selected defined milestone; (a) counting a cycle count measuring a number of clock cycles since the device was last turned ON using a counter or an elapsed time since the device was last turned ON using a timer (1604, 1704) of the device; (b) flagging the selected defined memory location when the cycle count or elapsed time reaches the selected defined milestone for the counter or timer (1606, 1706); (c) turning the device OFF and then ON again (1610, 1710); (d) if the selected defined memory location is flagged, selecting another defined memory location out of the set of defined memory locations as the selected defined memory location, and selecting another defined milestone out of the set of defined milestones as the selected defined milestone; (e) repeating steps (a) through (d) a specified number of times; (f) resetting the device or turning the computer program ON (1634, 1724) when all the selected defined memory locations are flagged (1624, 1722). turning the device ON (1602, 1702); for a set of defined memory locations, select a first defined memory location out of the set of defined memory locations as a selected defined memory location; for a set of defined milestones, select a first defined milestone out of the set of defined milestones as a selected defined milestone; (a) counting a cycle count measuring a number of clock cycles since the device was last turned ON using a counter or an elapsed time since the device was last turned ON using a timer (1604, 1704) of the device; (b) flagging the selected defined memory location when the cycle count or elapsed time reaches the selected defined milestone for the counter or timer (1606, 1706); (c) turning the device OFF and then ON again (1610, 1710); (d) if the selected defined memory location is flagged, selecting another defined memory location out of the set of defined memory locations as the selected defined memory location, and selecting another defined milestone out of the set of defined milestones as the selected defined milestone; (e) repeating steps (a) through (d) a specified number of times; (f) resetting the device or turning the computer program ON (1634, 1724) when all the selected defined memory locations are flagged (1624, 1722). (a) counting a cycle count measuring a number of clock cycles since the device was last turned ON using a counter or an elapsed time since the device was last turned ON using a timer (1604, 1704) of the device; (b) flagging the selected defined memory location when the cycle count or elapsed time reaches the selected defined milestone for the counter or timer (1606, 1706); (c) turning the device OFF and then ON again (1610, 1710); (d) if the selected defined memory location is flagged, selecting another defined memory location out of the set of defined memory locations as the selected defined memory location, and selecting another defined milestone out of the set of defined milestones as the selected defined milestone; (e) repeating steps (a) through (d) a specified number of times; (f) resetting the device or turning the computer program ON (1634, 1724) when all the selected defined memory locations are flagged (1624, 1722).