Friday, August 19, 2016

Ten Recipes for the Beginner Cook

This blog post is dedicated to my college roommate Brigit, who has been ramping up her cooking efforts.

This week I've been on vacation with my college roommates and we've been having many conversations about how we've come a long way since learning how to boil water--for some of us, a skill acquired post-college. Being someone who likes food but is lazy about cooking, I've developed a repertoire of easy recipes over the years. Here are ten of them.
  1. Massaged kale salad. Salads are kind of a loophole to adulthood: as long as you spend the time and money on good ingredients, all you have to do to "cook" a salad is wash some things and maybe chop some things. Massaging kale makes it feel a little less like cheating. (And kale is much better massaged.)
  2. Arugula walnut salad. This salad is even less effort. Putting random fruit and random nuts into a salad always makes the salad better, both in terms of nutrition and how fancy it looks. Some weeks when I am really busy I just stock my kitchen with greens, fruit, and nuts. Sprouts (especially flavorful ones) are a nice touch, as well as thinly sliced radish.
  3. Baked salmon. Good salmon (or any kind of fish, really) can be quite inexpensive and be really easy to make. (My college roommate Aliza says salmon is expensive in New York, but in Cambridge I usually spent $5-7 on half a pound of quite good salmon at my local Whole Foods.) Once you learn how to do it you can do variations on the different marinades to make it feel like a different dish every time.
  4. Skillet-roasted spiced okra. I love okra, but for a long time I did not realize how easy it is to cook for yourself. The recipe I linked to includes lots of spices (and is similar to bhindi masala), but okra can be quite good with only cumin and turmeric, or even only with salt.
  5. Quinoa tabouleh. This is a really delicious and nutritious prepare-your-own lunch food. For a while I quit quinoa due to ethical concerns and used couscous instead, but these concerns turned out to be unfounded.
  6. Pasta puttanesca. This is a nice emergency hunger recipe because you can make it completely out of backup ingredients that last forever in your kitchen. One time I made pasta puttanesca completely out of found ingredients in the London apartment of my college roommate Marianne's uncle, to which I had been given a key and was instructed to wait for Marianne's post-midnight arrival.
  7. Shakshuka. This is a great brunch recipe that seems to impress people. It is one of those recipes that has a lot of ingredients (and there are many variations you can find online), but once you have the ingredients it's not very much work.
  8. Lentil soup. This one takes a little more time, but none of the steps are difficult and you can make a batch that lasts a really long time and you can freeze parts of it.
  9. Chinese sticky rice cake. Every time I've made this, people have been amazed by both how delicious it is and how easy it was to make. You pretty much just put the ingredients together and stir. I substitute almond or soy milk and the recipe is still fine.
  10. Noodles. Those who have spent extended time with me know that they are an important staple of the Jean Yang diet. I wrote this blog post about cooking with noodles in 2009. My college roommate Aliza wrote this essay about how I got her into noodles.
Would be curious to hear yours. Enjoy!

Monday, August 08, 2016

A Starter Reading List About Asian America

Race in America isn't something I talk a lot about online, but it is something I think a lot about. Today I was giving my friend Seth a short reading list about being Asian American when I realized that 1) I have such a list and 2) other people might like to see it too.

Here are some essays I like:
For a much longer read, I really liked Helen Zia's book, Asian American Dreams, about the formation of Asian American identity. (Tea that Burns is another good one about Chinese-American history. Fun fact: I wrote my high school junior history essay about the Chinatown that used to be in Pittsburgh. Yes, there was one until the city government put a highway through it.)

Apparently our friend Nate Hilger, an economics professor at Brown, is doing research on discrimination against Asian-Americans. He has a working paper, "Upward Mobility and Discriminations: the Case of Asian-Americans," here.

Of course, I've also been really enjoying the proliferation of TV shows featuring Asian-American immigrant family experiences: Fresh Off the Boat, Master of None, and The Mindy Project among them.

Would love to hear your suggested reading/watching.

Saturday, June 25, 2016

Counter-Advice for the PhD

Recently I attended the Programming Languages Mentoring Workshop, a program to introduce advanced undergraduates and early-stage PhD students to research in general and research in our field. (By the way, this is a fantastic workshop and I highly encourage students to attend!) While listening to advice from other academics and talking to the students about their questions, I realized that I have come to disagree with much of the conventional wisdom and advice for PhD students, some of which I have been guilty of re-dispensing. I express my dissent here.

Clarification: The workshop was not the source of all of the quotes! It was simply what got me thinking about the dangers of taking any one piece of advice too seriously. (The workshop itself is great for showcasing different points of view.)

--

"To decide what to work on, read lots of papers and then choose the best problem."
One of my undergraduate professors once told me, "Take all advice with a grain of salt. Most advice is highlights and wishful thinking." This was one of the best pieces of advice anyone has ever given me. It is easy for people to give this kind of advice about choosing research problems after they have learned what makes a good research problem. The advice is far more difficult to follow for people who are still developing their research taste. While some people probably have chosen research problems this way and while it is helpful to more deeply understand your area, early-stage researchers sometimes just have to jump in, do things, and learn from the confusion.

Also, in the early stages of a PhD, developing research skills (project management, time management, and communication of results) can be far more important than working on the best problem. In this case, I would recommend working on a problem that a mentor is sufficiently invested in to help you gain the skills you need.

--

"Choose an advisor you are completely compatible with."
This advice goes in the same category as the previous one. Once you have gone through the PhD and developed a deep understanding of who you are and who your advisor is, it is easy to think that a good situation can be easily recreated or a bad situation could have been more easily avoided. While you should look enough into your soul and do enough due diligence to make sure there are no glaring red flags, you should not worry if you do not feel like you know enough about your working style or preferences to choose a perfectly compatible advisor. Advisor-advisee relationships, like all other human relationships, depend a lot on many factors, only some of which are under the control of the two main participants, and also can evolve quite a bit over time.

--

"Do a PhD because you are in love."
 I completely agree that doing a PhD out of love of learning, love of discovery, or love for a discipline is a much better reason than doing a PhD for the money, fame, or glory. But I've seen many students get stuck in the "passion trap," the idea that you need to be completely in love with something before you invest significant amounts of time and energy into it. According to Cal Newport, who has written extensively about this, passion is something that often comes later, after you have become an expert and people recognize you for your contributions.

What I have noticed is that people often differ more in the narratives they have about their relationships with their work than in their actual relationships with their work. In my Quora answer to the question "How common is it for PhD students to do work they are not passionate in?" I talk about how one's relationship with a project often follows a trajectory similar to a romantic relationship: infatuation, followed by a steady state that comes sometime later, often much later, with a period of confusion and negotiation in between. I've seen every researcher I know well experience the confusion phase, but some researchers are more open than others to talking about it.

A side observation is that relationships with research seem to vary culturally: for instance, being blanket positive about one's own research seems to go along with the American tendency to be blanket positive about one's own life.

--

"Superstars are born, not made."
No one has said this specific phrase to me, but many people have implied it with the qualities they value in students. Once a professor told me that some students "just can't cut it." I've seen professors pick favorites based on internal metrics they have (often, it seems, based on how much a student reminds them of themselves). I've seen students decide someone is the smartest among them because of confidence, or some other "star" quality that doesn't necessarily correlate directly with research skill. While there is a baseline level of intelligence, curiosity, drive, and tolerance for uncertainty that someone needs to be a good researcher, many of the qualities that make a great researcher--discipline and persistence, to name two--are not entirely innate and definitely not strongly correlated with the confidence and charisma that seem to build many star reputations. (Note: confidence and charisma can also be learned.)

--

"The PhD is lonely without a significant other, especially if you are a woman in a male-dominated field."
I was surprised that people have told me this--and that, at least when I was starting my PhD, there was a common conception that having a romantic partner was somehow necessary for enduring the trials of the PhD. While it is important to nurture healthy relationships with supportive people, a significant other does not need to be one of them. Especially in relationships between people of similar levels of ambition, it can become tricky to negotiate coevolution and colocation, thus adding unnecessary pressure to the PhD experience. (And, unfortunately, because of society's insistence on holding on to gender roles, women who date men often find themselves with more pressure to conform to their partner's desires.) During my PhD, I had many friends, some of them women in male-dominated fields, many who ended up becoming stars in their fields, who were happily single for significant portions of their PhD.

--

"The most successful PhD students work all the time."
See my answer (and other answers) to the Quora question "Do Ph.D. students have time for hobbies?" Nurturing a relationship with a significant other also counts as a hobby, so you can do that too if that's what you want.

--

