Everything is a timer

write-upsystems · 19 points · 13 comments

Coming from web to embedded, the thing that took longest to internalise is that there is no event loop coming to save you.

A button press is a timer sampling a pin. A network packet is a timer draining a buffer. Once you stop looking for callbacks and start looking for the clock, the datasheets get much easier to read.

Do you want a version of this? Make your own

13 comments

  • 2026-10-14

    Worth adding that this only holds if the clock is monotonic. Ours was not, and the failure looked exactly like a slow disk.

    Do you want a version of this? Make your own
  • 2026-10-14

    I have hit this and solved it the other way, and I now think your way is better.

    Do you want a version of this? Make your own
  • 2026-10-14

    Do you have a link for the second claim? I want to read the original.

    Do you want a version of this? Make your own
  • 2026-10-14

    Two years ago I would have argued. Having since maintained one of these, I would not.

    Do you want a version of this? Make your own
  • 2026-10-14

    The part people skip is the last paragraph, which is the whole argument.

    Do you want a version of this? Make your own
  • 2026-10-14

    Counterexample: on a read-heavy workload we measured the opposite. Happy to write it up if useful.

    Do you want a version of this? Make your own
  • 2026-10-14

    Reading this made me go and check ours, and ours was wrong. So: thank you, and also, ugh.

    Do you want a version of this? Make your own
  • 2026-10-14

    What did you use to measure it?

    Do you want a version of this? Make your own
  • 2026-10-14

    A trace, not a profiler. The profiler said the function was fast, which it was.

    Do you want a version of this? Make your own
  • 2026-10-14

    This matches what the errata says, which almost nobody reads.

    Do you want a version of this? Make your own
  • 2026-10-14

    Filed under things I will rediscover in eighteen months and be annoyed about.

    Do you want a version of this? Make your own
  • 2026-10-14

    The naming point generalises. Half our bugs are a name answering a different question than its value.

    Do you want a version of this? Make your own
  • 2026-10-14

    Is there a version of this that works when the window is not fixed?

    Do you want a version of this? Make your own
Do you want a version of this? Make your own
built with unnamed