DEV Community

Cover image for Code Smell 77 - Timestamps
Maxi Contieri
Maxi Contieri

Posted on • Originally published at

Code Smell 77 - Timestamps

Timestamps are widely used. They have a central issuing authority and do not go back, do they?

TL;DR: Don't use timestamps for sequence. Centralize and lock your issuer.


  • Bijection Fault.

  • Timestamp Collisions.

  • Timestamp precision.

  • Packet Disorders.

  • Bad Accidental Implementation (Timestamp) for an Essential Problem (Sequencing).


  1. Use a centralizing sequential stamper. (NO, not a Singleton).

  2. If you need to model a sequence, model a sequence.

Sample Code


# using time module
import time

# ts stores the time in seconds
ts1 = time.time()
ts2 = time.time() #might be the same!!
Enter fullscreen mode Exit fullscreen mode


numbers = range(1, 100000)
#create a sequence of numbers and use them with a hotspot

sequence = nextNumber()

Enter fullscreen mode Exit fullscreen mode


Timestamps are very popular on many languages and are ubiquitous.

We need to use them just to model... timestamps.


  • Bijection


This smell was inspired by recent Ingenuity software fault.

If we don't follow our MAPPER rules and model sequences with time, we will face trouble.

Luckily, Ingenuity is a sophisticated Autonomous vehicle and has a robust fail-safe landing software.

This video describes the glitch


More info

The most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all.

Jon Bentley

This article is part of the CodeSmell Series.

Top comments (0)