John Bywater

John Bywater

Python developer
· Twitter ·
· Events in Software, Process, and Reality

Bio

Engineering scientist, background in robotics, working as consultant


Events in Software, Process, and Reality (Talk)

A talk asking what happens if we look at our world as Alfred North Whitehead might have seen it, as "built up of actual occasions". Towards the end of the 1920s, Whitehead wrote, "whatever things there are in any sense of existence, are derived by abstraction from actual occasions."

1. Overview of Whitehead's Process and Reality. Everything is an event. Events are the actual entities of reality. Events consist of one or many occasions of experience. Each occasion of experience brings something novel into the world, drawing on facts from past occasions, in a process of becoming. Events causally depend on their predecessors, and are causally independent of their contemporaries. A nexus or a society of events is “a particular fact of togetherness among actual entities”, a mathematical set of events that share a defining characteristic. For example, the domain events of an event sourced aggregate all share the aggregate's ID, and are positioned in the aggregate's sequence of events according to the common process of incrementing the aggregate's version number. For Whitehead, the everyday objects we encounter are all societies of events. And so am I.

2a. Event sourced applications. Event sourcing is a persistence mechanism for DDD, which allows the state of a software application to be determined by a sequence of domain events. Does Whitehead's view suggest event sourcing is naturally suited to all domains? Yes :-).

2b. Distributed systems. Event processing may involve propagating domain events of one application and projecting them through the policy of another application to generate other domain events. Such applications can follow each other in a distributed system. Can we can look at the processing of domain events in a distributed system as Whiteheadian occasions of experience, evidenced by the records they leave behind? Can we make a reliable, distributed (determinate) system by simply using local atomic transactions to record the information pertaining to each processing event? Demonstration using my little library for event sourcing in Python, which is more or less a library for DDD in Python (https://github.com/johnbywater/eventsourcing).

3. Human process. How do we make human process? How do we botch human process? Can we do it better by thinking about occasions of experience, the facts they draw on and then leave behind? Description and creativity. Objection and improvement. Proposition and informed consent. Agreement and responsibility. Inevitable differences. Nature as history. Subjectivity as private fact. Working across difference. The use of recording. Sufficient togetherness.

(Who is Whitehead? Whitehead was Bertrand Russell's tutor. Whitehead and Russell wrote Principia Mathematica together. Alan Turing was still at school when he started reading Whitehead. )

Join the mailing list

for updates about the DDD Europe Conference and workshops