

Hints for Computer System Design - scott_s
http://blog.regehr.org/archives/1143

======
angersock
A very fun snippet from the linked article, giving a clean explanation of the
benefits of functional programming, idempotent operations, and logged data
storage:

" _To use the technique, record every update to an object as a log entry,
consisting of the name of the update procedure and its arguments. The
procedure must be functional: when applied to the same arguments it must
always have the same effect.

In other words, there is no state outside the arguments that affects the
operation of the procedure. This means that the (procedure call specified by
the) log entry can be re-executed later, and if the object being updated is in
the same state as when the update was first done, it will end up in the same
state as after the update was first done.

By induction, this means that a sequence of logentries can be re-executed,
starting with the same objects, and produce the same objects that were
produced in the original execution."_

