Hanging on in Quiet Desperation: Time & Programming @markhibberd
“ 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
Complexity.
1986.
Complexity. Conformity. Changeability. Invisibility.
2006.
2011.
Present Day.
1948.
1958-1963.
The big idea.
If we can reason about all the states of a system.
And we can understand how each state is arrived at.
We can make better decisions, and start to unwind the interdependencies and complexity caused by time and ordering.
Present Day.
2004-2006.
Disconnected networks.
{dock:0 ,red:0 ,purple:0} {dock:0 ,red:0 ,purple:0} owner|id|item|count red |0 |x |99 {dock:0 red |1 |y |1 ,red:0 dock |2 |z |33 ,purple:0}
{dock:0 ,red:7 ,purple:0} {dock:3 ,red:0 ,purple:0} {dock:0 ,red:0 ,purple:1}
{dock:0 ,red:7 ,purple:1} {dock:5 ,red:0 ,purple:0} {dock:0 ,red:7 ,purple:1}
{dock:0 ,red:7 ,purple:1} {dock:5 ,red:0 ,purple:0} {dock:3 ,red:7 ,purple:1}
{dock:0 ,red:8 ,purple:1} {dock:7 ,red:7 ,purple:3} {dock:7 ,red:7 ,purple:3}
{dock:7 ,red:8 ,purple:3} {dock:7 ,red:8 ,purple:3} {dock:7 ,red:8 ,purple:3}
2009-2010.
The most complex system I ever worked on.
A web API with 2 resources.
POST /activate Call to activate a product, validate and register license details POST /check Check license and validate installation details.
What could possibly go wrong?
POST /activate POST /check
POST /activate POST /check POST /check2007
POST /activate?magik=true POST /check POST /check2007
POST /activate?magik=true POST /check POST /activatev3 POST /check2007
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new?legacy=1 POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new?legacy=1 POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new?legacy=1 POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new?legacy=1 POST /check9
POST /activate?magik=true POST /check POST /activatev3 POST /check2007 POST /activate-new?legacy=1 POST /check9
From: https://stripe.com/blog/api-versioning
2013-2017.
Full circle. A machine learning problem.
We need to describe the world, now and in the past.
cause( π )( α )
at(I)(desk)
at(I)(desk) at(desk)(home)
at(I)(desk) at(desk)(home) ∴ at(I)(home)
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
CUSTOMER LOCATION X0001 NY X0002 SINGAPORE X0003 HONG KONG X0004 SYDNEY X0005 SYDNEY
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
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
What is in a time?
World Time System Time
When is this When did we fact valid? learn this fact?
Intervals. X0001 NY 2016-08-01T00:00:00 X0001 LONDON 2017-09-07T00:00:00
Instants. 1 X0001 Pen $5 2016-08-01T12:24:13
Horizons. 1 X0001 Pen $5 2016-08-01T12:24:13
Horizons. 1 X0001 Pen $5 1234
2013-2017.
Operations as a system.
This is complexity.
Techniques!
How does time impact the system?
2014.
towards ann ɛ x
Semantic versioning is not the whole story.
Open world.
Time matters.
commit
ci
publish
platform test
production
performance
cve
napoleon snowball boxer eminence
boxer 1.2.1 commit: bd2f074…02 api-signature: […] feature: it-works artifact: tag: bin/boxer flags: […] address: e2f1…bc74
: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
Recommend
More recommend