Saturday, December 29, 2012

Resolutions and Goals for 2013

It has come time for me to publicly announce my goals for 2013 in order to shame myself into following through.

I have the following resolutions.
  1. Only acquire things I will use.  Right now my "minimalism" is sustained by high object turnover: I give away things quickly to balance out acquiring them quickly.  To work towards true minimalism I will instate a two-week decision period before acquiring non-essential items.
  2. Get rid of things I do not use.  I would like to keep giving away (and occasionally selling) objects that I have not demonstrated need for in the past year.
  3. Only take on commitments I want and can handle.  I am happier and more productive when I want to be doing what I am doing and I have time to do a good job.  I will instate a one-day decision period for new commitments.
  4. Eat well.  I would like to take more pleasure in the process of eating and focus on quality rather than quantity.  I will make time for eating in my schedule and plan ahead so I can have food that is both good and good for me.
  5. Meditate.  In working towards meditating daily, in 2013 I aim to do it at least once a week. 

In 2013 I plan to keep pursuing my two main interests: 1) empowering people to be more productive through their programming tools and 2) empowering women to have the same opportunities as anyone else.

Towards improving programming tools, I have some specific goals regarding Jeeves, the programming language I have been developing for automatically enforcing privacy policies, and demonstrating its feasibility as part of a framework.  I would also like to continue spreading the gospel of statically-typed functional programming languages.  I would like to become more familiar with Scala and continue my Scala evangelism.

Towards empowering women, I am concluding my tenure as an Executive Board member of Graduate Women at MIT and would like to think about what other change I want to see.  I want to reach out to more young girls--I would love to see a framework that allows young girls to be pen pals with young women, their "future selves."  I also want to give people intellectual ammunition to defend their feminist views--for instance, in light of the Delhi gang rape death.  I will think about how this translates into actionable items for me.

Happy New Year, friends.  In the upcoming year, please feel free to discuss these goals with me to make sure I have not forgotten about them!

Tuesday, December 25, 2012

A Belated Brief on Barcelona

Notes from a more decadent time...

Itinerary: Barcelona with Kate, April 2012.  Photos here.

Day 1.  Arrive in Barcelona by plane close to midnight on a Friday evening.  Take the bus; take the train.  Arrive at train stop and realize map is insufficient for further direction. Take a cab but driver also gets confused.  Follow tourists on the street until I find the hostel.  Reunite with Kate, realize our neighborhood has only other tourists, and wander the streets dejectedly observing the foreign vendors of street beer and samosas.

Day 2.  Get up around 10, go to La Boqueria market, and day-drink in Montjuic amidst numerous fountains and the "most cactus garden." Descend Montjuic just in time for the magical fountain show.  Try to go to beach clubs but our friend Adnan is wearing Those Fucking Shoes.  Adnan redeems himself by dancing his way into a private function.  "Are you with that guy?  He is strange.  Here is a drink."

Day 3.  Get up close to noon, procrastinate going to the Picasso Museum, and eat a delicious vegetarian meal in El Ravel (at Sesamo*).

Day 4.  Get up at noon.  Walk past the Sagrada Familia; line is too long.  Walk past more Gaudi; admission is too expensive.  Walk around Parc Guell; drink more wine.  Meet up with a friend's friend who shows us a "real Barcelona experience."  We get Middle Eastern food; we go to some bars; we go to a club (Apolo).  At one of the bars, the friend's friend engages in a series of arm-wrestling matches with strangers.  Kate has a video somewhere.

Day 5.  Get up at noon.  Take the train to Montserrat to see the Benedictine monastery from the 15th century.  During each of my trips with Kate, there is a moment when we clutch each other in amazement.  This happened here.

Day 6.  Kate catches her flight.  While walking alone in the Miro park, I become victim to an elaborate con involving photography, cocaine and heroine, and policemen real and fake.  I can send you the definitive story via e-mail.

Out of consideration for the travelling pleasure of our future selves**, Kate and I have saved some sights for future visits.  Among these are the inside of the Sagrada Familia and the coastal village of Caldaques, home to Dali.


* Every meal was amazing.  Sesamo happened to be the one place where I took a card and so remembered the name.
** Not laziness.

Monday, December 24, 2012

Zen Living by the Rules of Soyen Shaku

In thinking about what I want out of 2013, I have become inspired by the rules of Soyen Shaku, the first Zen teacher to come to America.  Here they are, from Zen Flesh Zen Bones:

In the morning before dressing, light incense and meditate.

Retire at a regular hour.  Partake of food at regular intervals.  Eat with moderation and never to the point of satisfaction.

Receive a guest with the same attitude you have when alone.  When alone, maintain the same attitude you have in receiving guests.

Watch what you say, and whatever you say, practice it.

When an opportunity comes do not pass it by, yet always think twice before acting.

Do not regret the past.  Look to the future.

Have the fearless attitude of a hero and the loving heart of a child.

Upon retiring, sleep as though you have entered your last sleep.  Upon awakening, leave your bed behind instantly as if you had cast away a pair of old shoes.

Friday, December 21, 2012

On the Importance of Seemingly Useless Work

When I first started graduate school, an older student told me about the importance of maintaining a feeling of incremental progress. Even if you are doing seemingly useless work. This may be the best advice I ever received.

During grad school, I have found this "feeling of progress" at a macro level mostly in the non-academic parts of my life: in co-founding and seeing the growth of Graduate Women at MIT, in becoming a better, yogi, in developing deeper friendships, and in various channels of personal development.  Doing engineering on other people's research ideas during internship was also helpful.  Though it probably would have been nice to have more incremental results and feedback on my Ph.D. project (the first paper of which took three years to be published), this other progress gave me comfort that I had not been wasting my life.

Feeling progress is also powerful on a micro, day-to-day level.  The structured procrastination approach is a fantastic way of maintaining a feeling of progress.  (This essay quotes this other humorous essay by Robert Benchley here.)  The main idea is to allow yourself to do less urgent but also necessary tasks while procrastinating the task at hand: for instance, playing ping-pong with undergraduates (as part of attending to Resident Fellow duties) rather than finishing an essay.  Allowing yourself to do, and even prioritize, those tasks can make you more productive.

This all justifies my philosophy on work/life balance* (which is remarkably similar to my philosophy on eating): work when I want on what I want to work on**.  A lot of projects/tasks, personal and professional, fall into this category of "work."  Although I assign higher importance given to professional tasks and tasks with imminent deadlines, it is important to have non-urgent, non-professional items.  I have also begun assigning higher importance to tasks that easily yield high levels of progress-feeling: for instance, refactoring code and running errands.  Doing something because I want to do it, rather than because I feel like I need to, requires far less energy and discipline and also has a higher work-to-progress-feeling ratio.  (If something gets close enough to a deadline, however, I often suddenly desire very much to do it...)  This philosophy probably presupposes that I have a deep inner drive to work.  (Similar to my deep inner drive to eat.)

