with the latest wall-clock time is kept
everywhere. This is challenging for
transactional updates. Sometimes, a
change within a transaction has the
latest time and is kept. Sometimes,
the transactional change is stomped
out by a later update. This makes at-
omicity a challenge.
A change can also be captured as a
commutative operation. 5 This is evident
in banking when a debit or credit is ap-
plied to your account and these opera-
tions can be reordered or commuted.
When you write a check on your joint
checking account and your spouse
writes a check at the same time, hope-
fully they will both clear. Given enough
money in the bank, it doesn’t matter
whose check clears first. A transaction
can deposit money into one account
via a check drawn on another. The
check will usually clear, making a valid
transaction. Sometimes, a bounced
check will form another transaction
to compensate for the first transaction
with the bum check.
When dealing with all of these is-
sues, the best you can hope for is a
probabilistic success combined with
eventual compensation. 3 While we
strive for perfect transactional work
in banking, we end up compensating
when stuff goes wrong. Unlike some
other areas of human endeavor, for
the most part we can compensate for
When Is Eventual? Is It Now?
One problem with having replicas is
that you really never know when one
of your evil twins will pop back into ex-
istence. Sometimes, algorithms codify
that a replica is persona non grata after
a certain period of time. Sometimes,
you overlook that and a zombie replica
will come back when least expected.
My wife and I have a checking ac-
count that is perennially in a state of
debits and credits. When we both use it,
no one really knows how much money
is flying and floating.
Our personal checking account is con-
The only way to figure out the balance is
to stop using the account for a while.