"If it's not hard, it's not worth doing."
There is something to be said for only doing things that help you grow in some way, but there is necessary challenge and then there is unnecessary challenge. During the PhD, it is necessary to come to terms with uncertainty, confusion, and possible rejection of your ideas from the community. This is crucial for one's development into a full-fledged researcher. What is less necessary, however, is depriving yourself of food or sleep, always working to the point of exhaustion, or mismanaging your time so that you are always under deadline pressure. For some people it may be necessary to endure toxic advisor or collaborator relationships, but I would encourage those people to seek ways out of that if possible--abuse does not need to go hand-in-hand with growth. Self-inflicted struggle only makes the necessary struggle more difficult.

--

I hope you realize by now that there is no single right way to do the PhD and that there are many valid--and sometimes conflicting--views on what a good path is. Have fun with the confusion. :)

Sunday, May 22, 2016

"We run things, things don't run we"

Yesterday was Porchfest, an annual event where local musicians perform on their porches all around Somerville, MA. My friend Stefan Anderson, who performs as the solo act The Stefan Banderson, played his cover of Miley Cyrus's "We Can't Stop," which is my favorite cover of all time. (Summer 2013 I heard him perform the cover before I heard the actual song.)

Something I like about Stefan's covers is how they highlight the absurdity of pop song lyrics. During this performance I became obsessed with the line "We run things, things don't run we." After I spent far longer thinking about this line than a serious adult should, I had the following enlightening email exchange with the friends I went to Porchfest with.

This is another post in the series where I experiment with publishing emails the way RMO does. This post is about not being able to stop. It is also about what happens when science PhDs close-read Miley lyrics.

(While we're on the topic of Porchfest I'd also like to plug my friend Christiana's band Paper Waves. Check them out--they're great!)

--

from:Jean Yang
to:Alison Hill,
Elizabeth Brown,
Ali Rabi
date:Sun, May 22, 2016 at 10:46 AM
subject:We run things, things don't run we



Guys I looked this up and this is a real lyric of the song. I really like it. I think I'll make it my new life motto.


---




from:Elizabeth Brown
to:Jean Yang
cc:Alison Hill,
Ali Rabi
date:Sun, May 22, 2016 at 11:05 AM
subject:Re: We run things, things don't run we

Oh my god that is wonderful. It makes a great motto!

--

from:Alison Hill
to:Elizabeth Brown
cc:Jean Yang,
Ali Rabi
date:Sun, May 22, 2016 at 12:55 PM


the final "we" of the third line also serves as the subject of the fourth line .. optionally .. or you could interpret the lines separately, and then the last one is not a statement but an imperative

but all this just makes me like it even more!

--

from:Jean Yang
to:Alison Hill
cc:Elizabeth Brown,
Ali Rabi
date:Sun, May 22, 2016 at 3:18 PM

Yeah, one can also interpret as a fight to control the forces that control us.

I read this article about how "We Can't Stop" is actually a sad song:
http://www.businessinsider.com/why-miley-cyrus-we-cant-stop-is-actually-the-saddest-song-of-the-summer-2013-8

This particular stanza is particularly interesting as a commentary on the power you give up when you enter into a super glam life--whether it's partying or academia. You act like you run the show but you've already bought in to something much bigger and you "can't stop." "Don't take nothing from nobody" and maybe you can escape the greater forces.

SO MUCH SUBTLETLY I LOVE IT.

Friday, May 20, 2016

A Recent Exchange on Money and Time

Below is a recent exchange with my friend Rob Ochshorn, who often writes emails instead of blog posts to work out his thoughts. Here I am borrowing not only his technique, but also his thoughts, on a topic I have recently begun to think about and would like to think about more.

Seth and Aliza were included non-consensually. I continue to include them for context: this conversation happened with an audience.

---

from:Jean Yang
to:Aliza Aufrichtig,
Robert M Ochshorn,
Seth Stephens-Davidowitz
date:Sun, May 15, 2016 at 10:57 AM
subject:Cultural shorthand for money and time

Our society has a widely used abstraction for things that cost money ($$$) but there's not similar concept for time.

I started thinking about this because I wanted a way to express things that are time-expensive (was thinking ⌚⌚⌚).

Related to this, it would be nice if people could tell me how much time things cost, rather than just how much money. Thinking about this made me wonder how much our lack of shorthand for this idea is a result of our entire society not caring about time as much as money, or because the people who shape our cultural shorthand (for instance the people running Yelp) care more about money than time.

Zooming out even further, isn't it interesting that Silicon Valley has become so obsessed with helping people live forever--while perpetuating a culture that steals people's time and youth in an unprecedented all-consuming way? (Based on how you think about it, it is or isn't unprecedented. Let's discuss.) I wonder what this means...

---

from:Robert Ochshorn
to:Jean Yang
cc:Aliza Aufrichtig,
Seth Stephens-Davidowitz
date:Mon, May 16, 2016 at 2:33 AM
subject:Re: Cultural shorthand for money and time

If only the singularity-upload fantasy of an eternal life were based on a mature understanding of leisure! I’m using “leisure” to mean the non-financialized use of time. This distinguishes it from the manner of time that Silicon Valley loves to “save” you. I mean, most of these stupid startups justify their work in terms of saving you time. Some startups allow you to convert your money into somebody else’s time (InstaCart, TaskRabbit, Magic), while others use automation and interface, in the grand tradition of the dishwasher, to let you do your work/chores faster (“so you can focus on …”). 

I would dispute your claim that our society cares about money more than time. I think it’s worse than that: much tech marketing and ideology[0] is based on the myth of a temporal-financial relativity: the conversion of money into time (the inverse, time->money, being what we call a job).

Your Yelp example is interesting. It makes me think of the 50s fantasy of “fast food.” Silicon Valley has proposed a modernization of this concept (Soylent), which should make clear what the purpose of this time-saving is: that we will have more time to work! In other words: what is the point of “saving time” if not to prepare or enjoy a nice meal?

Iconographically, there’s some design precedent creeping into popular consciousness. Medium, for example, numerically estimates the time an article will take its average user to ingest (“5 min read”). I’m kicking myself for not introducing you to my friend Tristan, who just passed through Cambridge for a Berkman lecture and runs a Time Well Spent movement that sees itself as a time-respecting “Fair Trade” equivalent for tech. What I like about your “⌚⌚⌚ is that it implies a depth and prestige to a potential long-form experience—it makes me feel like I will be taken out of my normal, fragmentary, hectic existence and transported into a deep, coherent, and focused place for a while. The watches culturally suggest wealth and tradition. It’s a very different feel with hourglasses (⌛⌛⌛)—perhaps the difference between being in control of one’s time verses our lives slipping away from us.

There’s a media-theoretical concept that’s important here: Marshall McLuhan’s notion of the reversal. The automobile makes us faster, but when you extend the concept as far as it goes, we’re stuck sitting in traffic. Ivan Illich took this even further, making a brutal calculation[1] of a car’s speed based on all of the factors that allow us to occasionally sit in a car cruising down the open road.

So for precedent I would propose McDonald’s, the dishwasher, and the automobile. Think about the ways they play together: teenagers working at McDonald’s to buy a car while their mothers enter the workforce, aided at home by the dishwasher.

Warm greetings from Ramallah! Time definitely seems to work differently here.

Your correspondent,
R.M.O.


[0] This is slightly off-topic, but it’s too lovely to omit. From Levy’s Inside the Googleplex, a great snapshot how time and latency are discussed/traded within Google (emph mine):

After the Code Yellow, Google set a companywide OKR (the objective key result metric Google uses to set goals) to fight latency. To help meet its goals, the company created a market-based incentive program for product teams to juice up performance—a cap-and-trade model in which teams were mandated latency ceilings or maximum performance times. If a team didn’t make its benchmarks, says Hölzle, it accrued a debt that had to be paid off by barter with a team that exceeded its benchmarks. “You could trade for an engineer or machines. Whatever,” he says. The metric for this exchange was, oddly enough, human lives. The calculation goes like this: average human life expectancy is seventy years. That’s about two billion seconds. If a product has 100 million users and unnecessarily wastes four seconds of a user’s time every day, that was more than a hundred people killed in a year. So if the Gmail team wasn’t meeting its goals, it might go to the Picasa team and ask for ten lives to lift its speed budget into the black. In exchange, the Gmailers might yield a thousand servers from its allocation or all its massage tickets for the next month.

[1] From Wikipedia:

…the concept of counterproductivity: when institutions of modern industrial society impede their purported aims. For example, Ivan Illich calculated that, in America in the 1970s, if you add the time spent to work to earn the money to buy a car, the time spent in the car (including traffic jam), the time spent in the health care industry because of a car crash, the time spent in the oil industry to fuel cars ...etc., and you divide the number of kilometres traveled per year by that, you obtain the following calculation: 10000 km per year per person divided by 1600 hours per year per American equals 6 km per hour. So the real speed of a car would be about 3.7 miles per hour.

Friday, May 13, 2016

Networking Tips for Younger PhD Students