Progress is not so much a state of achievement but a state of mind.  I have to come to value and seek the feeling of progress as much as I do actual progress.  Not sure yet how much it is improving my output level, but it is certainly making me feel happier and more productive.

* We all know that the point of my blog is to validate my life choices.
** From a restricted set of permitted items.

Saturday, December 15, 2012

Yes, I am a Minimalist.

My friends laugh at my “minimalism.” And I do not blame them.

I like things. When I was younger, I aspired to own a Nalgene in every color. I have lost count of how many computers I have. Until recently, teenage girls loved using my bathroom to experiment with all the beauty products. After seeing how much I spent on a pair of (beautiful! white! leather!) gloves, a friend once asked if I was going through some kind of crisis and wanted to talk about it.

Having things has always made me feel safe. You never know when you will run out of shampoo or need to use a second mandolin for julienning a lot of carrots in parallel or get invited to an event where not only do you have to wear a fascinator, but it has to be pink. Better to be ready.

Then three important things happened in 2010. First, substantial amounts of water leaked from our roof through our ceiling over the course of months. Second, I made friends with a minimalist. He lived in Belgium and had only one spoon in his apartment that we all shared to eat speculoos. Third, I moved out of that leaky apartment.

During this year, I learned that not only are many material possessions unnecessary, but they can also be burdensome. And so I developed the goal to actively love and regularly use all of my possessions*. And according to the minimalist blogs, the concept of minimalism has become sufficiently trendy and dilute that this definition is acceptable.

Working towards this goal has involved thinking about how to get more usability out of things. For clothing, for instance, I learned the rule that any new article of clothing should be appropriate for at least three different kinds of occasions. Versatility is the key: a few things can go a long way.

I have also been working on letting go. I acquire many things thinking that I might need them. I have gotten better at giving them away. If I have not used something for a year, I force myself to get rid of it. In the last months, I have gotten rid of multiple travel pillows, a carpeted cat toy, a second sleeping bag, a Zune, bags of clothing, and numerous books.

And, of course, I have been thinking about what is necessary. There are things I want. I want art in my living space. I want self-expression through my clothing and accessories. I want two pillows when I sleep. I want variety to my meals. Perhaps that is all. Perhaps I do not even need these.

I have been making progress. I do not have a TV. I have fewer clothes and books than I used to. I pack for most trips into carry-on luggage. Most of my cooking involves a single knife, pot, and pan.

I would love to one day live in a vast empty apartment with only a few possessions. I may realize that this will not make me happy, but I hope to never again get caught up in the acquisition of more and more things. And this is why I call myself a minimalist.

* I have also been thinking about minimalism with respect to commitments and relationships but I will not include discussion of that in this post.

Sunday, December 09, 2012

Treat Yo Self: Clean Up Your Code

A couple years ago, I discovered what I thought was the shortcut to building research systems.  Forget good software engineering practice!  Forget functional abstraction!  Copy-and-paste code all over the place; modify it to fit your needs.  Thinking before coding?  So college.  After all, premature optimization is the root of all evil.

In the beginning, this worked out well.  In my first year, even my advisor told me he was impressed with how quickly I got things working.  I saw in other research code the same patterns that I was learning to adopt: monstrous tangles of functionality with scant documentation.  I have found the secret to research productivity, I thought.

A couple deadlines later, I began to feel the consequences of my actions.  Pre-deadline, systems would begin to fall apart: a patch here revealed another hole there.  Post-deadline I had no desire to go back to disgusting soups of one-off functions, barely usable in the first place and certainly not reusable.  Much time was spent either avoiding my code or writing replacement code from scratch.

In other researchers, I observed that the few who had designed their systems well were able to make quick bug fixes and extensions.  For everyone else, either their code bit-rotted in obscurity or they were a slave to maintaining their systems for barely-satisfied users.  During paper deadlines, those who had built up good infrastructure could build comfortably on previous work while others ran around fighting fires and despairing.

During the course of grad school, my relationship with my code has become increasingly important.  Clean, modular, and well-documented code (with tests!) is not only less likely to have bugs but will be useful for longer.  Clean code provides a solid foundation for you and potentially other researchers.  Modular code makes it easier to reuse parts of your code. Also, knowing exactly what your code does just feels good.

On his blog, Harvard professor Michael Mitzenmacher advises graduate students to take a day every now and then to find better tools: for organizing papers read, for recording ideas and progress, etc.  Rewriting and refactoring code has become an important part of these activities for me.  Not only is refactoring useful, but it is also a relatively low-effort way to achieve a feeling of progress*.  For me, refactoring has become a treat for working hard.

Don't tell too many people now, but I think this is the real secret to research productivity.

* The importance of the feeling of progress is a topic worthy of its own blog post.

Sunday, December 02, 2012

Living on the Edge of Existence

Reading Jack Kerouac's Dharma Bums made me wonder whether my life should be more exciting.  While exploring this, I had the following conversation.

Martin: You are bored because you are not living on the edge of existence. Why don't you go travel around India with no money?
Me: I might die.
Martin: Exactly. A comfortable, safe life is boring.

Martin then tried to convince me that bourgeois comfort and safety are the enemies of an exciting life.  I started searching for plane tickets to dangerous destinations.  Fortunately, I had the next conversation.

Me: I'm trying to live on the edge of existence.
Rishabh: The thing is, I already do that. With deadlines.
Rishabh: Yesterday, I almost died.

This made me realize that different people have wildly different perceptions of what it means to live extremely.  In Dharma Bums, while the Kerouac character Ray Smith binge drinks and is essentially homeless as he hitchhikes across the country, the Gary Snyder character Japhy Ryder leads an ascetic existence of writing and scholarship.  When Japhy tells Ray about The Book of Tea, Ray says, "Those guys got high off nothing, hey?"

And so I found in Dharma Bums the answer to my question.  Japhy Ryder's life is unquestionality extreme: he abstains from material luxuries and enjoys spending time on the edge of civilization.  But Japhy carefully prepares enough food and sleeping bags for their trip into the wilderness.  But Japhy makes sure they have enough time to get where they are going before dark.  And Japhy lives fully and enjoys beauty as much as anyone: he is lucky to be able to get "high off nothing."

To live on the edge of existence, one does not necessarily need to abandon absolute comfort and safety. It is certainly easier if what is around you is new, interesting, or a life-or-death situation. But over-approximating the boundaries of existence is just one way to live on the edge. Through mindfulness and conscious consumption, it is possible to find the edge with greater ease and accuracy. Challenging oneself and demanding precision can be as thrilling as fighting for survival. This approach certainly seems more sustainable: while Jack Kerouac died young of alcoholism, Gary Snyder is still writing today.

A comfortable and safe life is boring, but comfort and safety are relative and personal. Introspection and thoughtfulness could go further towards living fully than impulse-buying tickets to somebody else's adventure.

Sunday, November 25, 2012

On Productivity in Grad School

