With this year’s PLDI just around the corner, it’s a great time to get to know a few people in the programming languages research community, especially since we won’t be meeting each other in person this year. People of PL is a series of three interviews conducted in January 2020, and continues in the same vein as the People of POPL and the People of Language Design and Implementation interviews that were done by Jean Yang, Brandon Lucia, and Minjia Zhang.
J: Tell me about the journey you took to get to your current position.
A: Well, I did a PhD in Amsterdam, during which I mostly worked on category theory and automata theory. Then I did a postdoc at Cornell with Dexter Kozen, which was when I got really interested in the semantics of programming languages and started attending PL conferences. After Cornell, I took an Assistant Professor position in Nijmegen, where I stayed for four years, and then I moved to UCL where I have been for five years this summer.
J: What is your current research problem?
A: I’m doing two main things. One thing I’m working on is extending the results of Concurrent Kleene Algebra to make it possible to have instantiations like Concurrent NetKAT. The other topic relates to automata and verification. With one of my students, I’ve been looking at automata-learning algorithms – algorithms that learn an automaton model of a system just by interacting with the system as a black box while it runs.
J: How did you stumble upon these particular problems?
A: I’ve been working on NetKAT, with Dexter Kozen, Nate Foster, and their team, since 2015. NetKAT is a language for reasoning about properties of computer networks. It is very good for verifying reachability problems, but there are two features that we felt were missing that would make it more powerful. The first is randomisation, which led to Steffen Smolka‘s PhD thesis on Probabilistic NetKAT. The second is concurrency. The thing is, a lot of network properties that you might want to specify and verify have some form of concurrency going on, so that’s how I came to look at Concurrent Kleene Algebra as a basis for Concurrent NetKAT. It turned out that the theory of Concurrent Kleene Algebra was not as well-developed as that of Kleene Algebra, so for the last two or three years we’ve spent a lot of time just working out the basics of Concurrent Kleene Algebra. Only now are we at the point where we can think about its application to networks.
J: It’s a little surprising to me that you can talk about networks using a language that wasn’t concurrent from the outset, what with concurrency being such an inherent part of networks.
A: Well, if you restrict the properties of the network you are interested in verifying, you don’t need the language to be so expressive. So, in particular, if you only care about reachability properties, then concurrency is irrelevant – the only things you need to encode are the topology of the network and its forwarding tables. You only need to answer questions like “Can I get from A to B?” or “Is every point in the network connected to every other point?” Those questions are important for the network operators, and they don’t relate to concurrency or randomisation; they’re simply about the deterministic behaviour of packets flowing through the network. But if you want to talk about congestion, or forwarding algorithms that involve some form of randomisation, then you need to enrich your language to be able to express this. It’s really all about modularity. You look at the class of properties you want to reason about and you ask “What is the smallest set of constructs I need in my language?”. Later, you expand the class of properties you’re interested in, and you ask “What is the minimum I can add to the language without breaking anything I’ve done so far?”
J: You mentioned taking something that is sequential and adding concurrency. I remember Robin Milner talking about things the other way around: he thought the basic situation was concurrency, and that sequentiality was merely a special case.
A: I tend to agree with that, and in a lot of the things we do, we’re trying to retain this principle. If you start specifying things in a concurrent language but you don’t use the concurrency features, then everything should still map onto the language you studied as the sequential fragment. So we have to be careful: we want to start with a core language and extend it with features, but we want to ensure that our extensions are conservative. If you start writing a program in the extended language, but you cannot assert that if you avoid all the advanced features then you have the same properties as you had before, then you’re in a pretty bad place.
J: I believe that Tony Hoare is also a big fan of algebra because of this modularity principle.
A: I actually had a talk with Tony about my work last year at Facebook, after he gave one of the keynotes. He said that one has to love the modularity because you really see these extensions falling into place. He was not surprised by some of the intricacies we found in Concurrent Kleene Algebra, and he was very pleased that someone had taken the time to work out the details. I think that Tony and Robin were very much in agreement about the benefits of modularity, but you could say that they looked at the coin from two different sides.
J: What is your favourite part of your job?
A: The students.
J: Undergrads? Postgrads?
A: All of them. I spend most of my time with postgrads, and I absolutely love seeing them discovering new things. When someone discovers their first “new result”, it is a thrilling experience, and it is something I very much enjoy seeing and being a part of.
J: That sounds lovely. And your least favourite?
A: My least favourite part is all the hats we need to wear in an academic career. We get training to do some parts of the job, but there are many other parts for which we receive no training; it is just assumed that you can do it. This includes management positions, duty of care for students, mental health, and all kinds of delicate things. I sometimes find myself feeling a bit like a failure for not having the skills to do all these things, let alone excel at some of them. I think having to wear so many different hats can sometimes be a bit counterproductive. My own institution, UCL, does give us a lot of support, but I do wish institutions in general would prepare us a bit better once we start growing into group leaders and so on.
J: Yes this has been a surprisingly large part of my own experience as a new Faculty member.
A: I remember being on the train going home from work a few weeks after starting my tenure track position in Nijmegen. I was thinking “a tsunami has just hit me”, because I was responsible for teaching two courses for hundreds of students, managing a team of teaching assistants, still trying to submit and publish papers, writing a grant proposal (which is a very different mindset) as soon as possible, and I was trying to hire my first PhD student, which meant I had to deal with HR and all kinds of layers of bureaucracy that I had never yet come into contact with … and I really felt that if I were to ask for help I would just be exposing my failures. If I were to go and say “I have no idea how to do this”, they would know that they had hired the wrong person. And so, for many months I just kept going in survival mode, until eventually I got the courage to ask for some sort of mentorship.
J: Mm, I do resonate with a lot of what you say, though I feel very lucky that my former PI and former former PI are both in the same institution as me and are very supportive.
A: Coming into a new institution made it particularly hard. But eventually they assigned me a mentor, in Physics actually. This was a real advantage because it was someone who was outside the department, and who could give objective advice on how to deal with various things. So, in the end, I turned out ok without having a mental breakdown. But, for sure, the pressures in the beginning were much higher than I had imagined when I took the job.
J: Other than “get a mentor”, is there anything else you wish you had known when you started your Faculty position?
A: Hm, it’s hard to remember things I didn’t know, now that I know them! I think that one thing I wish I had known is that this pressure is common to all new starters. I had very little contact with other people who were just starting. I didn’t have this opportunity like we have at POPL now with these Mentoring Breakfasts, where you can meet junior Faculty from different institutions and you get to hear the same experiences, which somehow validates that it’s ok not to be feeling chipper all the time.
J: Yes, one of the nice things about these Mentoring Breakfasts is that they don’t just cater for PhDs and postdocs, but also for junior Faculty.
A: Yes, we discussed this in the steering committee of PLMW (the Programming Languages Mentoring Workshop). A third of participants have registered for the breakfasts, which is amazing. I hope we continue to do it. Hopefully PLDI will do it this year. There’s a lot of opportunity to help postdocs and Faculty to discuss what they should prioritise, and what things are normal. Sometimes institutions can be quite unreasonable on young people, and it can be very helpful to have someone else saying, “Hey, that is not normal, you should push back.”
J: Now, you’ve been attending PL conferences since 2014. Other than the Mentoring Breakfasts, have you observed any changes over that time?
A: I have. I’ve seen the community come a long way when it comes to “caring”. People have really started to recognise the need to be more inclusive as a community and to have initiatives that promote this inclusiveness, such as this year’s Ally Skills workshop and LBGTQ+ lunch.
J: I presume that even if you don’t directly participate in these initiatives, their very presence sets a tone for the event?
A: Quite. In Lisbon last year at POPL 2019, the General Chair assembled a team of people who would be available in case anyone felt the need to report anything, and would keep an eye on the atmosphere at the conference. I heard from several people afterwards that just having those people there — and visible — made a big difference. With SIGPLAN CARES this year, several people have already come forward to say that they appreciate that we’ve taken the time to create CARES, and that it gives a sense that the community cares and that we are taking things forward. So yes, I do think I’ve seen the community change for the better in its efforts to be more inclusive and to attract a diverse group of people.
J: I can’t say I’ve noticed non-inclusive behaviour when I’ve been at SIGPLAN events before, though this may well be because I wasn’t paying attention. Presumably this sort of thing did happen?
A: I cannot discuss whether or not there have reports at any PL conferences but I can tell you about some personal experiences I have had, just to give you an idea of things that happen that people might not imagine are happening.
Myself, I’m wealthy, straight, and a full professor at a top institution, so I’m privileged in many ways, but as a woman, I’ve suffered levels of micro-aggression since I became Faculty that I did not know existed. I remember one administrator who said to me, “Who do you think you are to hire a postdoc?” When these things happen once or twice, you laugh them off, and that’s what I did in the very beginning. But when I joined Nijmegen as a Faculty, I had several people tell me – to my face – that I was a positive discrimination hire. I requested my interview file, and confirmed that I was not, yet that is still what many people thought. It meant that in the first few months I felt really crap, because all the time I kept thinking, “Am I here just because I am a woman?” Eventually, I got my first big grant, and suddenly everybody starting acting more respectfully towards me. And that pissed me off even more! I didn’t become a different person just because I was lucky enough to get this grant. Sometimes you get lucky with a grant, and sometimes you don’t – grants shouldn’t validate who you are as a person or as a researcher.
I’ve made a point since then of trying to fight this unconscious bias – which you do see a lot against young, or female, or ethnic-minority Faculty – both in my own institution and also in the communities I’m part of. I’m really very keen on all these initiatives that promote some awareness, because at the end of the day, awareness is key. I’m pretty sure that some people who make certain comments are sometimes not even aware. Ultimately, if you are privileged enough that you can call these things out, then you should call them out.
J: Ok, what would you be if you were not a computer scientist?
A: That question has two answers. One answer is what I thought I wanted to be before I became a computer scientist, which is that I wanted to be a mathematics professor. But now that I know myself rather better, I think I would love to do something related to food. Perhaps teaching people how to cook good food in an easy way, things like that. I’m very interested in cooking; it’s what I do for fun these days.
J: Are you more a cook or a baker?
A: Both. In the last four or five years I’ve taken a lot of cooking courses. It’s quite a serious side-gig of mine.
J: Any particular cuisine?
A: Hm, that’s a good one. I like to cook things that I’m not very familiar with. Lately, I’ve been doing a little bit of Thai cooking and Indian cooking. My latest cooking course was on Lebanese cooking, which is quite nice. So yes, I try to experiment.
J: And what’s the most impressive thing that you have cooked?
A: I think making a wedding cake was the hardest thing, as it took a lot of preparation and there was a lot of pressure on the decoration.
J: What kind of cake was it?
A: It was a very light sponge cake with a lemon curd filling and vanilla buttercream, decorated with fresh fruits. I’ve also been very much into sourdough for the last year, and that is hard in a different way, because you somehow need to learn how to feel the dough, and when to stop each step. Sometimes you think you have the hang of it, but then the next loaf you make is a complete disaster. Then you decide you want to add some olives into your loaf and the whole process changes! It’s rather scientific, in many ways.
J: Do you find that your computer science background informs your cooking? One obvious connection I can see is that algorithms are rather like recipes.
A: My computing background does help, but I also see cooking as an opportunity to be a bit more creative. I tend to ignore recipes — once I’ve done it once, I think I see the process, so I’ll play around with it. It’s all fun. My friends will tell you there’s always a lot of food to be eaten. A couple of months ago I was in focaccia mode, and I lost track of how many focaccias I made one weekend. By Monday, these focaccias needed to be eaten, so my students and I had Focaccia Monday! We also have days where different people in the office bake cakes and bring them in. I really think that baking and cooking and sharing meals are very good ways of bringing people together.
J: And finally, given that this community is based around programming languages: what’s your favourite programming language?
A: Haskell. Sometimes OCaml.
J: Well I hardly expected you to say C++. And when did you learn to program?
A: When I started my Computer Science major as an undergraduate. I hadn’t programmed before then. Haskell was my first language, which I learnt in my first term at University. After that, I learned C, and I absolutely hated it!
J: And how much programming do you do nowadays?
A: Very little. There are spurts where I think “we should prototype this”. For instance, our POPL 2017 paper had a prototype written in Haskell that I played around with quite a bit. But I don’t program every week.
J: Wonderful. Thanks very much, Alexandra!
A: Nice talking to you!
Disclaimer: These posts are written by individual contributors to share their thoughts on the SIGPLAN blog for the benefit of the community. Any views or opinions represented in this blog are personal, belong solely to the blog author and do not represent those of ACM SIGPLAN or its parent organization, ACM.