http://timmaxwell.org/pages/cellular-automaton/index.html
Each row of the grid represents the state of the universe at a certain "time". Given any two adjacent rows, we can compute the row above them or the row below them according to a predefined rule, which is symmetric in "time". So we randomly generate the two initial rows and then from there derive the rest of the pattern. However, by default the two initial rows are mostly empty, corresponding to a low-entropy initial state. From this initial state, applying the rule either forward or backward in time leads to states of higher and higher entropy. So the system exhibits "arrows of time" flowing from the low-entropy initial state forward and backwards in time to the high-entropy equilibrium states.