This was the first time I submitted a NaNoGenMo entry which aimed at being readable, in contrast to my previous efforts, Everywhere Dense and Neuralgae, which were really abstract. Annales is a generated parody of a very ancient genre, the chronicle, which tells history as a sequence of reigns, deaths, wars and natural disasters. A chronicle, in a certain sense, is a calendar: for the greater part of that part of human history for which we have written records, the sensible answer to the question "what year is it" has not been "2016" (or however many centuries since whatever religious event you think significant) but "the tenth year of the reign of King Horace II".

The idea was to simulate the verbal features of a chronicle on several levels - the form of itself, the style and phrasing characteristic of English translations of real annals or the pastiches contained in works of fantasy, a vocabulary of odd but plausible words for names, creatures, weapons, diseases, and so on - and use them to describe a simulated line of succession.

The results weren't as good as I had hoped, for a few reasons which I talk about below. But it was still fun.

I've split this into three posts:

  1. Vocabularies: using a neural network, Python and regular expressions to generate a nonsense vocabulary
  2. TextGen: a Haskell combinator library for making up randomised sentences (plus a one-paragraph explanation of how the State monad works!)
  3. Events: in which I get bogged down writing a succession algorithm, but also figure out how to correct a typo in a randomly-generated text