Practical Necromancy* for Beginners
My students – especially my first year students – sometimes wish for direct, first person testimony. Wouldn’t it make life easier if we could just interrogate them, read what they thought, directly? Seeing as how most of the people in question (in my classes) are Romans, this would require a wee bit of necromancy, which is illegal in many states. There are other ways to achieve a similar effect however. We’ll do it in silico.
Jeremiah makes an argument in ‘The Unexamined Game‘ that,
Simulation games are models, and representations, of no particular value for deep learning unless they are reflected upon, dissected and analyzed […] If analysis and critique, problem solving and skill building, are the most important goals, it matters less whether teachers use simulation games that are more or less accurate, so long as they provide the necessary support, structure, access to evidence, and guidance to allow students to critique simulations.
So to my mind, why don’t we just skip the gaming part altogether, and just build the simulation? Let’s toy with history, and see what we come up with. To do that, we’ll have to resurrect the dead. This presents certain logistical problems, but if we use an agent-based modeling perspective (and related ideas from complex systems theories) we can simulate what we believed to be true about processes in the past.
“Ah. So you’re not simulating the past, but rather how you think x worked in the past.”
That’s right. My preferred simulation toolkit is Netlogo, from the Center for Connected Learning at Northwestern University. Happily, it was created as a tool to help high school students explore and understand complex systems. This means that the learning curve – while steep in parts – is gentle enough that us poor digitally inclined humanities folks can begin to create powerful simulations and models.
Moreover, unlike most games, you can interrogate my code, my simulation. You can see my biases, assumptions, and mistakes. And you can add, delete, or modify the simulation to suit your own. Because the computer does not tolerate woolly programming, creating a model forces us to clarify our thinking in order to translate our understanding of the past into code.
What does the code of a simulation look like? My simulation exploring the way information diffuses through the Antonine Itineraries, the third-century lists of places one must travel through to get from town A to town Z, (1) is simplicity itself:
if anybody-here? with heard-it = false
“Anybody-here?” is a procedure for determining who else is in a particular location, built from smaller building blocks called ‘primitives’. ‘Heard-it’ is a variable of each agent, a yes or no. ‘Spread-the-news’ is a procedure to change the ‘heard-it’ variable from ‘no’ to ‘yes’. ‘Go’ is a procedure that each agent runs continuously, once the simulation is started by the user.
Each agent in the simulation moves along the paths suggested by the Antonine Itineraries. When an agent encounters another agent, they check to see if the other agent has heard the news. If they haven’t, they change their internal state to ‘yes, I’ve now heard the news’ and toddle off on their way. It’s a very simple model, but when you compare the time it takes for the message to spread to every agent in the simulation, it becomes apparent that the key variable is the shape of the network that they are interacting on: hence the simulation suggests that the way that space is conceptualized in the Itineraries in the various provinces has an impact on the process of Romanizaton there.
Simulations of course can become much more complex. In another simulation (2), I look at a collection of digital Romans as they play the games of patronage with one another, in different economic environments. Under what circumstances could violence emerge? (By asking that question, I’m implying a necessary connection between Roman patronage systems and civil violence. Don’t like the way I envision that relationship? Change the code!)
When I run the simulation, I end up mapping out all the landscape of all possible outcomes, given that understanding of the past. In which case, I then look at what did happen… and see where it fits on that landscape.
The Benefits of Simulation
Benefit #1: Crystallization of my own thoughts on history. If I can’t express it, I can’t code it.
Benefit #2: To critique the simulation, one has to perform a close-reading of the code, a prime historical skill.
Benefit #3: Seeing where what did happen fits into the realm of then-possible outcomes; a way of assessing the impact of Caesar’s decision not to cross the Rubicon as it were. (A kind of Schrodinger’s cat approach to history, I suppose!)
(Jeremiah has more thoughts on the benefits of simulation for historians and educators here. Read this now!)
What Happens Next
There are three tutorials that come packaged with Netlogo. In the next few weeks, I will be taking my first year Digital History students through these tutorials. Then we’ll craft a simple model of some historical process (I’m leaning towards something documented in Wikipedia: they’ll take what the ‘consensus’ view is, as crowdsourced, and explode it using the model). I will document here on Play the Past my lessons, what works, what didn’t work, and thoughts on making it all better. Stay tuned!
*Well, maybe that’s the wrong word. After all, we’re not raising the dead to divine the future, more like creating artificial life to divine our thoughts the past… cybermancy? Frankenmancy? Pensieve-mancy?
(1) 2006 S. Graham ‘Networks, Agent-Based Modeling, and the Antonine Itineraries’. In The Journal of Mediterranean Archaeology 19.1: 45-64
(2)2009 S. Graham “Behaviour Space: Simulating Roman Social Life and Civil Violence.” Digital Studies / Le Champ NuméRique, 1(2). Retrieved January 6, 2011, from http://www.digitalstudies.org/ojs/index.php/digital_studies/article/view/172/214