Cinematic Software Architecture

miguel-angel-hernandez-4Kmvlc1M9rU-unsplash

When you watch a movie, you see substantially less than one percent of what happens to the protagonist throughout the course of the events the story depicts. You might see them flee the scene of a crime, stake their life on a leap of faith, or reunite with a loved one. You won’t see them brush their teeth, wait in line at the DMV, or sleep—unless these interstitial segments are shown to illuminate something deeper: reflection, peace, internal struggle.

The filmmaker’s job is to select a few fleeting moments from the vast expanse of the protagonist’s life and stitch them together into a cohesive story. How do they decide what to shoot and what to skip? The basis for selection is simple and profound: shoot the change. An inciting incident throws a character’s equilibrium out of whack. A series of complications makes a tough situation worse. A crisis threatens everything they care about. A reversal subverts their assumptions. A choice defines who they become.

Audiences have ruthlessly short attention spans, and stasis is boring. For a scene to be worth shooting, something must be changing, whether it’s a character’s world, relationships, perspective, or identity. The sum of those changes is the story.

Plot twist: We apply the same principle to software engineering. The Epistemix platform gives analysts and data scientists the tools they need to simulate how human populations grow, change, and behave under different conditions. The State of Indiana uses our platform to assess the potential impacts of different policies. Freeman, the world’s largest event-services firm, uses our platform to evaluate when and how to reopen conventions safely as the world recovers from COVID-19. Throughout the pandemic, we’ve worked with school districts across the country to identify the best mitigation measures for their communities. Preeminent organizations like RAND and MITRE equip their researchers with our software.

So, how does it actually work? Our platform is a digital reflection of the real world. It contains a synthetic population that represents every American as a digital person. The synthetic population includes households, incomes, neighborhoods, schools, and workplaces, as well as demographic characteristics including age, sex, and race. These digital people live out their virtual lives in our virtual versions of Chicago, Houston, New York, San Francisco, etc. But that’s just the beginning. The real power lies in the fact that you can use the platform to introduce an intervention and then sit back and watch how it plays out, risk free. Basically, you can test ideas in silicon before committing to them in reality.

The complexity of a simulation goes up exponentially as you increase the number of people and interventions represented—all of them interacting at different times and in different locations, every interaction cascading into yet more interactions with multiple orders of effects rippling out through the network. That’s a lot of computation. Competing modeling platforms get bogged down with virtual populations that number in the tens of thousands—rendering them ineffective for modeling even modestly sized towns—but our platform handles millions of people and can simulate entire cities, states, and even countries.

How do we do it? We shoot the change.

Say you’re using our platform to simulate the spread of seasonal flu through New York City. Now, imagine that a symptomatic sixth grader sneezes on the classmate sitting next to her. That sneeze carries some probability of infecting the classmate, and the classmate could in turn spread the influenza virus to other students, their families, and beyond. Our platform computes that blooming possibility space. But what if the sneeze never happened? What if no vector for viral spread presents itself? Then the classmate never gets infected or infects others. In this case, our platform doesn’t bother to compute the classmate’s movements and activities because those movements and activities don’t contribute to what the model was designed to measure: the spread of seasonal flu through New York City.

When you run a simulation on our platform, it only plays out interactions and events that impact the outcome you’re trying to measure. We only shoot the change. Or, rather, we only compute the change. This architecture is what makes our software computationally efficient and gives us the power to model human communities with realistic social dynamics—making it possible to answer questions like what the consequences of a particular policy might be or what mitigation measures would be most effective in slowing the spread of a disease.

What does this mean for users? A lot less work. Carl Sagan said that “if you wish to make an apple pie from scratch, you must first invent the universe.” If you want to model seasonal flu in New York City, the model already includes a simulacrum of the Big Apple. Because our platform comes with a digital universe preinstalled, all you need to do is write simple rules for how the flu spreads and make any necessary changes, like whether or not people who get the flu stay home or continue their normal behavioral patterns within the simulation. This also allows you to operate at a natural level of analysis, avoiding statistical complications like adjusting rules to scale when downsampling. Having a modular, extensible platform means that you can easily model different scenarios and compare results, accelerating actionable outcomes.

Like screenwriters, our software engineers trim away excess material until only the most important things are left: the kernels that shape what happens next. Credits might not roll after our simulations run their course, but the insights they reveal are invaluable for any leader facing a tough decision where the stakes are as high as a Hollywood blockbuster.


Image credit: Miguel Ángel Hernández, Unsplash, 2019.