I was recently invited to be on a panel about being productive in graduate school.  This invitation surprised and flattered me.  I do not consider myself to be particularly productive as a graduate student: there are graduate students who have far higher-volume research output and/or greater publication count.  I also don't follow the productivity rules: I don't always remember to track my progress; I don't have a great way of organizing papers I read; I often work on what most catches my attention.  And I spend a good deal of time doing things that are not my research.

That said, I seem to be getting by decently well.  I am happy with the work I have been doing and my papers are in good venues.  When I am in a serious thinking or building mode, itemized goals are not always necessary.  Sure, being more organized about papers would help, but for many topics I am interested in I can give you a short bibliography off the top of my head.  High-level goals usually keep me focused and deadlines can make certain tasks seem pretty damn interesting.  Outside of research, I co-founded Graduate Women at MIT in 2009; we now have over 50 planning committee members running programs serving our over 1200 mailing list members.  This has taught me enormously useful lessons about collaborating with peers, managing people, and managing my time.  The time I spend traveling, doing yoga, and enjoying life with friends also contributes to my happiness and creativity.

Reflecting upon this, I realized that productivity looks different for everyone.  Unlike many people I consider productive, I find it difficult to make myself work.  If I want to work, nothing can stop me; if I don't want to work, then I am better off waiting until I want to work.  To want to work, I need to feel like I am working on something meaningful: technically interesting to me and potentially impactful to the world.  I also refuse to sacrifice a certain quality of life in favor of work: if some end goal requires me to work harder than I would like, then that goal is not for me.

For me, learning how to be productive was about understanding how to harness my motivation and focus it towards productive endeavors.  Below I elaborate on my "top five" strategies that I was asked to discuss at the panel.
  1. Figure out what drives you.  When I am uninspired, I can spend weeks pretty much running in place.  When I am inspired, it is scary what I can do in even one hour.  If you have experienced this, you will agree that the difference between inspired effort and uninspired effort is immense.  Some people are driven by a desire to understand something, others are driven by a desire to create something, and yet others are driven by more abstract goals: a desire to be influential; a desire to be "successful."  Many people are driven by imminent deadlines.  Knowing what you are going after and why you are doing it will make it easier to find those moments.
  2. Stay away from rat races.  Being in a position where you are constantly measuring yourself up to other people is exhausting and, in my opinion, inefficient.  Find your niche; make yourself irreplaceable.  This will give you the freedom to come up with ideas and work at a more leisurely pace.  Discover what topics and groups of people you have the most mutual "chemistry" with.  Figure out what you have that nobody else has--this can be a skill set or a deep interest in some topic.
  3. Learn the rules of the game.  Invest time in figuring out what matters, what doesn't matter, and the relative mileage about different things you can do to achieve your goals.  For instance, I have also been told that your top three papers matter more than how many papers you have.  I have also become increasingly aware of the importance of publicizing work via talks and personal meetings.  I now spend up to one month preparing a talk; if you told me as a young graduate student I would later be doing this, I would have found it preposterous. 
  4. Optimize your environment.  Take time to configure your programming environment, your bibliography collection tools, your way of recording ideas/research notes, etc.  Surround yourself with smart and productive people who motivate you to do good work.  Know the people in your network--a quick e-mail to an expert in a subarea can quickly point you to the most relevant reference materials, saving you days of paper-reading.  Similarly, being in an environment where you are discussing your ideas with peers you respect will make it easier to do innovative research.
  5. Take care of your body and mind.  Learn how to hack your body; one hour of work when you are on top of your game can be equivalent to hours of less high-quality work.  Eating, exercising, sleeping, taking breaks, spending time with friends, and meditating are the solutions to most problems.
A caveat is that this advice is best-suited for those similar to me: workaholics who prefer doing to thinking.  And of course, who knows how good this advice is, as I have yet to really prove myself.  As my own productivity is a work in progress, I welcome what advice you may have.

Related reading:  For those of you who struggle with traditional productivity advice, Structured Procrastination is a nice essay.

Sunday, November 18, 2012

Should You Learn Scala?

It depends on what you want to accomplish*, but the answer is probably yes.

By way of background, Scala is a programming language originally developed at the Swiss university EPFL in an attempt to apply recent innovations in programming languages research to a language that can gain mainstream traction.  Researchers keep coming up with clever ways to it easier for programmers to write correct code and to write less code, but much of the time only academic programmers benefit because these features are implemented in boutique languages (for instance, OCaml and Haskell) that are not in widespread use in industry or open source projects.

On its own, without considering features such a libraries and interoperability, Scala is a nice language.  It is "multi-paradigm," supporting object-oriented programming and functional programming idioms.  Scala allows you to define types associated with both data attributes (with classes behaving like C++/Java classes) and behavior attributes (with traits corresponding to Java interfaces).  In the way of functional programming idioms, Scala functions are first-class (which means you can pass them around as values) and Scala also supports anonymous functions and currying (partial application of multi-argument functions).  This combination of features make it possible to write Scala programs that are quite concise and elegant**.

Scala's libraries and interoperability make it a force to be reckoned with.  Scala runs on the Java Virtual Machine (JVM) and can interoperate nicely with Java code.  This means that you can use Java libraries directly from Scala code.  It is also possible to call Scala code from Java (see here).  There is a nice post about how you can take advantage of Scala parser combinators, which use higher-order functions to help you write concise parsers, to write parsers for systems otherwise written in Java.  Not only can you do all of the things in Scala, you can easily write part of your program in Scala and the rest in Java.  (This is huge for mainstream adoption potential because so much of the world's code is written in Java and so many developers are taught in school!)

Learning Scala will make you more marketable.  Many companies are using Scala these days, including LinkedIn, FourSquare, Twitter, and Quora.  The founders of Quora spent a couple of months building a Scala web framework in order to use Scala.  Martin Odersky, the man behind Scala, is now behind the startup Typesafe for supporting Scala development.  There are some nice Scala web frameworks out there, including Lift and Play.  Scala is also gaining traction in the research community.  Many more people cared about our research on the Jeeves programming language for automatically enforcing privacy policies once we implemented it as an embedded domain-specific language in Scala.

Scala is also relatively easy to learn, especially compared to other strongly statically typed languages (OCaml; Haskell).  I have previously said that Python is the most marketable language for beginners, but I am beginning to change my mind.  Like Python, Scala has clean syntax, nice libraries, good online documentation, and lots of people in industry using it.  Unlike Python, Scala also has a static type system that can prevent you from doing bad things (whereas in Python the bad things just happen when you run the program).

If you are teaching a course using Java, you may want to consider switching to Scala.  I have recently had positive experiences teaching Scala to MIT undergraduates during recitation in 6.005, the software construction course taught primarily in Java.  During three recitations I introduced how to use functional idioms, how to build an evaluator for a simple language by using data types and pattern matching, and how to build an incredibly concise parser for the tiny language using parser combinators.  You may find my notes here, along with the accompanying code examples.

