Hanging on in Quiet Desperation: Time & Programming

Hanging on in Quiet Desperation: Time & Programming

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

42d9867a0fee0fa6de6534e9df0f1e9b?s=128

Mark Hibberd

May 23, 2018
Tweet

Transcript

  1. 2.

    Ticking away the moments that make up a dull day.

    You fritter and waste the hours in an offhand way. … And then one day you find ten years have got behind you. No one told you where to run, you missed the starting gun.” - Roger Waters “
  2. 4.
  3. 5.
  4. 7.
  5. 8.
  6. 9.
  7. 10.
  8. 12.
  9. 13.
  10. 15.
  11. 19.

    We can make better decisions, and start to unwind the

    interdependencies and complexity caused by time and ordering.
  12. 20.
  13. 21.
  14. 25.
  15. 26.
  16. 27.
  17. 28.
  18. 29.
  19. 30.
  20. 37.
  21. 41.

    POST /activate POST /check Call to activate a product, validate

    and register license details Check license and validate installation details.
  22. 43.
  23. 63.

    TX CUSTOMER ITEM AMOUNT TIMESTAMP 1 X0001 Pen $5 2016-08-01T12:24:13

    2 X0001 Notepad $20 2017-01-01T02:19:01 3 X0002 Calculator $55 2015-01-01T09:55:21 4 X0003 Book $30 2017-07-01T15:34:53
  24. 65.

    CUSTOMER LOCATION TIMESTAMP X0001 NY 2016-08-01T00:00:00 X0002 SINGAPORE 2017-08-04T00:00:00 X0003

    HONG KONG 2016-01-21T00:00:00 X0004 SYDNEY 2016-08-01T00:00:00 X0005 SYDNEY 2014-12-24T00:00:00
  25. 66.

    CUSTOMER LOCATION TIMESTAMP X0001 NY 2016-08-01T00:00:00 X0002 SINGAPORE 2017-08-04T00:00:00 X0003

    HONG KONG 2016-01-21T00:00:00 X0004 SYDNEY 2016-08-01T00:00:00 X0005 SYDNEY 2014-12-24T00:00:00 X0001 LONDON 2017-09-07T00:00:00
  26. 79.
  27. 80.
  28. 81.
  29. 86.
  30. 87.

    ci

  31. 88.
  32. 92.

    cve

  33. 95.

    :boxer :has :feature “multi-part-put” :has :commit “abcd-1345” :has :branch “master”

    :snowball :is :compatable-with atom/… :napoleon :semver >= 1.3 < 1.4 :no-cve +annex.example.com@HEAD
  34. 96.
  35. 97.
  36. 98.
  37. 99.
  38. 100.
  39. 101.
  40. 102.
  41. 109.

    We can make better decisions, and start to unwind the

    interdependencies and complexity caused by time and ordering.