Supposing you and Alex both got awesome jobs after graduation that you could both do from anywhere, and anyone you needed to work with face-to-face would move to where you were. (Ha!) Where would you move to?
The short answer is that I have no idea. "People are the place", so the best place to live is where my friends and loved ones are, right? But my friends and loved ones are pretty widely distributed, so the "people are the place" philosophy doesn't actually help me decide which place is best. And although my friends do sometimes collect in certain pockets, I have a "been there, done that" feeling about living in, e.g., Portland again. Why not go somewhere new and different?
We talk about living in Europe from time to time, and when we were in Barcelona last spring, it really seemed to me that Barcelonans have urban living figured out. I loved it there. But the Spanish financial crisis is getting worse and worse, and much of the rest of Europe is in similarly bad shape. Also, I think I'd always be an outsider there, and are the benefits of getting to live in a beautiful, interesting foreign city worth the constant low-level stress of daily life in a place where aspects of the social protocol make me uncomfortable and where I'll probably never have native fluency in the language? I just don't know.
Although the premise of Tim's question tries to separate them, in reality the question of where Alex and I want to live is bound up with the question of what we want to do, and sooner or later we're going to have to figure out whether one or both of us wants to stay in academia. There's also the question of kids. The other day we saw a "Bay Area Parent" magazine at the CVS in Mountain View, and we laughed about it, but afterward, I quite seriously asked Alex if he wanted to be a Bay Area Parent, and we had a conversation about how torn we were about a potential future of cushy tech jobs, a cute little house in Mountain View, having a kid or two (taking advantage of the parental leave afforded us by said cushy jobs), going to the farmers' market on Sundays -- it all sounds pleasant, but how dreadfully boring, how expected it would be!
What was the first online forum / community / whatever you participated in, and what about it was engaging for you?
Sometime around 1997, I was sitting in my high school's computer lab with a friend, and a website she was looking at caught my attention. It turned out to be a geek humor site, with essays, editorials, and a visual aesthetic kind of like Suck (which, delightfully, has been preserved in the condition it was in fifteen years ago); the style of humor was something like that of its contemporary, The Brunching Shuttlecocks. I'd never seen anything like it, and I was fascinated. Right around the time that I started reading, they launched a forum for reader-contributed content that soon became the site's main attraction. (Web 2.0 1.0?) I loved the cynical style of humor that reigned on that forum, and I loved that my contributions there were sometimes appreciated. In retrospect, it was nothing special, but it seemed edgy and sophisticated to me as a small-town Iowa high school kid. I ended up hanging around there for a good two or three years, mostly pseudonymously, before drifting away when I got to college. A lot of us from the community ended up talking on AIM and ICQ (ICQ!), exchanging physical mail (mixtapes!), and, in some cases, eventually meeting in person. The site is still active today, but I don't want to link to it or even call it by name, because it's not what it used to be and doesn't appeal to me anymore.
I was looking at your LJ interests list to get ideas for what to ask you, and I saw "David Gries". Why???
Ha! Well, to clarify, I don't know much about David Gries the person, although I appreciate that in the bio on his website, he writes of himself and his wife Elaine, "We left Stanford because it had no weather. We moved to Cornell, which has weather, in 1969 and were snowed in for 20 years." I listed David Gries as an interest because I took two undergrad CS courses that used his book The Science of Programming, which is kind of remarkable, considering that I only took a total of eight undergrad CS courses at all. The first of the two courses that used Gries' book was a bizarre mix of C programming and axiomatic semantics; the second was a bizarre mix of ML programming and axiomatic semantics. (The second of the two was actually supposed to be a PL course. The first was an experimental special topics course; I'm not sure anyone knew what it was supposed to be, exactly.) I'm pretty sure I was the only person in either course who was a fan of all the Gries material we studied. It was my first exposure to any kind of PL semantics or program verification work, and I loved the way that the book built up a language from first principles (and built up correct-by-construction programs by composing smaller pieces). In my junior year I became obsessed with writing a Gries-style proof of correctness for binary search. I got it wrong again and again, but I finally got it right. For the first time since my intro CS course, I felt like I completely understood was was going on with something in a CS class, and that was a pretty big deal for a former music major who had narrowly escaped failing Operating Systems.1
Then, because I came back to the same material in the second course, I actually got to experience the feeling of appearing competent to my peers for a brief moment before I left undergrad. (Most of them hadn't taken the special topics course with me, so they were seeing the Gries material for the first time.) One guy actually said, "You're good at this." Those weren't words I heard very often in CS classes. Seeing my classmates -- people I knew to be smart! -- struggle with material that I'd struggled through the previous year was what drove home for me the realization that the arcane things we're asked to learn in CS are, in fact, learned, rather than innate. I wasn't having the same trouble with the material that they were, but it wasn't because I was innately smarter; it was just that I'd seen it before. That made me realize that, at times when I did struggle, it probably just meant that I was new to the material, not that I wasn't capable of handling it.
Finally, aside from the whole maybe-I'm-actually-not-dumb thing, the experience of coming back to the material a second time and feeling like I understood it better made me start fantasizing about how well I might be able to understand something if I could spend an arbitrary amount of time on it. That's why I eventually decided to go to grad school -- because I wanted to really understand everything about something. As Shriram Krishnamurthi wrote in an email to me a few years ago as I was starting grad school, "A PhD is ultimately a kind of obsession with nailing, really just destroying, a problem. You've got to get it into your head, under your skin." That's what I wanted to do, and that's what I still want to do. So, in a roundabout way, I have Gries to thank for showing me that research was for me.
Lately, what do you say when people who don't do CS (or even people who do non-academic software stuff) ask you what you work on? (Hypothetically supposing someone seemed to want to hear more than one sentence.) Have you come up with any cute ways to explain it to people who don't have the background? (I'm thinking more of your current Ph.D research than of Mozilla-y stuff, but if you have cute ways to explain the latter, I'd like to hear those too :-D)
I find that this has gotten easier since I started working on deterministic parallelism last fall, since "determinism" and "parallelism" are, for me, easier concepts to explain to lay people than "parametricity". To explain parallelism, I've said things like, "Modern computer hardware is built to be able to do many things at once, but most software doesn't take advantage of that ability, and right now it's very difficult to create software that takes advantage of all the power that the hardware offers. So we work on ways to make it easier."
I hit on a cute example while talking with my sister-in-law's fiancé last December. I had just finished a class project that had to do with autovectorization and data parallelism, so that was what I was trying to explain to him. We were sitting in the living room at my in-laws' place, and there happened to be some books on the coffee table, so I said something like, "If you wanted these books to be in the other room, you'd just pick them all up and carry them in there. But if you asked someone to write a computer program to do it, chances are they'd write a program that would pick up one book, carry it to the next room, come back and get another book, move that one, come back again, and so on. It's not necessarily the programmer's fault -- some programming languages force people to write programs in that way, and it's the style of thinking that a lot of programmers learn. And other languages might let people write code that looks like it's moving all the books at once, but under the hood, they're still being moved one at a time! So we're working to encourage the move-everything-at-once style of thinking, and at the same time we're also working to improve the technology so that move-everything-at-once is what actually happens under the hood, regardless of what style the programmer used."
Have you cooked anything good lately that's in the genre of "do-able after getting home exhausted from work, but surprisingly good"? This question brought to you by the fact that I haven't had lunch yet :-D
As Crescent Dragonwagon writes, "Pasta is the first refuge of the time-pressed." Couscous in particular takes only a couple of minutes to cook, and the variations are endless. One of my favorite tricks when I was just cooking for myself was to put dry couscous and dehydrated black beans (both available in bulk from many grocery stores) on a plate together, pour some boiling water over the plate, wait for a couple minutes for it to cook, and then devour with copious (and I do mean copious) amounts of salsa. If you have an electric kettle, you don't even need to turn on the stove for that one. French toast is also fast, easy, and delicious, particularly if you have some fresh strawberries to put on it, which you should, Tim, because it's June and you live in California.
If you'd like me to give you five questions, please ask! No rush in answering them -- it took me over a month to get to these.
- In college, the formal systems we studied in CS appealed to me because it was at least possible to completely understand what was going on, if you worked hard enough. Music was so far beyond comprehension that the efforts of music theorists just seemed hopeless, laughable. But these days, I'm sort of tempted to go back and study music theory again.