If you are considering the merits of Scala over other languages, you may also be interested in reading my Quora responses to the questions "What makes a good programming language?" and What are the advantages of Scala over C++ and Haskell?.

* If you are building scientific applications, a language with more math support (Matlab; Mathematica; R) may be superior.  If you just want to do a weekend project writing a Craigslist scraper, Python may be better because it is easier to learn and has great web scraping libraries.
** Okay, Scala programs are not as beautiful as OCaml or Haskell (I have another post on ML vs. Haskell) but it's so much more practical in many ways.

Sunday, November 11, 2012

Simple Advice for Being Effective in School

As a result of hijacking a few recitations in MIT's 6.005: Software Construction course to evangelize Scala, I have come into contact with numerous undergraduates.  Engaging with these students, I have realized how much more effective I could have been during college were I less focused on my work and more focused on things like showing up on time.  I have come up with the following list of things that go a surprisingly long way towards academic success.

  1. Show up.  It goes without saying that you miss a lot of things if you don't show up.  There is also a two-way thing.  If you don't get face time with an instructor, it does not matter how good you are.  They are not going to know who you are, they will probably feel less motivated to answer your questions, and they will probably not write you a recommendation letter.  (I am not important enough to have written many recommendation letters so I am extrapolating a bit on the last one.)
  2. Be on time.  During the first few minutes of a lecture/recitation/talk, many important things happen: there might be administrative announcements; there might be high-level motivation; there might be contextualizing facts.  If you show up late, it is more difficult to motivate yourself to pay attention and to follow what is going on.  You will often miss other things when you spend the whole time trying to catch up.
  3. Stay awake.  The more you are able to absorb directly from the person who is trying to convey information to you, the less unnecessary self-teaching and work you will have to do later.  If you are not able to stay awake in lecture, hack your body (get more sleep, drink more coffee, move your body before lecture) until you learn how to stay awake.
  4. Be present.  Focus on being in the classroom rather than surfing the web, doing other homework, or zoning out.  Paying attention, not just to the lecture/exercise but also to other students' responses, can save a lot of work.  I have noticed that students do a fair amount of unnecessary work because they did not listen to either verbal or written instructions or because they missed the answer to another student's clarifying question.  Getting enough sleep helps a lot.
  5. If in doubt, ask.  If you don't understand something, it could probably be explained to you better, either by the instructor or by another student.  Asking makes it more likely that you can get this explanation.  Also, instructors like to see effort.
  6. Be curious.  It is great to ask "what if" and "why" questions.  Instructors love this and they will remember you for it, as long as you are not being obnoxious.
  7. Find the motivation.  Knowing why you (personally) should learn the material will help you with 1-6.  Do not be afraid to ask the instructor what the current topics are good for in the real world and what mastering the current content can do for you.
  8. Don't be lazy.  Read instructions.  For programming classes: look up syntax and try things out with the compiler/interpreter.  Your TA might like to be there for you, but you are better off trying things on your own.  You will not always have a TA in the real world.
  9. Be nice.  How smart you are often matters less than how nice you are.  For instance, the instructor will be much more likely to answer your questions thoroughly if you are nice.  
  10. Be a commitment minimalist.  If you have so many classes and extracurricular activities that you are not able to accomplish 1-9, cut down.  Many people have told me that they would have gotten a superior college education had they had done less and focused on it more.
In summary: school is often not about how smart you are, but about how much you are participating as an engaged human being.

Saturday, October 27, 2012

How to Give a Talk Where I Stay Awake

I fall asleep during lectures. I have even fallen asleep during one-on-one meetings. While I am not proud of my poor attention span, it has made me think about what makes a speaker compelling. Here are some actionable items from my observations.

Develop rapport with your audience. If your audience can identify with you as a human being, they will have an easier time listening to you. There are many ways to establish rapport: for instance, by making eye contact, by making jokes, and by identifying things you have in common with the audience. Anecdotes--especially those from your struggle in coming up with the solution--are great. Treat the audience as potential supporters rather than potential detractors. Avoid being defensive.

Address your audience’s interests. In How to Win Friends and Influence People, Dale Carnegie says you should prioritize the other person’s desires and interests in conversation. For instance, the standard advice for technical talks is motivate the talk with respect to the questions the audience is interested in. There are also other dimensions of audience interest. For instance, some audiences may be interested in having everyone understanding all parts of a talk, whereas others may prefer talks with an obscure section that only a few experts understand. The interests need not be relevant to the topic at hand: for instance, internet kittens in addition to operating systems.

At least pretend you are having a two-way conversation. Speak at a reasonable pace.  Make eye contact.  Pause before and after the important points to give the audience time to process. The most engaging talks I have seen involve the audience without derailing the talk. This is done through asking questions the audience already knows, asking the audience to solve small problems, or asking the audience for questions. Strategically injecting opportunities for audience questions is the most lightweight way of achieving this. Skilled speakers may even moderate some amount of discussion.

Keep things interesting. Give a talk you would want to attend. Entertain. Tell a good story. Make slides that someone would want to look at (as little text as possible, with text as large possible). Make a cool interactive demo. Be outrageous.

Convey passion. If even you do not feel strongly, why should we care? Show this by putting energy into your speaking and/or by saying why you find something interesting.

In summary: focus on what the audience wants to hear rather than what you want to say. This is easier to achieve if you are comfortable with what you want to say. Prepare well. It is not uncommon for among my peers to run through a 20-minute talk at least five times. Being comfortable with your talk allows you to focus on establishing a connection with the audience and paying attention to their needs.

I hope to take some of this advice in my upcoming lectures and talks. Perhaps then I will not have to resort to throwing candy at those who have fallen asleep.

Monday, October 22, 2012

FAQ: Applying to Graduate School for Computer Science

Over the years, I have gotten various e-mails asking me about what it is like to be a graduate student at MIT and how to apply.  I have compiled this list of frequently asked questions.

--

Q: What is the best school for studying computer science in the United States?  Where should I apply?
A: The top-ranked schools are MIT, Carnegie Mellon, Stanford, and Berkeley but the best school for you depends on many factors, including the area(s) you are interested in, the professor(s) you would work with, the size of the school, the size of the department, the location of the school, etc.  I would recommend applying to all schools you may be interested in and then talking to potential professors and their groups once you are admitted.

My personal notes from visit weekends at MIT, Carnegie Mellon, Stanford, Berkeley, University of Pennsylvania, and University of Washington can be found here.

--

Q: Can you tell me about the work in research group X?
A: The best way before applying to get a sense of what is current in group X is to look at the websites of the professors and  the graduate students.  The group itself may also have a website.  After you are admitted, you will have plenty of opportunity to talk with professors and students to determine what is the best fit, either through the visit weekend or over the phone.

--

