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
This talk was presented at YOW! LambdaJam2018.