This post was a collaboration with Nadia Polikarpova and Shachar Itzhaky, done while we were supposed to be collaborating on other things.

A younger student in the group where I did my PhD is going to his first conference next week and my advisor sent him my way for advice. Nadia, Shachar, and I had already been discussing research (and attending a BBQ) for hours at this point, so we welcomed the opportunity to discuss something else. Here's what we came up with.
  • Be prepared to show off your research. A main goal of attending a conference is to get your name out there, associated with good work. At a conference, you'll be lucky to get more than five minutes in with someone, especially somebody established. It would serve you well to prepare a succinct, memorable elevator pitch for your work. If you have a demo, it doesn't hurt to have that ready in case someone wants to see. Bonus: if you can tailor your pitch based on the interests of who you're talking to, they'll like it more.
  • Make your networking bingo sheet--and play it. Make a list of people who you'd like to talk to: people about whose work you have questions, people whose work you cite/whose papers your read, people you'd like to tell about your work, and people whose work you admire in general. You may want to consult your advisor and/or collaborators for a good list. Having a list helps keep you on track for making the most of your time at the conference. I also like feeling like I'm on a mission.
  • Don't be afraid to ask for introductions. While most people in my community (programming languages) are pretty friendly, it can often be easier to talk to someone if you get introduced. Don't be afraid to ask people if they are able to introduce you to someone on your bingo sheet.
  • Don't sit with the same people twice. This is a conference, not vacation with your best friends. My former advisor Saman Amarasinghe liked to tell his PhD students to split up at all meals so they can meet new people. It's fine to have a friend you go around the conference with, but make sure you're talking to new people during each break and meal.
  • Prepare questions and talking points. When I was a first-year PhD student attending my first POPL, my friend Luke and I were so excited to see Xavier Leroy, one of our research heroes, standing by himself during the break that we ran up to him and introduced ourselves. As we had no further game plan, we answered the questions he asked us about who we were and then we ran away. At the next conference, PLDI, I was determined to do better. I asked his student, Jean-Baptiste, if I could have lunch with them on one of the days. I figured that since Jean-Baptiste was my friend, Xavier could become my friend by transitivity. The conference flew by and we ran out of lunches, but Jean-Baptiste said I was welcome to walk with them while Xavier fetched his suitcase and walked to get a cab. Again, I was very excited, but again, I had nothing to say and the conversation more or less consisted of me answering questions that Xavier politely asked me. Ever since, I've always made sure to prepare a couple of questions and/or talking points if I really want to talk to someone. It also doesn't hurt to prepare a couple of general stories/talking points to break the ice when you sit at that lunch table full of people you don't know.
  • Listen more than you talk. It is well known that Level 1 networking for graduate students involves ambushing innocent passers-by with a well-rehearsed elevator pitch. While this more or less does the job, there are greater heights to aspire to. The next level involves listening to and interacting with the other person. In How to Win Friends and Influence People, Dale Carnegie talks about how much more people like you if you let them talk first and figure out what they want to talk about. This is also true in research settings. I, for one, tend to be much more impressed with someone if they can ask insightful questions/offer useful suggestions about my work than if they simply presented to me interesting ideas about their own work.
  • Dress appropriately. Dressing appropriately increases one's efficacy in all situations and conferences are no different. Your main fashion goals at a conference are 1) not to stand out too much, 2) to be sufficiently mobile to move between groups and between the conference venue and evening activities, and 3) to be sufficiently comfortable that you can last from the morning until late at night. For 2), make sure your backpack isn't too big and you don't have too much stuff but have your jacket/comfortable shoes if you're going to head out with a group for dinner and/or drinks.
  • Carry a notebook. If you're doing it right, you'll be having lots of conversations. It will be useful to write down things you learn and things to follow up on. Notebooks are also useful for drawing figures to describe your research.
  • Always wear your nametag. People are going to remember who you are a lot better if they see your name every time they look at you.
  • Mind your manners. You want people to remember you for your research without being distracted by poor manners. It's a good idea to be careful not to interrupt people and not to make a mess when you eat. I also try not to make too big of a deal out of my dietary restrictions when we're making decisions about where to eat. It makes it a lot easier, especially in large groups, if you try to be agreeable and go with the flow.
Finally, have fun. Conferences have helped me solidify friendships with many people in my research area. Especially as you spend more time in a community, conferences can become more like a family reunion than a serious networking event with faceless paper authors.

As always, let us know if you have other tips!

Saturday, May 07, 2016

Why It's Not Academia's Job to Produce Code That Ships

Note: The images in this post are inexplicably broken due to some kind of Blogger bug. If someone is reading this at Google, please help!

My scientist friends often scoff at crime show writers' creative interpretation of technology's limits.

The technology shiny world of CSI: Cyber.
"Let's zoom in here," a character says in an investigation room with floor-to-ceiling screens showing high-definition maps of the show's major metropolitan area. A flick of the fingers reveals an image of the suspect at mouth-watering resolution.

In another scene, the characters listen to a voice mail from the suspect. "What's that in the background?" one investigator asks. Using an interface that deadmau5 would kill to have, the hacker of the bunch strips out the the talking, the other sounds. They say some words like "triangulation" and, eureka, they deduce the suspect's exact location.

Yes, real police technology is nowhere near this sophisticated. Yes, nobody (except maybe the government, secretly) has technology like this. But those who criticize the lack of realism are missing the point.

The realities that art constructs take us out of our existing frames of perception--not only for fun, but also for profit. Many important technological advances, from the submarine from the cell phone, appeared in fiction well before they appeared in real life. Correlation does not imply causation, but many dare say that fiction inspires science.

Some complaints against academic Computer Science.
This brings us to the relationship between academic Computer Science and the tech industry. Recently, people in industry have made similar criticisms of academic computer science. Mike Hoye of Mozilla started the conversation by saying he was "extremely angry" with academics for making it difficult for industry to access the research results. This unleashed a stream of Internet frustration against academics about everything from lack of Open Access (not our faults) to squandering government funding (not entirely true) to not caring about reproducibility or sharing our code (addressed in an earlier blog post).

At the heart of the frustration is a legitimate accusation*: that academics care more about producing papers than about producing anything immediately (or close to immediately) useful for the real world. I have been hearing some variation of this criticism, from academics as well as industry people, for longer than I have been doing research. But these criticisms are equivalent to saying that TV writers care more about making a good show than being technically realistic. While both are correct observations, they should not be complaints. The real problem here is not that academics don't care about relevance or that industry does not care about principles, but that there is a mismatch in expectations.

It makes sense that people expect academic research results to work in companies right away. Research that makes tangible, measurable contributions is often what ends up being most popular with funding sources (including industry), media outlets, and other academics reviewing papers, faculty applications, and promotion cases. As a result, academic researchers are increasingly under pressure to do research that can be described as "realistic" and "practical," to explicitly make connections between academic work and the real, practical work that goes on in industry.

In reality, most research--and much of the research worth doing--is far from being immediately practical. For very applied research, the connections are natural and the claims of practicality may be a summer internship or startup away from being true. Everything else is a career bet. Academics bet years, sometimes the entirety, of their careers on visions of what the world will be like in five, ten, twenty years. Many, many academics spend many years doing what others consider "irrelevant," "crazy," or "impossible" so that the ideas are ready by the time the time the other factors--physical hardware, society--are in place.

The paths to becoming billion-dollar industries.
In Computer Science, it is especially easy to forget that longer-term research is important when we can already do so much with existing ideas. But even if we look at what ends up making  money, evidence shows that career bets are responsible for much of the technology we have today. The book Innovation in Information Technology talks about how ideas in computer science turned into billion-dollar ideas. A graphic from the book (on right) shows that the Internet started as a university project in the sixties. Another graphic shows there were similarly long tech transfer trajectories for ideas such as relational databases, the World Wide Web, speech recognition, and broadband in the last mile.

The story of slow transfer is true across Computer Science. People often ask me why I do research in programming languages if most of the mainstream programming languages were created by regular programmers. It we look closely, however, most of the features in mainstream languages came out of decades of research. Yes, Guido Van Rossum was a programmer and not a researcher before he became the Benevolent Dictator of Python. But Python's contribution is not in innovating in terms of any particular paradigm, but in combining well features like object orientation (Smalltalk, 1972, and Clu, 1975), anonymous lambda functions (the lambda calculus, 1937), and garbage collection (1959) with an interactive feel (1960s). As programming languages researchers, we're looking at what's next: how to address problems now that people without formal training are programming, now that we have all these security and privacy concerns. In a media interview about my Jeeves language for automatically enforcing security and privacy policies, I explained the purpose of creating research languages as follows: "We’re taking a crazy idea, showing that it can work at all, and then fleshing it out so that it can work in the real world."

