Time has a profound impact on the complexity of the systems we build.
A significant amount of this software complexity comes from either
an inability to recall previous states or the inability to
understand how a state was arrived at.
From the foundations of AI, LISP and functional programming [1],
to causality in distributed systems [2], to the more grungy practices
of immutable infrastructure, or the unreasonable effectiveness
of fact-based approaches to large scale data systems; the ability
to adequately cope with time, and the change and conflict it
inevitable creates, is a common thread to being able to build and
reason about these systems.
This talk looks at the impact of time on system design. We will
walk through examples of large-scale systems and their battles
with complexity. At the end of the talk, the audience should start to
see the common spectre of time and have an appreciation of
how understanding time is fundamental to maintaining clarity,
correctness and reliability in systems.
[1] Situations, Actions, and Causal Laws - John
McCarthy - http://www.dtic.mil/dtic/tr/fulltext/u2/785031.pdf
[2] Times, Clocks and the Ordering of Events in a Distributed
System - Leslie Lamport - https://amturing.acm.org/p558-lamport.pdf