Q: How much work is the Computer Science Ph.D. program at MIT?
A: The course requirements tend to be lighter than other Ph.D. programs: I had four required courses and two additional for a non-CS minor.  (They may be changing this.)  The focus is on your research: as long as your advisor thinks you are doing good work and a couple of other professors can confirm this, there is not too much bureaucracy to deal with.

As for research, you are technically expected to do at least 20 hours of work for your advisor and 20 hours for coursework/your own interests.  I would say the average student should expect to work 40-60 hours a week, depending on how well they use their time and how demanding their advisor is.  The number of expected hours varies by student and by group.  I work on average 40 hours a week if there is no deadline, 50 hours a week the month before a deadline, and 60 hours right before a deadline.  I would imagine the amount of work expected of MIT students is comparable to that at other top computer science Ph.D. programs.

My blog posts Reasons to Pursue a Ph.D. and The Life of an Academic, Explained may also give you insights as to what life at MIT may be like.

--

Q: Could you look over my personal statement?
A: Unless I know you personally, I probably do not have time to look over your statement.  Here is some good advice, most of which was given to me by others:

  • Your personal statement should be an answer to the question "why should we admit you and what would it be like to have you here?"  You should argue convincingly for the first point while also giving an idea of your research interests and research personality.
  • Someone should be able to read your statement quickly to answer the question above.  Reading the first sentence of each paragraph should give someone a pretty good idea of what your statement says.
  • Leave out unnecessary details from your statement, especially if someone can find those details on your resume.
  • Be as concise as possible.
  • Don't use excessively flowery language.
  • Start early and revise often.  Show your statement to anyone who will read it and ask for their feedback.
I have posted one of my personal statements here.


--

Q: What advice do you have for me on my resume?
A: Here is some good advice for resumes:

  • Try to be as concise as possible.  If you are applying straight from undergraduate, there is little reason why your resume should exceed one page.
  • Use action verbs, state your achievements clearly--all that standard advice.  People should be able to quickly be able to evaluate the contributions you made in each role.  I prefer having 2-3 bullet points per role to clearly communicate this.
  • Ask other people who have graduated from your institution and/or people you have worked with to look over your resume.  They will have the best idea of what people expect and how it will be evaluated.

--
This is one of my "applying to grad school" blog posts.

  1. Deciding to Apply
  2. Standardized Tests
  3. Fellowships
  4. Applications
  5. School Visits
  6. Some notes on picking grad schools/advisors
  7. FAQ: Applying to Graduate School for Computer Science
You may also be interested in these blog posts I have written:

Saturday, October 20, 2012

Glitter is How I Fell in Love with San Francisco

The mid-twenties women of my peer group all have one question on our minds.  Especially if we are in tech.  Should we move to San Francisco?

I had been living in San Francisco for a few weeks (during an internship) when a friend asked if I was in love with it.  "No" was my immediate response.  Not yet and maybe not ever.  People are so laid back, I said.  All I do is work and commute (from the southern Mission to Menlo Park, 45 minutes, twice each day).  Where are the intellectuals?  Where are the Europeans?  Why is everyone so outdoorsy? And why is it so cold?

I subsequently had several conversations about why I was not in love.  Try to like it more, my other friends said.  You of all people can figure out how to enjoy yourself there.

And so I started spending more time in the city: wearing scarves and finding the flat places to bike.  I went into the uniquely American natural beauty of California's mountains and redwood groves.  I went on hilly runs with breathtaking views of the city and the water.  I ate sushi; I ate pork belly; I ate everything.

One night I acquired loose glitter to wear to what a new friend and I thought was a theme party, what but turned out to be a play party.  (Only in San Francisco...)  The next night I asked the friend if it was okay to continue wearing the glitter.  She laughed and said, this is San Francisco.  You will never be the weirdest person on the street.

One day I acquired a metallic blue cape.  When I asked the woman at the store if it was okay to wear it "right now," she laughed and said, this is San Francisco.

What a good way to describe the attitude of the city, where you can do whatever you feel inspired to do without judgment.  People describe their lives in terms of projects rather than professions.  The CTO of a high-profile tech company is also a yoga instructor.  You can wear a suit or patterned pajamas.  Men, at least in the Castro, are equally likely to be naked or wearing nun costumes.   You can have conversations with strangers on the street.  This is San Francisco.

I remember when I first realized I was falling in love.  After a night out and little sleep after, I biked from the Mission to the Sunset for a leisurely few hours with old friends.  I felt so alive biking back through Golden Gate Park in the sunshine: satiated by an incredible Mexican brunch, wearing a newly-acquired thrift-shop jacket, still covered in last night's glitter.

Glitter is how I fell in love with San Francisco.  I still do not know if I should move there--but what a beautiful affair.

---

Note: My descriptions do not apply to the South Bay/Silicon Valley.  I am in love with neither the South Bay nor the commute to and from there from the city.

Monday, June 25, 2012

Why Do Women Want to "Have It All?"

Last week, former State Department director Anne-Marie Slaughter's Atlantic piece "Why Women Still Can't Have It All" spurred a flurry of internet discussion: there was a nice response on why "having it all" is the wrong thing to be striving for (see the Salon response) amidst many other responses (see the NYT summary and Joanne Wilson's response).  This discussion brings up the valid point that the set of desires of "elite women*" may be unsatisfiable.  The main problem is that the outdated expectation for a woman to pair with a socially "stronger" man does not necessarily create professionally supportive relationships for ambitious women.

The assumption that the man needs to be professionally superior leads to situations in which the woman will spend more time thinking about the family.  A mentor once made the provocative statement that that if I did a startup, I would no longer be able to find a man who I respected.  When I asked why, he said that I am "biologically wired" to look for a "stronger man."  After a fair bit of self-reflection, reading about evolutionary biology, and talking to both men and women, I concluded that this "stronger man" business is based on societal constructs left over from a time when society did not allow women to provide for themselves.  I have encountered quite a few men whom I respect who have also said they are willing to make significant sacrifices towards having a family, including staying home if necessary.  I am not saying that ambitious women can only be with less ambitious men, but they should be aware of the topography of the choice space and the tradeoffs that different choices entail.

Professionally ambitious women must also make a choice about what they want to optimize: it is likely that women seeking both "power coupledom" and supportive relationship will be disappointed.  It seems that part of the desire to be part of a "power couple" is based on expectations from the days when a women did not work and a woman's success was based on how "well" she married.  In those days, ambitious men did not expect to find equally successful women: they looked for a supportive woman.  Women should be able (and allowed by society) to make this choice as well.  Women should realize that while it may be the ideal to find a successful man who is also has the bandwidth to be supportive (professionally, emotionally, etc.), this is unlikely as the selection pool can become quite small.  We can be quite happy, however, if we choose to optimize for one or the other with no illusions about what we are giving up.

It is important for a woman to realize that if she wants a "stronger" man, she should have expectations about the tradeoffs she is making.  This does not mean, however, that all women with careers must make these tradeoffs.  We have been given one view of what it means to "have it all" and it is our responsibility to question and redefine this for ourselves.