Some may believe that all of the deep, difficult work has already been done in Computer Science--and now we should simply capitalize on the efforts of researchers past. History has shown that progress has always gone beyond people's imaginations. Henry Leavitt Ellsworth, the first Commissioner of the US Patent Office, is known to have made fun of the notion that progress is ending, saying, "The advancement of the arts, from year to year, taxes our credulity and seems to presage the arrival of that period when human improvement must end." And common sense tell us otherwise. All of our data is becoming digitized and we have no clue how to make sure we're not leaking too much information. We're using software to design drugs and diagnose illness without really understanding what the software is doing. To say we have finished making progress is to be satisfied with an unsatisfying status quo.

The challenge, then, is not to get academics to be more relevant, but to preserve the separate roles of industry and academia while promoting transfer of ideas. As academics, we can do better in communicating the expectations of academic research (an outreach problem) and developing more concrete standards of expectations for "practical" research (something that Artifact Evaluation Committees have been doing, but that could benefit from more input from industry). As a society, we also need to work towards having more patience with the pace of research--and with scientists taking career bets that don't pay off. Part of the onus is on scientists for better communicating the actual implications of the work. But everyone else also has a responsibility to understand that if we're in the business of developing tools for an unpredictable future--as academics are--it is unreasonable to expect that we can fill in all the details right away, or that we're always right.

It is exciting that we live in a time when it is possible to see technical ideas go from abstract formulations to billion-dollar industries in the course of a single lifetime. It is clear we need to rethink how academia and industry should coexist under these new circumstances. Asking academics to conform to the standards of industry, however, is like asking TV writers to conform to the standards of scientists--unnecessary and stifling to creativity. I invite you to think with me about how we can do better.

With thanks to Rob Miller and Emery Berger for helping with references.

* Note that this post does not address @mhoye's main complaint about reproducibility, for which the response is that, at least in Programming Languages and Software Engineering, we recognize this can be a problem (though not as big of a problem as some may think) and have been working on it through the formation of Artifact Evaluation Committees. This post addresses the more general "what are academics even doing?!" frustration that arose from the thread.

--

Addendum: Many have pointed out that @mhoye was mainly asking for researchers to share their code. I address the specific accusation about academics not sharing code in a previous blog post. I should add that I'm all for sharing of usable code, when that's relevant to the work. In fact, I'm co-chairing the POPL 2017 Artifact Evaluation Committee for this reason. I'm also all for bridging the gaps between academia and industry. This is why I started the Cybersecurity Factory accelerator for turning commercializing security research.

What I'm responding to in this post is the deeper underlying sentiment responsible for the misperception that academics do not share their code, the sentiment that academics are not relevant. This relevance, translating roughly into "something that can be turned into a commercial idea" or "something that can be implemented in a production platform" is what I mean by "shipping code." For those who wonder if people really expect this, the answer is yes. I've been asked everything from "why work on something if it's not usable in industry in the next five years?" to "why work on something if you're not solving the problems industry has right now?"

What I'd like is for people to recognize that in order for us to take bets on the future, not all research is going to seem relevant right away--and some if might never be relevant. It's a sad state of affairs when would-be Nobel laureatees end up driving car dealership shuttles because they failed to demonstrate immediate relevance. Supporting basic science in computer science involves patience with research.

Friday, May 06, 2016

Dual Booting Windows 10 and Ubuntu 16.04

For a couple of years, secure boot was making it harder every time to install a Windows/Linux dual boot. I've just finished successfully setting up a dual boot on my Lenovo X1 Carbon and am happy to report that it requires more or less the same tedious steps as before.

Here are step-by-step instructions for setting up a dual boot, where Windows has already been installed.
  1. Shrink the size of your Windows partition. Create a partition for Linux, an optional swap partition for Linux, and an optional other partition if you want to share files between your two partitions. You don't need to format your Linux and swap partitions. You will want to format the optional shared partition as NTFS.
  2. Get an Ubuntu image onto a DVD or a USB drive.
  3. Turn off Fast Boot in Windows. If you don't do this, your system is going to boot straight into Windows every time.
  4. In your BIOS, disable Secure Boot, enable UEFI, and disable Legacy Boot. You can mess with your BIOS settings by restarting and then intercepting startup by pressing "enter."
  5. Boot from your image. You can do this by restarting and intercepting startup to boot from a device. When choosing the installation option, make sure to choose "something else" instead of the ones that erase all your files.
  6. Follow the instructions and install Linux onto the partition(s) you've set aside for it. You will need to select the intended Linux partition and format it as ext[something] (I did ext3) and set the mount point as the top directory. You'll also need to designate the swap partition as such. You'll also have to explicitly specify your boot partition. Since you already have Windows installed, this will be the first partition formatted fat32. (This was different than before. I don't recall ever having to explicitly reformat my Linux partition or choose my boot partition.)
  7. From Linux, run Boot-Repair to reinstall your GRUB. Otherwise you'll boot straight into Windows every time. (If you accidentally booted back into Windows, you can repair your GRUB by running Linux live off your boot device.)
  8. If you want to share files between Windows and Linux, you'll also need to configure your shared partition so you can use it in Linux. (Instructions here. I had to restart before Dropbox let me put my directory there.)
Enjoy!

P.S. Does anyone know when I'd ever want to use Legacy Boot? According to everything I've read it doesn't seem like I ever need it for anything. Why is it there?

Sunday, May 01, 2016

Myth: "CS Researchers Don't Publish Code or Data"

A collaboration with Sam Tobin-Hochstadt, Assistant Professor at Indiana University.

There has been some buzz on social media about this "Extremely Angry" Twitter thread. Mike Hoye, Engineering Community Manager for Firefox at Mozilla expressed frustration about getting access to the products of research. It turns out that many other people are angry about this too.

While there are certainly legitimate aspects to these complaints, we’d like to address a specific misperception from this Twitter thread: the claim that "CS researchers don't publish code or data." The data simply shows this is not true.

First of all, while the Repeatability in Computer Science study from a few years ago highlighted some issues with reproducibility in our field, it revealed that a significant fraction of researchers (226 out of 402) in systems conferences have code available either directly linked from the paper, or on request.

Additionally, in the last few years, conferences in Programming Languages and Software Engineering have been pushing for more standardization of code-sharing and repeatability of results through Artifact Evaluation Committees. There is a comprehensive summary of Artifact Evaluation in our field here. (In fact, Jean is co-chairing the POPL 2017 AEC with Stephen Chong.) According to the site, artifacts are evaluated according to the following criteria:
  • Consistent with the paper. Does the artifact substantiate and help to reproduce the claims in the paper?
  • Complete. What is the fraction of the results that can be reproduced?
  • Well documented. Does the artifact describe and demonstrate how to apply the presented method to a new input?
  • Easy to reuse. How easy is it to reuse the provided artifact? 
The most detailed documentation is associated with the AEC for OOPSLA 2013, where 50 papers were accepted, 18 artifacts passed evaluation, and 3 artifacts were rejected. For PLDI 2014, 20 of of 50 papers submitted artifacts and 12 passed. By PLDI 2015, 27 papers (out of 52) had had approved artifacts. Even POPL, the “theoretical” PL conference, had 21 papers with approved artifacts by 2016.

For those wondering why more artifacts are not passing yet, here is a transcribed discussion by Edward Yang from PLDI 2014. The biggest takeaways are that 1) many people care about getting the community to share reproducible and reusable code and 2) it takes time to figure out the best ways to share research code. (That academia’s job is not to produce shippable products, as Sam pointed out on Twitter, is the subject of a longer conversation.)

While it’s going to take time for us to develop practices and standards that encourage reproducibility and reusability, we’ve already seen some improvements. Over the years, Artifact Evaluation has become more standardized and committees have moved towards asking researchers to package code in VMs if possible to ensure long-term reproducibility. Here are the latest instructions for authors.

Yes, we can always do better to push towards making all of our papers and code available and reusable. Yes, researchers can do better in helping bridge the communication gap between academia and industry--and this is something we've both worked at. But the evidence shows that the academic community is certainly sharing our code--and that we’ve been doing a better job of it each year.

Note: It would be really cool if someone did a survey of individual researchers. As Sam pointed out on Twitter, many of our colleagues use GitHub or other social version control and push their code even before the papers come out.

--

UPDATE! Here is a survey for academics to report on how we share code. Please fill it out so we can see what the numbers are like! Thanks to Emery Berger, Professor at UMass Amherst, for conducting the survey.

Related update. Some conversations with others reminded me that the times I haven't shared my code, it has been because I was collaborating with companies and corporate IP policies prevented me from sharing. (In fact, this was one of the reasons I preferred to stay in academia.) The survey above asks about this. I'm curious how the numbers come out.

Thursday, March 17, 2016

What The Bachelor Teaches Us About Choosing a PhD Advisor

