This was generated by a one dimensional cellular automata which I implemented in c++ and gtk on linux. I use Wolfram notation to define the rules, which I change as the rows of the image grow up from the bottom. The drastic horizontal changes typically mark a rule change. So the key here, is changing the rules in the middle of the game, as it were.