My friend Yao inspired this post with the following comment:"I wonder why women always think they must be the ones to give up their career for kids and not their husbands."

* I acknowledge that these discussions are highly heteronormative and have a relatively small target demographic.  Everything I say probably applies only to young, urban, highly-educated, heterosexual American women.

Wednesday, June 20, 2012

Why I Go Out

My friend Neha sent me this piece Why Go Out, in which Sheila Heti compares going out (to bars, clubs, parties, and the like*) to a cigarette habit, discusses the merits of being alone, and concludes that social interaction may be a necessary evil. While I agree that people should be honest with themselves about why they go out (to fill voids; to avoid knowing themselves), going out can provide more than just a quick fix for the voids they may be trying to fill.

I agree with the idea that being with people makes you addicted to being with people. I have found that when I have been surrounded by people, I feel more lonely when I am alone. When I have a roommate, I desire social interaction more than when I live alone. I find it important to spend time alone in order to establish the equanimity of being alone as a home base. Spending much of the week "out" certainly gets in the way of self-reflection, self-knowledge, and self-friendship.

Going out is more than a quick fix for me: it is an important part of my character development and well-being. Because of the public persona I find it important to maintain, going out forces me to act happy and carefree. Going out gets me out of my head and keeps me in practice of making small talk. It makes me realize I am not the only person in the world and that my problems are irrelevant to most people. I often feel more confident, happy, and agreeable after being out than after spending time alone or even with a close friend.

Establishing a productive framework for going out takes commitment. The more you go out, the more you get invited out, and the more people you meet. This makes you more statistically likely to attend better parties and have better friends, based on whatever definition of "better." A couple of years ago I established the rule "always go out" for weekend evenings. This has caused dramatic improvement in not just my social life but also my productivity: I am feel much happier and more creative now. Everybody wins.

And so I go out, not just out of habit, but to establish habits that bring more human connection and happiness. Yes, I would sometimes rather be at home, but it does not mean that being home is better for me.

* The "going out" Heti talks about seems to describe a specific kind of going to bars to drink and to pick up people. I also find that fairly empty and depressing; I can see how it can be addictive. As a graduate student in Cambridge I am lucky to have found the "party circuit" of grad students who go out and are also nice and interesting people. Being able to so easily "go out" among friends is not the norm.

Tuesday, April 24, 2012

On Individuals and Communities

I recently read David Brooks's New York Times Article "The Talent Society," which led me to read NYU sociologist Eric Klinenberg's book Going Solo: The Extraordinary Rise and Surprising Appeal of Living Alone.  Brooks's article discusses how Americans are favoring the maximization of talent over locking themselves into stable, committed situations (marriage; settling down in a community).  In Going Solo, Klinenberg describes the worldwide rise of people living without family or roommates.  Factors that may be causing this include higher amounts of wealth, mass urbanization, and decreased social stigma.

At first glance, this phenomenon seems supremely sad: people are becoming self-reliant not just in their friendships (see this 2010 blog post), but also in their living situations.  Klinenberg begins the book by recounting how he got into the business of writing about living alone: during his coverage of the Chicago heat wave, he discovered that many of those who died had been living alone, with no one to look out for them.  People are living alone in part because of the disintegration of the institution of marriage, because of how long people often outlives their spouses, and because of the increased geographic mobility of family members.  Among the people Klinenberg profiles are those who live in complete isolation and people who die alone.  End-of-life is often difficult for those who live far from family members: workplace policy often does not allow time off to care for friends.

Fortunately, Klinenberg covers the many positive aspects of this shift towards living alone.  People are motivated to live alone because high income levels and mass urbanization support the fabulous lifestyles of urban singles.  People are escaping negative living situations: Klinenberg profiles many divorced people who report that living alone can be much less lonely than living with someone with whom they do not get along.  In a world with constant external stimulation, living alone allows people to take the time and space they need to relax and rejuvenate.  As people are spending more time outside of nuclear family structures, they are turning to the greater (transient) community for their social needs.

Klinenberg reveals that the community has become important in the rise of the cult of the individual.  People are not necessarily more alone: urban singles often have more active social lives than those who live with others.  In addition, collective housing is starting to become more popular outside of the United States.  Klinenberg describes a collective housing unit for singles in Finland where people have the option to, but are not obligated to, participate in activities with their housing community.  Instead of turning to nuclear families for support, people are becoming increasingly reliant on a larger and more transient group.

In the upcoming decades, it will be important to structure our society to allow people to happily live alone together.  This will involve examining housing structures, social policy, and expectations about how social needs are to be met.  It seems that as long as we make sure groups such as the anti-social and aging are not left behind, our society can continue to move from one based around the nuclear family to one based on pursuing individual goals in the context of transient but supportive communities.

Sunday, February 05, 2012

The Life of an Academic, Explained

A friend who was dating a post-doctoral researcher at the MIT Media Lab once said, “Jean, please explain to me your life. I don’t understand you academics.” This post is intended for those considering relationships with academics, those thinking about becoming academics, and those bewildered family members of academics.

In this post "academic" mostly refers to "graduate student" but some of the things I say seem to apply to more senior academics (professors, researchers) as well.

How we spend our time. On a typical weekday, I wake up at some point and go into the office. Depending on my meetings and other activities, I go to yoga or for a run before or after this. I usually spent 7-10 hours in my office, depending on how much I slack off and how long it takes for me to finish my major tasks. I try not to work on weekends (at most a few hours) so I can recharge for the upcoming week. My schedule is similar to those of my friends in math/science at Harvard/MIT. Experimental scientists spend more time in lab.

My free time includes meals (which I often spend with friends), 1-2 hours each evening, and weekends. I usually spend my evenings and some part of each weekend pursuing my hobbies, which include reading, blogging, doing things related to women in tech, and a rotating other activity. I spend Friday and Saturday evenings with friends.

My MIT grad student friends have on average 1.5 serious non-research hobbies. Common hobbies include running/biking, doing outdoors activities, doing recreational programming, starting a company, and spending time with a significant other and/or children.

The social life of an academic usually depends on level of introversion. Some academics never leave their offices while others are out 3-7 nights a week. Regardless of whether they do it while socializing or in lab, academics tend to value their wind-down mechanisms.

All of this only holds during times of the year without deadlines.

Advisors. During grad school orientation, I was told that my relationship with my advisor would become more important and demanding than any other relationship in my life. This was no exaggeration. My advisor has the ability to graduate me and he has the ability to cut off my funding. While my advisor gives me a good deal of freedom about what I work on and how I structure my time, we both understand his power.

Paper deadlines. Computer science publishes mainly in conferences. In my area (programming languages), there are two top conferences and a few other highly-regarded, more specialized conferences. In my area of computer science, each conference takes submissions once a year. Acceptance rates can be as low as 15%. Conference submissions are full-length papers; small differences in presentation can make the difference between “accept” and “reject.”