This post was an experiment in simultaneous co-writing with Claire Le Goues, fellow CMU Computer Science professor, fellow undergraduate alumna of advisor Greg Morrisett from the time he was at Harvard University, and fellow reality TV enthusiast.

--

In academia, many PhD students are lucky enough to receive offers of admission from several different programs, and thus the opportunity to work with a handful of different advisors. During the decision-making process, the prospective advisors engage in Skype calls and often a recruitment open house filled with meetings and fun social events to compete for the favor of each PhD student. The end goal is the PhD student’s decision to work with the advisor.

 A couple of months is a short time to decide to be someone’s student for up to ten years. Especially when you only see each person briefly--and at their best. Especially when you’re trying to make a decision between so many people. Especially when you might not even be sure what you want. Especially when you’re tired from all the travel.

That’s right: the PhD student recruitment process is like The Bachelor.* On the popular reality show The Bachelor, a couple dozen eligible bachelorettes go on dates around the world over the course of twelve weeks to compete for the “final rose,” usually accompanied by a proposal of marriage, from the protagonist bachelor. In our world, the PhD student is the protagonist, and the potential advisers are the bachelorettes. (For those concerned about the gender asymmetry: there is also an inverse show, The Bachelorette.**)

It is not surprising that both on The Bachelor and in PhD-land, there are mistakes. On the 14th season of The Bachelor, Jake Pavelka famously chose Vienna Girardi despite the warnings of all other contestants. While Jake saw only the fun side of Vienna, the other contestants saw how self-centered and unpleasant she could really be. Many contestants were sent home for trying to warn Jake that Vienna “may not be here for the right reasons.” Similarly, on the 16th season, Ben Flajnik was so dazzled by Courtney Robertson’s beauty that he dismissed all hints that she was “different in the house than she is with you.” Viewers across America watched as Courtney charmed Ben while bullying the other contestants, telling them that she was “not here to make friends.”

It is interesting that both on The Bachelor and in academia, the multiple suitors often have access to information that the protagonist does not. The suitors all live together and interact with one another without the protagonist; professors are part of a wide social/professional network and often know one another from graduate school, conferences, and the like. In both cases, however, the person in a position of choice has plenty of reason to doubt the motivations of one suitor saying something negative about another.

Indeed, the smart suitors typically avoid saying negative things about competitors, as doing so typically results in a swift diminishment of their own prospects. Similarly, you will not hear much that is negative from your potential advisors during the PhD recruitment process. All other potential advisors are “brilliant researchers” who “do great work.” But if there’s anything we can learn from The Bachelor, it’s that it pays to pay attention to red flags. There is no such thing as an abusive advisor, only an “incompatible advising style.” The advisor who requires students to work weekends becomes “hands-on”, or someone who “drives students hard.” The advisor who only pays attention to students after they’ve proven themselves becomes “hands-off.” The advisor who barely pays any attention at all to students becomes someone who “gives students a lot of freedom to find themselves.” These ways of describing potential advisors can certainly be confusing. On the one hand, a potential advisor and their students may not have the potential student’s best interests in mind. On the other hand, potentially coded words may actually be the truth.

Fortunately, a key difference between PhD recruitment and The Bachelor is that PhD students are allowed to talk to whomever they want about potential advisors. This means they can talk to current students (which may be like talking to the family of potential bachelorettes in that they have a conflict of interest), graduated students, and former students who ended the advisor-advisee relationship before or without graduating. Though the tabloids do not cover prematurely terminated advisor-advisee relationships the way they covered the breakups of Jake and Vienna or Ben and Courtney, it is possible--and often very productive--to find out about these situations if you ask around. (We also strongly recommend asking a trusted mentor for what should be considered a red flag in a potential advising situation--there are more than we can list!)

When doing due diligence, it’s helpful to ask for concrete facts. How was Ben Flajnik supposed to know that “one way with you, but another way in the house” really meant “Courtney walks past us creepily when we’re having fun and berates us?” Besides, one person’s nightmare might be another person’s ideal. Maybe Ben wants a partner to do these kinds of activities with. (Though apparently not, since he broke things off with Courtney after watching footage of his season.) Similarly, when asking about potential advisors, it is helpful to know whether “hands-on” means “they give me guidance whenever I want it” or “they check in every day” or “they require me to work weekends whether I like it or not.” Daily checkins might be perfect for one student and terrible for another. Asking concretely about requirements and availability can go a long way in resolving possible confusion. Plus, concrete details are much more difficult to fabricate believably.

It’s also important to trust, but verify. On the most recent season, Leah lied to Ben Higgins by saying that obvious frontrunner Lauren B was different in the house than with him. But Leah was the only person who said this, Lauren’s shocked reaction when confronted was very believable, and all other available evidence suggested that Lauren was as warm and friendly with the other women in the competition as she appeared to Ben. Ben sent Leah home and ultimately proposed to Lauren. The lesson is that if you do hear something negative about a potential advisor, asking them--or their students--directly about it, as well as observing the other evidence at hand, are good ways to see if the rumor is true.

We can also learn from Bachelor history that the success of the whirlwind matching process is not sufficient to ensure a successful future. The handful of successful bachelor couples probably succeeded because they actually dated/got to know each other after the final rose and before getting married. Similarly, it is helpful for PhD students to take as much time as they can within the parameters of their program before confirming an advisor. This may mean Skyping with the advisor after the open house or rotating with the advisor’s group before deciding to join. It is also important to remember that the final rose doesn’t determine your fate forever. Just as Jason Mesnick ended up marrying his second choice from The Bachelor season 13 after the show ended, many successful researchers switched advisors at least once during their PhDs***.

Finally, remember that JoJo could, after a couple of months, reflect on her unexpected breakup with Ben Higgins with detached but understanding affection and is now going on to star on her own season of The Bachelorette. Similarly, your potential but ultimately unsuccessful advisors will generally understand---even if not in the moment---that the process works in mysterious and unpredictable ways. Just like the Bachelor alums who are now friends in real life, feel free to approach and talk to your rejected advisers at conferences and in other settings, and consider collaborating with them in the future. After all, you already know you have interests in common.

* We consider this analogy uncreepy only because we do not actually advocate professors developing romantic relationships with their students.
** We acknowledge the problematic nature of The Bachelor/The Bachelorette along lines of heteronormativity, race, gender roles. But so many lessons.
*** Our undergraduate advisor Greg Morrisett has said that when he first went to Carnegie Mellon University, he thought he was going to work with a professor who ended up going to Brown. Then he wanted to work with another professor, who ultimately had too many students at the time to take on another. He worked for a while with a professor who did not ultimately end up advising his Ph.D. thesis. Greg did not end up with his final advisor until late in his graduate career. He has since had an illustrious, award-winning research career and is now the Dean of CIS at Cornell.

Tuesday, March 08, 2016

Women's Voices: A Reading List

While I have mixed feelings about celebrating the fact that women are often so underappreciated we need to set aside a day for honoring women, I'll use International Women's  Day as an excuse to put together a partial list of my favorite books with a strong female voice. This list contains a mix of memoir, manifesto, and fiction and is in alphabetical order by author.
  • Kate Bolick, Spinster. Bolick examines the lives of several women, including herself, who put off the traditional path of marriage and children to pursue other interests. Many of these "spinsters" go on to marry and have more traditional lives, but most do it on their own terms, and not until they have gotten what they want out of their single years.
  • Elena Ferrante, My Brilliant Friend (and the rest of the series). The novel My Brilliant Friend, translated from Italian, is the best depiction of a friendship--and the admiration and jealousy that comes with a close friendship--that I have ever read. I especially like that the book focuses on the friendship between the two main characters and their academic competition rather than a love story, as coming-of-age books about young women tend to do. The later books are beautiful portrayals of the ups and downs of navigating career success, romances, and relationships with family.
  • Estelle Freedman, The Essential Feminist Reader. Fantastic collection of essays by authors from Mary Wollstonecraft to Audre Lorde.
  • Germaine Greer, The Female Eunuch. Possibly my favorite feminist classic. Greer writes powerfully about the repression that comes from the traditional nuclear family. From the forward of the 21st anniversary edition, by way of Wikipedia: "The freedom I pleaded for twenty years ago was freedom to be a person, with dignity, integrity, nobility, passion, pride that constitute personhood. Freedom to run, shout, talk loudly and sit with your knees apart. Freedom to know and love the earth and all that swims, lies, and crawls upon it... most of the women in the world are still afraid, still hungry, still mute and loaded by religion with all kinds of fetters, masked, muzzled, mutilated and beaten."
  • Sheila Heti, How Should a Person Be. I love the way Heti experiments with different modes of writing to capture the existential angst, friendships, of being a twenty-something artistic person in what seems like a semi-autobiographical work
  • Belle De Jour, Secret Diary of a Call Girl. Well written and surprisingly relatable, Secret Diary might change the way you view sex workers and sexual empowerment. Fun fact: during the period that this book describes, the author was concurrently pursuing a science PhD in the UK.
  • Mindy Kaling, Why Not Me? I really like what comedienne Kaling has to say about her relationship with her work, how her work gives her confidence, and how she maintains this confidence while the rest of the world pays attention to things that should matter less than the quality of her work.
  • Beryl Markham, West With the Night. Markham was not just a famous beauty who had love affairs with talented men (including Antoine de Saint-Exupéry), but also one of the first bush pilots in Africa and a fantastic writer. As she writes about her work flying in Kenya and her love of the land, she comes across as such a strong, resourceful, and brave woman.
  • Caitlin Moran, How to Be a Woman. I love Moran's voice and wisdom as she talks about growing into a woman and navigating womanhood.
  • Cheryl Strayed, Tiny Beautiful Things. Strayed opens up about her own struggles and triumphs through the "Dear Sugar" advice column she writes. Beautifully written and emotionally powerful.
  • Virginia Woolf, A Room of One's Own. Woolf is one of my favorite writers in the English language and this short book makes some of the best arguments for gender equality that I have ever read or heard. One of my favorite lines, about why women need to be allowed to earn a comfortable income: "One cannot think well, love well, sleep well, if one has not dined well. The lamp in the spine does not light on beef and prunes."
