Research
Long-running investigations into how software could be written, replicated and undone. Reactive values that keep themselves up to date, data that merges itself across machines, and computation that can run backwards.
Projects
ReactiveJS
A small reactive framework: state, calculations and reverse bindings driving a plain DOM driver of tags, attributes and text, one script tag per module.
reactivejs.orgProgram
A reactive programming language where values recompute themselves. Declare what things are, not when to update them, and the runtime keeps everything in step.
program.orgCRDT
Libraries and a file format for conflict-free replicated data: a shared, real-time database of structured data over HTTP and WebSocket.
crdt.orgReversibility Institute
Reversible processes across computing, manufacturing and physics: zero-energy computing, circular manufacturing, and the thermodynamics of information.
reversibility.orgThemes
Reactivity
Programs described as what things are, with the runtime working out when anything needs to change.
Replication
Data that several machines can change at once and still agree on, with no central server to settle disputes.
Reversibility
Processes that lose nothing, whether bits, energy or materials, because every step can be retraced.