For the second Identity Function post, we feature Wren Romano, a last-year graduate student at Indiana University. Wren Romano’s research applies concepts from type theory and constructive mathematics to both natural and formal language. This summer, she will receive her Ph.D. and begin work with the security infrastructure team for Google Chrome.
Tell me about yourself and your interests.
I’m finishing up my dissertation this semester, and have been in grad school for about a decade, including some time as a research programmer between finishing my M.S.E and starting the Ph.D. My primary research is in linguistics, mathematics, logic, and computer science; with a secondary focus of cognitive science, anthropology, and gender/sexuality studies; as well as an interest in the areas of philosophy behind both.
I’m interested in applying constructive mathematics to “language” in the general sense— comprising both natural and programming languages. In particular, I focus on the interface between morphology and semantics, especially when multiple languages interact.
I think there is a deep connection between natural and programming languages; there’s a reason we call both of them “languages.” There has been a lot of recent PL work on things like gradual typing and typed metaprogramming, and a lot of the issues that come up in that context have been studied at length in the linguistic community. And we get similar trends in the other direction too.
So that’s my main research focus. But tied up in all these questions about language and semantics, there’s also this question about where meaning comes from. Ultimately meaning comes not from words but from the humans who create and use them. So I’m also interested in how it is that society constructs and maintains these meanings.
What are you currently working on?
My dissertation is on “chiastic lambda-calculus” which provides a more general notion of composition than standard lambda-calculi. Originally it was designed to capture the compositional semantics of languages with free word order, Japanese in particular. Each lambda and each argument to a function is labeled with some “dimension”— if two things are on different dimensions then they can move around independently of one another, whereas if they’re on the same dimension they’re stuck in order.
We can think of the types for functions as trees, where the inputs are the leaves and the outputs are the roots. If we want to compose functions f and g, we’ll graft g onto f in place of one of f‘s leaves; in order to figure out which leaf to graft g onto, we’ll match up the dimensions. The newly created tree will have f‘s output as its own output, and will take as inputs all the inputs of g plus all the inputs of f (minus the one that g filled).
How is this more general? Well, in a language like Haskell we have to distinguish between (f . g) which grafts g onto the first argument of f, and (f .: g) which grafts g onto the second argument of f. The rigid ordering gets in our way. If argument passing is instead based on dimensions, then we only need one composition operator.
What are some of the applications?
Once I started looking for related work, I just kept finding one thing after another. For example, in standard lambda-calculi there’s an intentional conflation between the ideas of functions-as-procedures and functions-as-values, whereas in category theory, we keep distinct the ideas of morphisms and exponentials.
Since chiastic lambda-calculi have an associative juxtaposition, we also keep the two notions distinct. The way we do this is to explicitly wrap up arguments/values in brackets like ⟪e⟫ᴀ where the subscript specifies the dimension. This bracketing enforces a syntactic distinction between procedures/morphisms like (λᴀ x. e) and values/exponentials like ⟪λᴀ x. e⟫ʙ.
More generally, anything in brackets counts as a “value”; whereas anything not in brackets is not a value. This is a different idea of “value” than in, say, ML where “value” means normal form. The bracket tells us enough to know how to glue things together, but the expression under the brackets need not be a normal form. Indeed, if we don’t include the rule for evaluating under brackets, then we can freely mix call-by-value and call-by-name. So we have a coherent notion of “value” but it’s not quite the same as other notions we’re already familiar with; hence shedding light on what exactly this pre-theoretical term “values” actually means computationally.
Are you working on anything outside of your dissertation?
I’ve also been working on a compiler for a probabilistic programming language with Chung-chieh Shan. In a lot of ways it’s like any compiler , but one of the things that makes it interesting is that we have a bunch of program transformations which are not semantically the identity function. So while most compilers try to make sure they don’t change the meaning of your program, ours very intentionally does change things; so there’s this question about how can we be sure we changed it in “the right way.”
As far as new projects go, a couple weeks ago I was appointed to the Haskell Language 2020 committee! I’ve been pretty involved in Haskell for a while now, and subtly or not-so-subtly effecting change from behind the scenes, so it’ll be cool to be working on it officially. My goal is that by 2020 we should have fully specified all the things that people thought of as “standard Haskell” as far back as 2005. Sounds trivial, but even just doing that would be a huge win for the community and would help clean up a lot of code in the wild.
Congratulations! Are you typically involved in the free/open-source software community?
Most of the work I do is F/OSS. It’s not something I’ve been very vocal about lately (because it’s less contentious now than a decade ago), but it actually means a lot to me.
These days I’ve been focused on projects in Haskell: not just the Haskell 2020 committee, but also Hakaru, a couple currently unreleased projects, and various libraries for data structures, parsing, unification, and so on. Previously I’ve also been a primary contributor to a number of other compiler and NLP projects including Dyna (weighted logic programming language), Joshua (phrase-based statistical machine translation), L3 (constraint-based XDG parser), and BTO-BLAS (linear algebra kernel programming).
What’s next? Tell me about your upcoming work at Google.
I’ll be working on the security infrastructure team for Chrome. It’s not the sort of thing I would’ve guessed I’d be working on, but of all the teams I talked to at Google, they were the only one that didn’t get scared off by the breadth of my background. Even though the name of the team has “security” in it, it’s really more about writing tools to analyze program sources looking for security bugs; so not a whole lot different from my prior work on compilers and semantics.
Have you done any work in security before, or will this be a new adventure?
I’ve worked on languages that use type systems to enforce dataflow policies. And I’ve done a bunch of sysadmin work. So I’ve some experience with the sort of security that deals with designing and enforcing policies/permissions, but that’s a different sort of security than checking for buffer overflows and the like. So far as I know this project is going to be focusing more on the latter, so it’ll be a new adventure!
Going back, what made you pursue your Ph.D. after working as a research programmer? Was that always the plan?
After finishing undergrad I bumbled around with a bunch of awful jobs, nearly homeless and just barely managing to keep myself off the streets. At some point I sat down to figure out what I should to do with my life. After some soul-searching I figured out that what I really wanted was to become a professor. To do that I needed to go to graduate school.
It wasn’t really feasible to get into a decent Ph.D. program, so I applied to the masters program at my local college. After finishing the M.S.E. I applied to Ph.D. programs but didn’t get in anywhere. One of the professors at my school had funding for a research programmer, so I did that for a year until I could apply again. The second time around I got in.
Wow, that’s an amazing story. How did you discover what you wanted to do?
At the time, I was working at a convenience store. It’s a degrading job, no upward mobility, didn’t pay enough to cover living expenses let alone student loans (my parents disowned me halfway through undergrad, so I had to take out loans and work to pay the last two years myself). I was miserable, but had plenty of time to think about the future.
I’ve always loved doing research and figuring things out; I was a very precocious youth. And in my time at Free Geek [a nonprofit for building and refurbishing computers], I started to realize how much I like teaching folks too— that look in people’s eyes when they finally get something, that joy of witnessing their discovery, how excited, how empowered they get.
So I knew this about myself, but didn’t know how someone could make a living from these tiny moments of joy; like who’s going to pay me to be happy?
And how did you figure that out?
I mentioned to my roommates about how I was trying to figure out what to do with life. And one of them went to his room, grabbed this book, and gave it to me.
The book was Getting What You Came For by Robert Peters. The whole first half of the book is about figuring out what it is you really want from life and honestly appraising whether those goals would be better achieved via a higher degree.
Peters deconstructs the ideology we’re taught growing up about how “more formal education is always better.” But also, Peters has a way of questioning what it is the reader wants out of life that cuts through a lot of ways we lie to ourselves. Most other books are just like “search inside yourself” or some equally useless aphorism; but Peters actually made me stop and think.
So, after reading for a while and sitting for a while, it fell into place.
I think many in that situation would not have persevered.
It’s just, all of my life has been that way. I don’t know what it would mean for one to live a life that doesn’t require such strength. I see the outward effects of folks living otherwise, so I can guess, I can try to imagine, but it’s all intellectual, I have nothing to ground what the experience must actually be like.
On the other hand, applications are really hard for me. Any of this sort of selling one’s self, I find that exceptionally difficult. So knowing I’d have to make new applications again next year, that was tough. [My wife] Alicia helped me through a lot of that.
By the time I finished my M.S.E., I knew how finicky the graduate school application process can be. Like applying for tenure track positions, sometimes you just have to wait a year or two until the right positions open up. So waiting and trying again wasn’t too unexpected.
Was it hard to put together an application from the ground up?
It took work, but it wasn’t especially difficult. Because I didn’t have any formal background in CS, PSU made me take a bunch of courses before letting me into the masters program. But those courses were pretty easy since I had a few years of programming experience already (and a knack for discrete mathematics).
Then I had a professor put together a summer course which was basically applying for and completing Google Summer of Code. Plus I started working at the CAT— they run the systems for all the computing departments at PSU, and they have a weekly “braindump” where they teach you all the CS you really need to know but which no class ever teaches.
Halfway through my masters I ended up transferring to a different school because the person who’d agreed to be my advisor turned out not to have enough time to do so. By this point I had my volunteer work at Free Geek, my course work from PSU, the Google Summer of Code, and my sysadmin work at the CAT. A pretty healthy CV for a masters degree. Plus, by that point my involvement with Free Geek had moved from teaching folks how to build computers to being the chair of the board of directors.
Once you were in graduate school, was it easier for you having already gone through so much introspection?
I think it’s been a lot easier for me than most folks. I still have doubts from time to time, but they’re not about whether academia is right for me, nor about what to do with my life; they’re more about how well I’m doing at it.
You’ve mentioned before that you transitioned during grad school. What was this like?
Overall it went surprisingly well. I’d been open about being trans since my first year of undergrad, so I didn’t lose anyone in my support network, unlike a lot of trans folks.
When I sent emails to my departments to let folks know what’s up (to avoid re-explaining things over and over) I got a surprising amount of positive feedback. A lot of students mailed me to let me know how empowered they felt to read my letter, and a few professors came out to me even though they’re not out to their own departments. It was awesome and quite unexpected.
That’s great! Has anyone inspired you similarly?
My advisor for undergrad was gay and open. He just started at Reed about halfway through my time there. I really liked him in general, and he was an exceptional advisor. But also, it was the first time I’d met “an adult” who was out, and a professional who was in my vocation no less! I think it was probably in those classes with him that I first started to imagine being a professor. Like, that job was never a possibility before and then suddenly “oh, people like me can belong here.”
He also really helped inspire me getting started at grad school. Kind of ironically. He wrote me a terrible letter of recommendation to get in at PSU, but I totally deserved it. I was an awful student at Reed. Smart, sure, but awful at committing to do the work. When I asked if he’d write me a letter, he told me up front that it’d be terrible. We sat down and talked for a while about what would be in it and why. And, of course, being told you’re an awful student, that stings; but it’s true, and I knew it was true, so it only hurt so much and that hurt fades quickly.
But his honesty meant so much more to me than anything anyone else had ever told me. When someone calls you smart, they’ve stopped seeing you. They see glinting reflections, not a person. When they call you smart, they stop questioning you, stop challenging you to improve. So to have someone see through that, to see the person beneath the smart and engage with me directly, that meant the world to me.
Were there any challenges to transitioning in graduate school?
The difficult parts came later. Nothing special about being trans, just standard issues about being a woman in a male-dominated field. As people grew accustomed to seeing me as female they started talking over me, ignoring my statements until repeated by a man, and so on. I was quickly taught never to wear anything particularly feminine at work. It’s all standard, but witnessing people’s behavior change so dramatically over the span of a couple years is quite jarring. I’d known about all this beforehand, of course, but knowing something is different from living it.
How pronounced are these issues compared to what you anticipated before transitioning?
It’s hard to say. It’s less about how pronounced they are, and more about the emotional valence of first-hand experience. Overall things are about as good/bad as I expected, I just identify more intimately with the things I knew before.
It’s also hard to say because life is so much better now. There’s just as much sexism in how boys are raised as there is in how girls are. So yeah, I deal with sexism, but I’ve always dealt with it— just from a different angle. The sexism I deal with now makes more sense to me; I know what’s assumed of me, know the rules of engagement, know how to survive within the system while continuing to challenge it. Whereas before I couldn’t even figure out how I was doing things wrong. So yeah the overall injustice is greater than before, but it “fits” who I am so much better that it’s a lot easier to navigate.
It’s interesting to hear your perspective as someone who was probably not socialized to communicate in a traditionally feminine way.
Socialization’s a funny thing. We’re exposed to both gender roles growing up. The nature of that exposure differs based on what gender people assume of you, but we don’t simply internalize the way people treat us, we also internalize the way other people are treated and how we’re expected to treat others. So, yes, people assumed I should communicate in a traditionally masculine way, but I don’t know how well I ever learned that.
Communication isn’t just about our own actions, it’s about how we respond to the other party. Our ways of acting are inextricably intertwined with how those actions are perceived when performed by a body like ours.