During the 2-3 weeks before a deadline, it is normal for me to work 10-12 hours on weekdays and 8-10 hours on weekend days. One senior graduate student told me what makes or breaks a (computer science) grad student is their ability to “bust their butt” for a deadline. During this time he was working 80 hours a week to finish up a project.

Success.
Besides the coarse “promotion” structure (done with Ph.D. vs. not; tenured vs. not), there are many more nuanced factors that determine an academic’s status: 1) which big discoveries they have made and 2) how well they give the impression that they are making big discoveries. Some of this is measurable (for instance, through publication count and citation index) and some of it is more intangible (for instance, reputation in the community).

Fears of academics include being scooped, being wrong, fading into obscurity, and having insufficient intellectual freedom. Many academics are happy just to avoid these situations.

Life goals. We do have goals--though they may not be as concrete as you might like. We may not talk about them because they are often too lofty (for instance, winning the Nobel Prize or Turing Award) or dependent on variable factors (faculty job at a top school; starting a lucrative company) to discuss. The nature of the pressures and prospects we face, as well as the attitudes of our peers, make it highly likely that we will learn to handle a fair amount of uncertainty and risk. For these reasons it is also common for academics to have goals that depend on specific other people (and specific geographic locations) as little as possible.

Spending time with academics. If the academic in your life is willing to make you their hobby, then you can expect to spend a good deal of time with him or her with variability from paper deadlines, grant deadlines, conference and other travel, and teaching schedules. Otherwise how much you see your academic depends on how many common activities you share. Even if you are considered a good friend, this can range from a few times a week to once every few months.

What does an academic look like?
My friend Lan made the video below for a science documentary class to capture the life of a grad student. It features three MIT grad students, including me.


rocks, bands, logic (2012) from Lan Angela Li on Vimeo.

Thursday, February 02, 2012

Verve as a CACM Research Highlight

My paper with Chris Hawblitzel "Safe to the Last Instruction: Automated Verification of a Type-Safe Operating System" appeared as a Research Highlight (read here) of the Communications of the Association of Computing Machinery (CACM) in December. This is a shortened version of our 2010 paper appearing at the Programming Language Design and Implementation (PLDI) conference altered for a more general audience.