Would love to hear your recommendations!

Saturday, March 05, 2016

The Angst Overhead

In high school, our crew coach often reminded us to relax our faces. Crew is a sport based on precision and pain. Though frowning is often the natural response, holding on to tension while rowing simply wastes energy.

Recently I have been wondering when this advice applies to to creative processes, especially as many believe that tension is necessary for producing great work. One of the stories in Italo Calvino's If on a Winter's Night a Traveler features two writers, an untroubled one who produces best-sellers with ease and a tortured one pursuing an elusive truth. Each is envious of the other: the first of the second's facility of creation, and the second of the first's depth of pursuit. In the story, each writer tries to be more like the other and becomes less effective than before. This dichotomy between between productivity and depth is one many of us believe in.

There is evidence that believing creation should be difficult can slow the process of creation. In her memoir The Art of Asking, singer Amanda Palmer talks about how public perceptions of artists, as well as artists' romanticization of their own processes, can hold creation back. Amanda presents the image of the artist as solitary, locked in an attic, brooding, and probably wearing a scarf. She then describes once breaking her own rules--not going on Twitter while writing a song, because artists are solitary--and producing one of her best pieces.

Still, many of us cling to the association between creation and masochism. I've seen it in myself and among my peers in academia. We want to produce good work in the world, so we produce pain in ourselves. Perhaps subconsciously, we deny ourselves that break from our desk, that conversation with a friend, because we believe that this might somehow get in the way of the creative process. The weight of what we want to achieve overwhelms us. It is difficult not to obsess until we have brought our abstract idea into the world of the concrete. But we fail to realize that this angst, while often a product of creation, does not produce creation.

Much of my development as a researcher has involved reducing this angst. Early in my PhD, I had an internship with a researcher who, after listening to me talk about my ideas, would say, "Just go do it." I would watch in amazement as he executed on difficult tasks of uncertain outcome with little apparent angst. Similarly, I learned from my advisor the power of calmly writing things on a whiteboard to process both ideas unfamiliar to us and ideas no one has ever presented before. It is not necessary to feel the weight of the entire project with each forward step. Allowing work-angst to absorb us--or worse, believing that the angst is what makes the work good--often only wastes energy.

Computer Scientists often think in terms of "overheads," how much a process slows down the time required to achieve the desired task. Angst often incurs significant overhead with little gain. Thus, to better pursue elusive truths, I am now pursuing minimal angst overhead.

Saturday, February 27, 2016

What My PhD Was Like

What it looks like to do a PhD: the view from my desk.
Recently, I have been talking to many prospective Computer Science PhD students about choosing graduate institutions and advisors. In addition to excitement, there is fear and confusion. The confusion comes not only from not knowing what to expect, but not even knowing how to think about what to expect.

One prospective student put it well when she said that she knows how she is in other work situations, but she has never done a PhD before, so she does not know what it will be like. She had been curious about things like my relationship with my advisor, my research trajectory, and whether I had hobbies. She mentioned speaking to other people at various points during the PhD, but not having the whole picture much. After this conversation I decided it would be helpful for more people to talk about their PhD experiences in entirety. Now that I am a few months out of my Computer Science PhD at MIT and am about to begin an Assistant Professor position at Carnegie Mellon University, I can talk about my PhD experience in whole. This is my version of Philip Guo's The Ph.D. Grind.

Like many other academics, I will say that graduate school was one of the best periods of my life. I grew immensely, made many friends, and learned about the research process. During my PhD, I largely got to determine my own research agenda and day-to-day schedule. I developed my tastes as a researcher. I developed my tastes as a human being. Also important to me is that I developed some of the most intellectually and emotionally fulfilling friendships of my life. I loved graduate school so much that I decided to stay in academia.

But this does not give the entire picture. "Loving graduate school" is different from loving a good meal, a thought-provoking film, a pet, or another person. A PhD is about training you to become a researcher. The further you are from being in an experimental field, the further this growth is about concrete skills and the more it is about existential questions of how you want to be. If you want to stay in academia, you must also balance the growth with ensuring you have enough to show at the end for the intellectual coming-out party that is the academic job market. This growth is painful and anxiogenic. Even if you are in a supportive environment and have great work-life balance, a PhD is not supposed to be a comfortable ride. The flip side is that, as my friend Alex describes it, during your PhD every day is "epic."

Enough philosophizing. Here, concretely, is what my PhD was like.

Summer 2008. At the end of the summer, I move into my office at MIT, where I am to be co-advised by Mike Ernst and Saman Amarasinghe. Saman pays for me to start early. I spend a couple of weeks reading papers, mostly about parallelism, and report to him every morning about what I've read. He gives me lots of advice about what life is going to be like. Mike Ernst has been in Europe this whole time. The last week of the summer, Mike Ernst calls me and tells me he is moving to the University of Washington.

2008-2009 (Year One). I'm recovering from a repetitive stress injury in my neck, so Saman advises me to take hard theory courses that involve little computer use. I take Advanced Algorithms and Machine Learning in the fall and Advanced Complexity Theory in the spring.

I get involved with and become lead author on a PLDI submission with Saman and Martin Rinard about a programming language for trading off power and accuracy. This paper is pretty good for having come into existence over the course of 1.5 months, but not objectively a great paper--and it gets rejected.

Ras Bodik, a professor at Berkeley who tried to recruit me, emails me telling me his student Armando Solar-Lezama is starting a professorship at MIT. I meet Armando and he sends me many papers to read. Soon we are meeting and working so much I no longer have time for the other project, which was a suboptimal fit anyway for various reasons. I like how much bandwidth Armando has for technical discussions, especially since he has no other students or teaching duties at the time. I am nervous that this high meeting frequency is unsustainable, so I try hard to recruit other students to Armando's group.

Armando and I submit a paper to OOPSLA but it is not good because we don't start writing it until three days before. I also submit a paper to the Haskell Workshop about my senior undergraduate thesis, but it is not good because I don't know how to write papers. My friend Jean-Baptiste who reads it asks why my blog is so good but my paper drafts are so bad.

Since I am still figuring out what I want to do, I schedule many meetings with professors and ask them how to do research. In addition to Saman's group meeting I also attend Daniel Jackson's group meeting. I go to many PhD defense and job talks. Both Martin and Saman tell me that in order to become a good researcher, I have to flounder and fail. I have never failed before. I take it as a challenge to do work risky enough to fail.

January of this year I attend my first conference, POPL. Martin pays for me to go after I email him asking how I can get to go to POPL. I meet many people, including many people at Microsoft Research. This eventually leads to my first internship.

Outside of work, I try to avoid using my computer due to my repetitive stress injury. Because of the injury, I am also aggressive about working 8-hour days and taking breaks on weekends. I am too lazy to make many friends so I spend my free time reading, cooking, doing yoga, and running.

Summer 2009. I intern at Microsoft Research in Redmond with Chris Hawblitzel. I had seen Chris's talk at POPL about verifying garbage collectors using Boogie and thought it was one of the coolest projects I had ever seen. I had not thought I was qualified to intern with him, but some of the people I met at POPL recommended me to him. This summer, we build Verve, an operating system verified for type and memory safety. I had never verified anything or built an operating system before. I work hard, 10-12 hours a day, because there is so much to learn and because the project is so fun. I work closely with Chris and he teaches me an incredible amount about working with low-level code. Outside of work, I hang out with the other interns. I live in Redmond but on weekends I go into the city, where I have two friends I stay with.

