This Identity Function features Chris Martens, a professor at NCSU. Chris Martens recently finished her Ph.D. at CMU. Her thesis programming language Ceptre makes it easier to design games and interactive systems. She now leads the POEM lab, where she and her students explore the intersections of programming languages, artificial intelligence, and game design.
Tell me about yourself.
I’m a logician, computer scientist, sometimes-expressive-thing-maker (drawings, music, games), and generally curious human. Understanding ideas deeply is my passion; building tools and crafting exposition to help other people understand things deeply is my vocation.
I’m not really a “maker”— and I credit Deb Chachra with giving me the conceptual tools to be okay with that fact— but I often create small, reductionist expressions of a form or structure I am in pursuit of understanding, like a 100-line program or a 16-bar chiptune. I love minimalist tools like bicycles, Vim, pens and paper — things that augment my body and brain just enough to get them working hard. I think a lot about why people use the tools they do and how to make better ones (counting programming languages among said tools).
Professionally speaking, I just started a job as tenure-track faculty at NC State University, which is full of new and exciting challenges! I’ve joined a group of games researchers there, where I take a formal methods approach to modeling interactive and creative systems (like games, narrative, and social AI).
Did you always know you wanted a faculty position?
No, not at all. There were many times during grad school that I didn’t even know if I wanted a Ph.D. (that is, if I wanted the isolation, stream of rejections, and frequent feelings of irrelevance that came with getting one). Even when it seemed more plausible that I would finish my degree, I looked towards industrial research labs and software engineering positions with some serious consideration.
But I eventually realized that advising Ph.D. students was something I wanted very badly, maybe in the same sense that other people want to be parents. So that was it; I knew I had to be a professor.
During your first few months as a professor at NCSU, you’ve started the POEM (Principles of Expressive Machines) lab and taught a graduate course. What has that experience been like so far?
Honestly, I have been having the time of my life. It’s sometimes exhausting, but perhaps surprisingly, often quite peaceful — I’ve found ways of treating myself to hours spent in the top floor of the library, working deeply, reading or writing or programming or hashing out ideas on paper.
The department here at NCSU is very supportive of its junior faculty; they place a lot of emphasis on the idea that in our early years as faculty, we should be selfish with our time and pursue our core research competencies to their fullest.
The main challenge has been navigating the vast ocean of fascinating collaborators, conferences, and other opportunities. It’s very easy to get into rhythms where I’m having five meetings every day about different things but making only very shallow progress on each one, which doesn’t feel like a path to doing impactful work. But it’s an embarrassment of riches, really.
How have you found balancing personal research time with mentoring students so far?
It’s a constant challenge. Last week I was pretty successful with working on solitary, high-priority research activities first thing in the morning, but I’m not sure that’s sustainable long term. Every Sunday evening I plan out my week and allocate the largest blocks of free time in my calendar to some specific research activity, but it doesn’t always stay allocated (meetings, talks, and so on). I wouldn’t say I’ve found a perfect solution yet.
What are you currently working on?
I’m trying to contend with the particular growing pain that my thesis programming language, Ceptre, has probably reached the point of diminishing returns on its continued use, and it’s time to build the next system to support my research and my students’ research.
I’ve also been tying up loose ends on my postdoc project, which is a logic program for reasoning about how a game’s mechanics give rise to its dynamics (emergent behavior) and expected player interactions, and synthesizing game mechanics with certain properties specified in those same terms.
My students are working on things more recognizable as AI, like a system for reasoning about partial information games and so-called “epistemic actions,” which are actions within a multi-agent system that may manipulate world state that only some agents can see, such as drawing a card in a card game. Another student is working on a social skills training tool based on a linear logic-based model of group conversation; there’s overlap between these two projects, because most conversation theories account for agents having “theory of mind” where they make sense of utterances based on deeply-nested knowledge modalities, as in “I know that she knows that I know.”
Neat — I wouldn’t have thought of those two projects as related. Are they making use of a modal logic?
Yes, the first student is working with dynamic epistemic logic, which deals with changing knowledge states. Unfortunately, it’s a highly non-constructive logic by necessity (it needs to reflect over non-provability within each time step). A longer-term goal might be to figure out some kind of judgmental reconstruction of that logic. But for now we’re getting a lot out of just using it.
Your work brings together two fields that appear very different: formal methods and game design. Can you explain how these topics interact?
If I could do so definitively, I think it would be time to go up for tenure. But there are some things I have noticed so far that some people seem to find compelling.
For example, interactive programs are not like most other programs where any given execution has a fixed input and then can be reasoned about entirely on the basis of the code. Instead, one must reason about a continuous stream of unpredictable input. There are interesting challenges for formal methods in this space, and open problems about which properties of these systems are even decidable (much less tractable algorithms for deciding them).
Furthermore, once you abstract away an interactor, it’s tempting to express the rest of the program in such a way as to respond to changes in world state rather than as a sequence of operations. So there’s a good fit for things like linear logic programming, rewrite systems, and process calculi for concurrent computation; I’ve spent some time exploring how to make those ideas accessible in a creativity setting. Such computational frameworks can be helpful for designing virtual worlds with simultaneous, autonomous parts (such as characters in a simulated population).
One example attracting a lot of interest lately is social simulation in interactive stories. Instead of the standard interaction with a non-player character that typically consists of navigating an opaque dialogue tree, you simulate some model of internal cognitive state for game characters, like their personality, psychological inclinations, goals, desires, and beliefs. Dialogue options with that character are procedurally generated by those constraints.
One theory for how to set up those constraints is Roger Schank’s idea of scripts, or social protocols that exist as conventions in our heads for what set of behaviors is permissible in which situations. For example, at a restaurant there are many things you can do, as long as they follow the “going to a restaurant” protocol — ordering, eating, paying, and so on — and those actions have causal inter-dependencies too. It’s easy to express each such action as a rule in a rule-based language (as in a forward-chaining linear logic program, say), but expressing the constraints created by the global structure of a script seems to need another approach, maybe something like session types.
So right now, programmers need to express every single action, but if you could express the global constraints, you would be able to generate actions according to those constraints (assuming a simple enough logic)? Has anything been done in this vein?
A lot has been done in a sort of ad-hoc way for specific games or demonstrations. There’s an idea called drama management from interactive storytelling that consists of techniques for handling nondeterminism in a simulation in the presence of constraints; those constraints are usually in the form of a list of beats or scenes that are required to occur.
There is also some work on using grammars and predicates to constrain the structure of a story, so that you can, for example, give a logical definition of what it means to be a betrayal narrative (character A betrays B if and only if B believes A will help B accomplish a goal G, but A instead acts on a secret intention I where I subverts G). Then with definitions of what kinds of actions count as helping, accomplishing a goal, and so on, you can generate distinct stories that match the “betrayal” structure. But this approach, since it assumes some level of “top-down” constraint satisfaction, doesn’t lend itself as easily to interaction.
What I’m not aware of is any attempt to unify the simulationist approach (throw characters in a world and let them interact systematically, including possible player intervention) with the ability to enforce global structure to that same degree.
In what other ways do formal methods and game design intersect?
Game designers are really interested in generative methods, that is, algorithms that automate what humans would call “design” of artifacts like levels, music, story, and mechanics, often in response to play outcomes. They want to synthesize a highly variable space of data, but within certain representational constraints.
One piece of advancing the state of the art for generative methods is how to specify what you want to generate, or as Kate Compton calls it, the “monkey’s paw AI Law”— When you make a wish-granting machine, how do you make your wish so that the computer doesn’t provide you with technically correct, but unsatisfying, results?
This is a language design problem: Having ways of generating or manipulating large amounts of data isn’t enough; we also need expressive ways to query and constrain that data. These challenges also apply to the creation of virtual worlds with emergent behavior more generally.
Interesting — I know this is a problem that comes up a lot with angelic execution and program synthesis (getting technically correct but useless answers). Do you think these two problems are related?
Yes, absolutely! I’ve been wondering recently whether common techniques in generative methods might apply to program synthesis, or vice versa. Generative methods tend to solve simpler problems because they’re just generating “things” rather than processes. But then again, there’s also active research on generating the rules and mechanics of games, which are of course reactive processes (I worked on this problem for my postdoc).
How did you approach this problem for your postdoc work?
That was a daunting challenge, and I’m really excited about the approach we decided to try out for that, because it’s wildly interdisciplinary: We stole ideas from games humanists (people who study games from a perspective of literary and critical theory) and turned them into a logic program.
Games humanists like Ian Bogost (who is considered on the more “formalist” end of things) have this idea that the mechanics of games can create meaning by way of what he calls procedural rhetoric, or the ability of interactive processes to argue points.
For example, if I tell you that citizens of other countries have a hard time at border control, and how hard a time they have depends on the politics of our respective countries, you might believe me on one level; but if you play a game where the goal is to pass border control (or to decide whether someone should be allowed past, as in Papers, Please), and the mechanics recreate the challenges inherent to that goal, then you viscerally experience that distinction and remember the cause-and-effect relationships.
Why? Because the mechanics create dynamic effects that harmonize with an cultural meaning overlaid by the player’s knowledge of the world, giving rise to meaning.
So our ridiculously, unapologetically reductionist computer science idea was to describe these relationships in computational terms. That includes relationships between between mechanics (things like when these two objects collide, one of them disappears or gets smaller) and dynamics, or emergent consequences of mechanics — think of it like a static analysis over a game’s rules.
We also did this to a certain extent with thematic elements (audiovisual information) and culturally-imbued meaning. We wrote the whole thing in an answer set programming (ASP) language, which takes a pile of formulas, which can include things like negations, and generates models (sets of facts) that satisfy them.
Moving on — On bi visibility day you tweeted about the need for bi role models. What do you think the computer science community can do to increase the visibility of bi role models?
That’s a great question! And it’s a thorny one to navigate, because people don’t always desire to be visible, or to make their queer identity central to who they are at their jobs, which is completely valid. However, I really appreciate things like when a senior faculty member mentions her wife by that word casually in a talk or conversation — a cue that I’m in an environment where not being straight is no big deal.
It should be said that such cues would presumably be more likely to occur if our governments would offer workplace protections for folks on the basis of orientation (and gender identity, while we’re at it). Currently it is legal to be fired for being LGBTQ in many US states.
I’m also totally on board with more structured ways of introducing people to like-minded peers and mentors, like LGBTQ meetups at conferences, or interviews for a blog :).
In some ways I feel like this is one of the barriers for bi visibility — Many of us are in opposite-gender relationships or not dating and can’t easily signal that we are bi. Do you have any way of dealing with this?
So I’m kind of of two minds about this. Lots of marginalized groups talk about “passing privilege,” as in, the privileges afforded to someone because they appear to hold a norm-following identity, even if they don’t in reality. And it’s mostly baloney, because those are conditional privileges that don’t reflect your true self. But it is true that I lack a lot of problems that other LGBTQ couples have, and I want to be careful not to take the spotlight away from those issues when they haven’t often been centered.
Caveat aside, I think the most important thing to do is try to be there, as publicly as we’re comfortable with, for our fellow LGBTQ folks — Show up to marches and calls to action, call senators, join a Facebook group, or whatever else. I joined an NCSU “oSTEM” (LGBT in STEM) Facebook group and I guess that’s one example of signaling to folks there (mostly students) “hi, I’m here for you.”
Sometimes this notion of passing privilege makes it hard for bi folk to feel at home in the LGBTQ community. Have you found the community welcoming?
Aside from formal organizations, I don’t know that I’ve ever really encountered “an LGBTQ community,” at least not specific to a local area. In Pittsburgh there was sort of a gay community and a lesbian community; the limited experience I had trying to get to know the latter was discouraging, as I’m shy about integrating into already-cohesive groups of people (but that’s probably more on me than them). But I never experienced any overt biphobia, personally.
The happiest community-finding stories seem to have happened for me at the intersection of LGBTQ women and geeks, which are pretty much the people I feel most at home around. Whenever I’m at tech conferences or similar environments it seems like I wind up in a jolly pack of LGBTQ people most of the time, including bi+, trans, and nonbinary people. It’s one of my favorite thing about conferencing since my day-to-day work environment is more normative.
Do you think there are any issues in the computer science community that are specific to bi folk? Have you encountered any yourself?
I think for me, a lot of the feeling of invisibility and non-belonging has a lot to do with default assumptions. I wish we would do away with teaching the “marriage algorithm” (which is sexist as well as heterosexist) in theory courses, when better analogies exist. I wish women-in-CS groups would stop using language that assumes said women have or want boyfriends/husbands. These are just pinpricks, but they can add up to a chilly climate for LGBTQ women — we’re unusual for being women in our chosen field, but we’re also unusual as women.
Do you know how we can address this as a community?
No, I really don’t. A couple years ago I would have said “maybe unconscious bias training” but recent data seems to suggest that it doesn’t work. Maybe bringing these issues more to the center in WiCS groups and such, but that’s asking more labor from the people it affects. I will persist in continuing to ask people of relative privilege to call out exclusive language when they hear it and keep working on keeping those things in mind when we’re speaking to a crowd or taking on a leadership role. Every little acknowledgement that someone exists, when they’re used to being erased, helps.
Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the National Science Foundation.