This paper describes the Verve operating system, the first operating system verified end-to-end and automatically for type safety. This means that programs running in Verve cannot suffer from whole classes of memory-related errors. The main idea of Verve is to implement the operating system in a type-safe language (C#), write a specification for the memory interface between the type-safe parts and the lower-level parts (the C# code does not mess up the stack; the low-level code does not mess up the heap), and verify the low-level parts of the system (in our case, using Boogie that translates to x86 assembly).

An exciting thing is that Xavier Leroy, who is responsible for both OCaml and the CompCert verified C compiler, wrote the Technical Perspective, "Safety First!" He writes, "The formal verification of high-assurance software is making great progress lately. Yang and Hawblitzel's work, along with other recent breakthroughs in software verification such as the seL4 verified microkernel of Klein et al. (see Communications, June 2010, p. 107), were unthinkable 10 years ago. Little by little, one point at a time, these results sketch a promised land where, with mathematical certainty, software does behave properly after all."

Another exciting thing for current graduate students interested in this work is that my Microsoft Research mentor Chris Hawblitzel is looking for a summer intern to work on adding concurrency to Verve. Not only was Chris Hawblitzel amazing for helping me learn everything I needed for this project, but he was also a fun mentor. I recommend that you contact him ASAP if you are interested in working with his this summer.

Wednesday, February 01, 2012

Research Update: A Language for Automatically Enforcing Privacy Policies

For the last three years, I have been working on things building up to the creation of Jeeves (project website here), a new programming language for automatically enforcing privacy policies. Last week I presented our first paper on Jeeves at the Principles of Programming Language (POPL) conference. You may read our paper here and look over the slides here.

To describe Jeeves I will quote Jacob Aron, who does a good job in this recent New Scientist article:

Even with your friends under control, a software bug could still expose your private data - as Facebook CEO Mark Zuckerberg himself found out recently when a glitch revealed his photos to the world. To solve this, researchers at the Massachusetts Institute of Technology have come up with a new programming language called Jeeves that automatically enforces privacy policies.

Programmers have to explicitly ensure data flowing through their software obeys necessary privacy policies, but it is easy to slip up and let information leak out. Jeeves solves that by substituting the value of variables within the software depending on who the user is. For example, say Alice posts a message but doesn't want anyone but herself to see who wrote it. The programmer can use the variable "author" without worrying what the user sees - when the software runs, Jeeves ensures Alice will see her own name, but everyone else logging in will see "Anonymous".

Jean Yang, who helped develop Jeeves, says the new language lets a programmer delegate privacy responsibilities and concentrate on the actual function of their code, much like a party host might entrust their butler with ensuring the needs of each guest are met so they can spend more time socialising.

Jeeves allows the programmer to provide high-level declarative policies for privacy and rely on the runtime system to automatically produce outputs adhering to these policies. The Jeeves runtime uses symbolic evaluation and constraint-solving in order to do this. We have an implementation of Jeeves as an embedded domain-specific language in Scala. (Code here.)

Next steps for Jeeves include looking at how Jeeves can handle policies for integrity and declassification (in addition to confidentiality) and looking ta how well Jeeves scales for real-world applications.

It says a lot about our research community that languages and solvers are at a point where we can even consider this sort of separation of global concerns from core program functionality. I am excited about a future in which we can continue to make programmers’ lives easier by teasing out and automating concerns such as privacy.

Tuesday, January 31, 2012

How to Date Women

There seems to be desire among the men in my peer group for more knowledge about how to date women. As a straight woman with many female friends, I believe I can shed some light on how to initiate relationships with (20-something, well-educated, high-achieving, urban, living-in-America) women*.

Where to Meet Women
I have some sympathy for men trying to meet women. As a grad student in a male-dominated field, I had a difficult time looking just for female friends.

Classes and parties are the standard recommendations: I found these to yield moderate success. I made a few (most activity-partner) friends at yoga and acrobatics. I made zero friends at dance classes because of my poor skills. Making random friends at parties requires effort: first an exchange of contact information and then subsequent attempts to meet up.

I had significantly more success meeting women through my friends, especially my female friends. There are good reasons for a single man to maintain platonic opposite-sex friendships: women tend to trust their female friends and also tend to stay away from men their friends have had relations with.

It is useful to make your intentions known. A professor once told us he found his wife by telling a few friends what he wanted and having each friend tell a few other friends. Eventually, word got back to him of a woman in Chicago he might like. He flew to meet her. They married.

Online dating is also an option. Besides the more serious sites like eHarmony and Match, more casual (and free) sites such as OKCupid and Plenty of Fish can be great ways to meet women.

You should avoid pursuing women you work with. Unless they show extreme interest, they will probably appreciate being left alone.

How to Approach Women
It is incredibly empowering to have the confidence and know-how to walk up to a woman and talk to her. (In fact, “pick-up artist” Jerry Tran has made a career out of empowering men in this way.) Think about approaching a woman like you would approach someone important at a conference: you want to make a good impression, but you do not want them to remember you as an idiot or sycophant.

Besides appearing confident and relaxed, your main goal should be to appear interesting and interested in her. An example of a good ice-breaker is a witty comment about something going on around you: for example “Seems like they stole this playlist from my middle school dance!” Another way to strike up a conversation is to identify something interesting about the woman (an accessory, something she is carrying) and ask her about it.

Here are some things that are less good to do:
  • Ask if you may introduce yourself to her. Just do it.
  • Comment on her beauty. Not too creative.
  • Open with an offensive remark. A self-respecting woman will walk away.
  • Go from woman to woman with the same lines.
  • Stand around the woman for a long time without talking to her. This is just awkward.
That said, most women are polite enough to talk to people who approach them. You should not be intimidated to talk to a woman who you think is cooler, smarter, and/or better looking than yourself. You must have some redeeming qualities she could appreciate. Figure out what those are and convey them to her.

If you are nervous about meeting people, you may benefit from this advice I gave a friend for giving a talk: take deep breaths to trick your parasympathetic nervous system into relaxation mode. Remember you are awesome; visualize what you want to happen.

How to Ask Women Out
Most women like men who are not afraid to go after what they want. If you want to ask a girl out, the most important thing is to do it.

Here are some techniques for asking a woman out:
  • Determine common interests and find a related activity (examples: restaurant, concert).
  • Ask if you may call--you need a certain amount of (perhaps Southern) charm to pull this off.
  • Get her number or add her on Facebook. Ask her out after chatting or texting.
First dates are usually weeknights: weekend evenings are valuable social real estate and weekend dates signal either a less-than-full social calendar or a high amount of interest. You should also ask for a date at least three days in advance.

Here are some acceptable dates:
  • Coffee, lunch, or drinks. This could be interpreted as a date or more casually. Some women may be more comfortable with this because it allows you to explore your chemistry and compatibility without too much pressure.
  • Dinner. This is usually a more serious date since it is a bigger time commitment. For a first date it is probably best not to go somewhere too formal.
  • Social event. It may be good to make it clear that it is a date, perhaps through the type of event (for instance, dinner party) and/or the way you interact with her during the event.
Here are some behaviors to avoid:
  • Deciding unilaterally on a time and location.
  • Being obsessive about planning the date.
  • Persisting when she does not show interest.
  • Becoming angry when she rejects you.

How to Go on a Date

Many male friends have wondered what modern chivalry looks like--or if this is even a legitimate concept. Holding doors, helping with coats, and pulling out chairs are charming unless they feel overdone or chauvinistic. Paying is a trickier issue, especially on the first date: some women expect the man to pay, some like to split, and others like to pay. The safe route is to offer to pay. Most women will probably want to split the bill after a few dates.

On the initial dates, it is a balancing act not to scare the woman away while still revealing key aspects of your life. It is best to avoid in-depth discussion of previous relationships, family issues, and other potentially sensitive topics. Your date should not become your closest confidante after only a couple of hours of conversation.

You should take care in your appearance and dress appropriately for where you are going.

It is important to show up on time.

She’s Just Not That Into You
There are many reasons a woman may not be interested: you are not her type; she is focusing on her career; she loves another. Here are some signs:
  • She does not say yes.
  • She says she is busy during the proposed time and does not offer an alternate time.
  • She tries to do something more casual than what you suggested.
  • She invites her friends to the “date.”
  • She tells you she is not interested.
If it seems like a woman is rejecting you, it may be acceptable to ask for clarification. If a woman rejects you, you should not ask her to introduce you to her friends.

Working on Yourself
If you are not meeting or dating the kinds of women you like, it may be time to work on yourself.

Small details can make a big difference. A friend’s physical therapist once told him never to skimp on haircuts and shoes. A female friend suggests that men take care in grooming (nails, facial hair, eyebrows) and personal hygiene (shower after physical activity; wear clean clothes; wear cologne on occasion).

It may be useful to have goals about an image you would like to cultivate. I have a male friend who, whenever he updates his wardrobe, carefully considers the male archetypes he aspires to be and optimizes his purchases to bring him closer to these archetypes.

That said, attractive men have a clear idea of who they are and what they like to do. You should spend time developing your hobbies, interests, and values. We may find them incompatible with ours, but we will respect you for knowing who you are.

Parting Words
It is best to start with an idea of your goals: what kind of woman you would be most compatible with and what kind of relationship you are looking for. Remember to have fun: whatever happens, your experiences can teach you a good deal and provide you with interesting stories!

* Those pursuing more casual arrangements should have a level of game outside the scope of this piece.

Monday, January 30, 2012

Run Your Research in Racket

One of the most fun talks at the Principles of Programming Languages (POPL) conference this year was about Redex, a Racket-based system for lightweight mechanization of programming language semantics. This system allows people to encode their language semantics and theorems in the Racket programming language (the new face of Scheme). The programmer can then play with example programs evaluated using these semantics and use random testing to validate their theorems. This is a much lighter-weight alternative for getting formalisms right than using interactive proof assistants such as Coq. You may read more on the project website.

Sunday, January 01, 2012

Resolutions for 2012

In Influence, Robert Cialdini writes that people should exploit their own sense of consistency and publicly announce goals they are trying to achieve. Here are my New Year's resolutions.
  1. Be nicer. Making other people happy is not only nice, but it also gets you out of your head and makes you happier. I would like to give more genuine compliments, take more time to listen to people, and take more time to help people. Concrete goal: Do at least one thing for someone else each day.
  2. Be funnier. I think I am hilarious; the world does not always seem to understand. Everyone would benefit if I improved how I convey my sense of humor. I purchased a Groupon for classes at the Improv Asylum; I also plan to pay more attention to what other people find funny. Concrete goal: Each week, make at least one person I do not know that well laugh.
  3. Keep my spaces neater. Part of growing up involves having more discipline about how I present myself. Part of this presentation involves my living and work spaces. I have previously been of the view that having a cluttered desk is a sign of productivity, but I hypothesize that having a clear desk will help clear my mind. Concrete goal: Clear the clutter in my office and apartment by Sunday evening each week.
  4. Get enough sleep. I am a happier, healthier, and more productive (and thus nicer, funnier) person when I have slept sufficiently. Concrete goal: Average 7.5 hours of sleep per night in 2012.
  5. Keep up better with current events. What counts as "current events" in my life has devolved to what people post in my Facebook feed. I would like to take some time to optimize my process for engaging with relevant news, blogs, friend updates, and Twitter updates. (I recently discovered Google Currents, which I like quite a bit.) Concrete goal: Read one article about an event in the world each day.

I welcome you to call me out if you catch me slipping.