2009-2010 (Year Two). I continue to work with Armando, on the project that eventually becomes the Jeeves programming language. My first year we started with a vague idea that dynamic constraint-solving was useful for handling corner cases that static program synthesis could not handle well. We apply this to data imputation. We learn over the course of 1.5 years of paper submissions that people don't care much about data imputation, especially since our results are not particularly good. By the end of my second year, we start thinking that security might be a better application domain. This cumulative work is my masters thesis. We still have many things to figure out at this point so I am not that excited about my thesis. I try to ask for an extension but Armando tells me to just turn it in.

In the spring, Saman and I start what becomes an annual off-site retreat of all the research groups related to programming languages at MIT. People give research talks and we have philosophical discussions about the future of research, publishing, and education. At the first one, we realize there are many more people who have common interests than previously thought. After the first meeting, the professors meet together and decide to do more activities together from now on. From this point forward there is more cohesion and activities like weekly PL-related meetings.

At the beginning of this year, I start telling people that I wish I had more female friends, since I realize that there are many fewer women around me than before. My friend Neha Narula tells me to respond to a call for people interested in starting a graduate women's group and I meet Kay Furman, a PhD student in the Health Science Technologies program. Along with a couple of other graduate women we start Graduate Women at MIT. Such a group had never existed and our proposals are met with a fair amount of skepticism, more from students than from administrators. At this point I still don't have many friends, so I spent many evenings and weekends working on building the organization: recruiting, fundraising, inviting speakers, writing materials about why we need such a group, etc.

As part of my acquisition of more female friends I join a feminist discussion group, also invited by Neha. We get together about once a month for a dinner hosted in one of our homes. These discussions and my friendships with the women in the group shape many of my views over the next few years.

During this time, I look into acquiring more hobbies. I take some break-dancing classes at the Dance Complex but decide it's not my thing. I take up acrobatics (silks, rope, and static trapeze), for which I continue weekly classes on and off for about a year until I realize I am not serious enough about it (and travel far too much) to make continuing worthwhile.

Summer 2010. I intern with Nikhil Swamy and Juan Chen at Microsoft Research Redmond. They have a dependently typed language called Fine for verifying security properties. I ask to intern with them because I want to take my work in this direction. I spend most of my time working on a tool for stuffing proofs into bytecode and taking them back out. I learn a lot, but the proofs are too big and we never quite manage to get it to work. I also participate in many meetings and calls about the F* language, which is like Fine but supports proof erasure. I learn a lot about dependent type systems and security concerns.

I live in Seattle this summer, in a studio apartment on Capitol Hill. For traffic and productivity reasons, I take the 7am bus to work and stay at work until 7pm. There is a heated vinyasa yoga studio I go to after work most days. I love having a routine and Seattle in the summer and the energy of Capitol Hill at night, so I am very happy with my life. This summer, thanks to Chris's nomination, I also participate in the Lindau Meeting of Nobel Laureates, where Nobel laureates give talks about science, the research process, and the future of the world. I make friends with scientists from around the world and find the talks inspiring.

Chris and I have a paper on Verve that appears at PLDI. We win Best Paper Award. I am too young to realize that not all projects go this smoothly and not all papers are this good, so I am confused. Since this is the first paper I ever published, this becomes my new standard for paper goodness. It takes me years to realize that it is possible to do much less and still publish a paper.

2010-2011 (Year Three). Now I am done with classes, have no more routine, and have to return to working on my project I am not that excited about, so I am less happy than before. I have this OCaml interpreter implementation for proto-Jeeves that I have been working on. To make things scale, I implement a C backend and a garbage collector. It integrates with the Yices constraints solver. It is hard to do anything with this interpreter because it requires a lot of work to experiment with language features. I do not feel much hope about the project. I shop around for other projects. I consider doing an internship in hardware synthesis with David Bacon at IBM Research, but after talking to some people decide I should not switch to this area.

In the fall, I TA a new program analysis course taught by Arvind, Martin, and Armando. The professors are excited for me to help revamp the course. There are four course staff total and six registered students. Most of the work involves doing the problem sets to make sure they work. It takes a surprisingly amount of time to grade six assignments, since each assignment is likely to make different design decisions. I hold weekly recitation where three people attend. All three students are strong, so most of the time we talk about fun PL topics.

To take a break after going straight from turning in my masters thesis to doing a internship, I treat myself by taking a two-week vacation. I take a road trip through Romania (and also parts of Serbia and Hungary) with my friend Florian who I met at some conferences. My friend Kate, who I met through the feminist discussion group and who has moved to Europe for an Erasmus masters program, meets us in Vienna, where Florian is studying.

In February I attend my first workshop at Dagstuhl, a German castle that hosts focused computer science workshops. I have involved discussions many computer scientists working in similar areas. I find it excitiyng. Afterward I meet my friend Kate for a weekend in Brussels and we have adventures as usual.

This year, I also start to make more friends. I become good friends with my "cohort," the other students interested in programming languages and software engineering who I started with. I also become friends with many female scientists. I never had many female scientist friends before and this makes me happy because I feel much more understood.

Summer 2011. I decide to stay around MIT to focus on research. My groupmate and officemate Kuat Yessenov tells me it would be simple to implement my language as an embedded domain-specific language in Scala. Kuat makes a prototype implementation and begins to collaborate with me on the project. This changes everything. All of the sudden, the language has hope of becoming practical. A nice story about Jeeves emerges: it is a convenient and practical programming model that lets you factor out information flow policies. It seems natural and like the way to go--but formalization is not entirely straightforward and there are some interesting theoretical properties too. It is great to collaborate with Kuat, who is very smart. We submit a paper to POPL. We work hard, staying long nights in the office. I briefly become nocturnal in response to receiving feedback from my advisor in the evening and feeling compelled to make the changes before I sleep.

It rains a lot this summer and we both become sad. One day, Kuat leaves a fortune cookie fortune on my desk that says "It cannot rain every day."

2011-2012 (Year Four). Armando starts putting pressure on Kuat to return to his project so Kuat stops collaborating with me. I am now collaboratorless and still haven't published anything on this language, now called Jeeves, so I become more and more hopeless. A couple of my friends, Marek Olszewski and Michal Depa, leave school to do startups. Marek invites me to join him. I'm not ready yet, but I have significant FOMO (Fear Of Missing Out). I take a class about startups and become friends with Tiffany Kosolcharoen, then a student at Sloan. Tiffany and I spend hours together every week and she teaches me an immense amount about the startup world.

My friends begin to worry I will quit graduate school. My groupmate Rishabh Singh stops teasing me about my inferiority for the first time, looks at me seriously, and says, "Miss Yang! You cannot quit. You are an intellectual." Someone leaves a fortune cookie fortune on my desk that says "It does not take guts to quit." Sasa Misailovic, another one of my cohort, has an intervention lunch with me telling me that I like graduate school the most out of all of us, so if I quit then what does it mean for everyone else. I tell him everything is meaningless.

Our paper gets into POPL and everyone is relieved. I am relieved to confirm there is life after Verve. Armando is relieved for obvious reasons. My friends are relieved because they stop thinking I will quit graduate school.

During the spring I build a small conference management system using Jeeves, not because I want to but because Armando says it is important to build things to see what breaks. This takes a lot out of me because Jeeves doesn't really work yet and I previously knew little about building web applications. We run out of memory all the time and I have to wake up in the middle of the night to restart the server. For weeks after, my friends make fun of me by sending emails telling me my server is down. For weeks, Armando and I wake up with nightmares in the middle of the night that our server is down. During this process I also realize that in order for language-based solutions to work, we have to have a better story with interfacing with the database. I feel proud that I convince Armando this is an important direction of future work. I also concede that it is important to build things.

This spring I do some traveling. I win a Facebook Fellowship and travel to the Bay Area to give talks at Facebook, Google, and Berkeley. I attend another workshop at Dagstuhl and spend the weekend in Paris beforehand and meet my friend Kate in Barcelona after.

My social life becomes fantastic this year. I find the "party circuit" orbiting a nucleus of social Harvard and MIT graduate students. I meet many interesting and brilliant people.

Summer 2012. I intern at Facebook to gain "privacy street cred." I start in July because it's after the POPL deadline. The other interns starting at the same time are all Eastern European college boys. This becomes my friend group for the summer. I live in the city and commute to Menlo Park every day, staying on campus for 10-12 hours. I work hard, building a verifier for privacy policies using Haskell. I like the work but find it isolating because I'm the only person working on my project and it's not clear what I am allowed to talk about outside of work. I take daily walks with my friend Pieter Hooimeijer, who I knew from research and went to Facebook after his PhD. I work harder than I want to because of the potential high impact of this project: it is tied to a pre-launch project and if it launches well, this could be a really nice example of verification in production use at a large company. Armando flies out to Facebook at the end of the summer to discuss my project under NDA. I am so happy to see him.

2012-2013 (Year Five). I return to school but continue contracting for Facebook. I work on my verifier one day a week and fly out to the Bay Area every few weeks for a few days at a time to continue working on my project. I maintain two social lives, one in Cambridge and one in San Francisco. The bigger project I'm a part of gets cancelled around February, for political and not technical reasons. I feel very disappointed, especially because my verifier had been very close to being put into production. I also feel relieved, because I'm exhausted from having two jobs and two social lives. I make some small efforts to try to publish on what I built, but Armando is not excited and the team at Facebook has scattered. We file a patent.

The rest of my research is not satisfying this whole year. I work on extensions to Jeeves that Armando tells me are necessary for the work, but that I am not excited about. We work on integrity extensions to Jeeves that I don't think make sense. What I really want to do is figure out how to extend the Jeeves programming model to the database, but I can't work on this until after we finish this other stuff. I submit an uninspired paper to CAV. One of the reviews says, "I cannot believe there are four authors on this paper and so many typos." I am not excited about anything by the end of this year.

In the spring, I take a class in the Media Lab with Ethan Zuckerman about new media. Half the students are technologists and half are mid-career journalists at Harvard and MIT on various fellowships. This gets me thinking much more about media, online communication, and civic participation.

Summer 2013. I stay around school to work on the integrity story for Jeeves, which I continue to not believe in. Armando tells me it is time for me to graduate and go on the academic job market. I tell him the academic job market is a big commitment because 1) I don't know that working alone forever is the best way to achieve the things I want to achieve and 2) the work/life balance doesn't seem great. He says 1) is a result of how he chose to run his group, but if I don't want to put in the work of being a professor then I should wrap up my work as quickly as possible and move on with my life. We are both sad.

2013-2014 (Year Six). I spend a month having in-person and Skype meetings with people about other career paths, for instance working at LogicBlox or Jane Street Capital. After my mother reminds me I don't have to do computer science anymore, I consider becoming a writer or an artisan specializing in linocut block prints. Rocky, who works on my floor, tells me that usually everyone on the seventh floor can hear when I laugh, but he has not heard me laugh for six months.

During this time, I also visit Andrey Rybalchenko and Byron Cook at Microsoft Research Cambridge. I enjoy myself immensely and have many stimulating meetings and become exposed to the field of executable biology. (Later I find out this was a secret interview.) I determine that nothing else is as exciting to me and even though academia is a big commitment it seems worth it. I tell Armando I'm ready to go on the job market and he says he already told everyone I wasn't anymore and plus it's better for me to wait. I am more than fine with this, since a big issue had been that I don't want to leave yet.

After I determine that one of my main issues with my project is that nobody uses Scala for prototyping web apps, I decide to switch to Python. Armando lets me take on an MEng (masters) student to convert our implementation to Python. I find Travis Hance. He finishes the conversion in the fall and we spend all spring collaborating on building a web framework based on Jeeves. I am really excited to finally be thinking about the problem of extending the programming model to the database, especially as this is something I had wanted to do for two years. I love having Travis as a collaborator. We decide to submit to OSDI. During the weeks before OSDI, we work together for 10-12 hours a day. I introduce him to many Kendall Square restaurants. During our breaks, we create Haskell Ryan Gosling.

During this time I also decide to take my interest in writing more seriously. The previous year I had come across a former problem set partner Carl Schoonover on Business Insider's list of sexiest scientists in the world and discovered he had been achieving my science writing dreams: writing a book, speaking about science, and even starting a group called NeuWrite to promote collaborations between scientists and science writers. I had brought him to MIT to speak, which led to two things: 1) me assembling an RSVP list of Harvard and MIT graduate students interested in science writing and 2) Carl deciding I was a good person to take over the NeuWrite Boston group, as group membership was shrinking and the current leaders were moving away. One of the journalists from my new media class introduces me to science writer Amanda Gefter and we take over the group. We build a new group from the event RSVP list and Amanda's writer friends. I spend much of my free time 2014-2015 building the group, thinking about writing, and writing. I start publishing not only on my own blogs but also in more public venues. A couple of my Quora answers get published on Forbes and my pieces for The Muse get chosen to run in Forbes and Newsweek.

Summer 2014. PLDI is in Edinburgh at the beginning of June and my friend is getting married in Croatia at the end of June. Since Armando is paying for the trans-Atlantic flights, I scheme to remain in Europe for the month. I set up another visit to Microsoft Research Cambridge and a visit to the Max Planck Institute in Kaiserslautern, Germany. I get good feedback on my work during both visits. I then spend a long weekend in Berlin visiting my friend Kate and a week wandering around various parts of Croatia for vacation purposes. I see Oslo for a day on the way back. I find the entire trip relaxing but find it difficult to return to normal life after.

Our OSDI submission gets rejected, so I spend the rest of the summer cleaning up the paper and doing more work to submit to PLDI. I feel an incredible amount of angst about my uncertain future as I prepare for the job market. I spend one day a week doing extreme exercise, cycling 50+ miles or running 11+ miles, to obliterate all thoughts. For various reasons I also spend a lot of weekends in New York and make more friends with people working on data and journalism.

2014-2015 (Year Seven). I spend most of the fall preparing a submission about the Jeeves-based web framework to PLDI. I also work on my job applications. I go on the job market, interview, etc. I get some offers, accept a position at Carnegie Mellon University, and defer a year to collect myself before beginning and also to explore my interest in applying programming languages and biological modeling.

To keep myself from thinking about my uncertain future all the time, I start a cybersecurity accelerator, Cybersecurity Factory, with my friend Frank Wang, with the goal of helping research-minded people start companies. After Frank and I ran out of research things to talk about the natural next step was to develop a project of mutual interest and we're both interested pushing academic research into the world.

I don't have much of a social life this year. For a couple of my interviews I stay with friends beforehand and they listen to my talks. My friends Alison and Tobi make sure to force me out of my house for non-work reasons every once in a while. Every few weeks my friend Angela comes over and cooks me dinner. I remain grateful for my friends.

Summer 2015. I spend the first part of the summer working on writing up the Jeeves-based web framework work, which has continued to be rejected from every conference. I get the framework to be much faster and work with my collaborators on a cleaner semantics. We submit to POPL and then I work on my thesis. The introduction and related work take much longer than expected, maybe about a month.

During this time I spend maybe about a third of my time working on the accelerator and doing public communication about cybersecurity. We accepted two teams for our Cybersecurity Factory pilot program and we work closely with them to make sure they are getting the support they need. I spend a good amount of time on the phone with media people getting press for our program. I write an op-ed for the MIT Tech Review.

Somewhere in there I take a 36-hour trip to Singapore to give a talk at a data privacy workshop Saman is organizing. Saman gets the people to fly me business class so I can sleep in transit. It is my first time flying business class. I am confused about what to do with such frequent deliveries of hot towels to my seat.

I don't have much of a social life during this time either. Several people text me "you have to eat sometime" after I repeatedly decline meal invitations.

2015-2016. I defend! I take two weeks off and then start a postdoc at Harvard Medical School. I slowly ease myself back into having hobbies and seeing friends. Our POPL submission gets rejected and I finally spend a lot of time thinking about how to sell the work (rather than how to do the work). I learn that despite pressures to make the work better until the last minute, I need to fight to spend a long time on the writing, especially if the proposed idea is outside of the mainstream. A nice story emerges about a new and practical web programming model that allows programmers to factor out information flow policies across the multiple runtimes of the application and database. Our paper finally gets accepted at PLDI. I feel relieved to publish the final part of my thesis. And here we are now.

For those wondering what to take away, it is important to note that every PhD experience is unique influenced by factors such as the advisor relationship, institutional requirements, the funding situation (both professional and personal), and the academic and social environments. I am privileged to have had a relatively supportive environment and few additional pressures. My experience is most likely to generalize for other computer science PhD students at top schools, where the funding situation tends to be good and advisors tend to give students a fair amount of freedom.

You may also be interested in other posts I've written about my PhD:
--

Addenda:
  • You may be interested in reading the comment thread for this post on Hacker News.
  • My friend and former groupmate Nadia pointed out that during 2014-2015, I claim to have no social life "but we went to so many cool parties." It's true. Over the course of the year I did go to some cool parties.
  • My friend Michael, who I once dated, said I should mention the existence of romantic relationships during the PhD to provide a more complete picture of my life. Chris Martens also says in her blog post about her PhD that she is frustrated when people don't discuss the interplay between romantic partnerships and work. Over the course of my PhD I was in a few committed romantic relationships, mostly with other academics, mostly in other fields. Some of the time I was in relationships coincided with periods of extreme work. This was difficult to balance, but other academics tend to understand. I was never in a relationship where someone else was routinely doing any portion of the domestic labor. I was also single for a significant portion of my PhD.
  • Berkeley PhD student Stephen Tu has begun compiling a list of PhD reflection here.