Lindsey Kuper [entries|archive|friends|userinfo]
Lindsey Kuper

[ website | composition.al ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Hacker School residency [Apr. 30th, 2013|11:16 am]
[Tags|]

There's a new post on composition.al!

Link5 comments|Leave a comment

Disagreeing while female [Apr. 27th, 2013|04:25 am]

A couple of days ago, I came across a video that's been making the Internet rounds: a performance by slam poet Rachel Rostad, of her poem, "To JK Rowling, from Cho Chang", a transcript of which is here. I watched the follow-up video that Rostad recorded in response to critics of the first video and was struck by a particular point she made in it. Emphasis mine (this part begins at about 0:56 in the response video):

I do not claim to be speaking for all Asian females. There are people who identify as Asian females who are commenting and messaging me, saying that they felt misrepresented by my piece. First of all, I'm so happy we've been able to have this dialogue and that it's been even able to take place. However, I do want to stress that I do not speak for all Asian females, and I do not claim to, and I'm very sorry that I misrepresented you. But I don't think that either of us are to blame for this. I would ask you what conditions are in place that make it so that you are so defensive that I, someone with a completely different experience of oppression, am not representing your voice. It's sad that we live in a society where my voice is so easily mistaken for yours, where our differing identities are viewed as interchangeable.

Hearing that, I immediately thought of the way I feel when I see other women doing, say, feminist activism in a way that's different from how I would do it. Whenever that happens, I worry that someone is going to conflate my views, which might be drastically or subtly different, with theirs. But Rachel Rostad's point is that the very fact that I have to worry about having their opinions confused or conflated with mine, simply because both of us are women doing a particular activity, is symptomatic of the broken societal systems and structures that both of us are presumably trying to work against! How can I communicate my disagreement without implicitly endorsing those systems and structures?

In a different context, Chris chrisamaphone writes:

one reason i think women in (e.g.) academic CS have trouble forming this kind of solidarity is because we have such incredibly different aesthetics, find working on certain kinds of problems exciting in ways that others of us don't, and there are too few of us, spread too thin across the enormously rich space of highly contended ideas, to create this sort of conversation. someone made a google group called "lambda ladies" recently that i have hopes for (despite the cutesy name), so maybe this is about to change.

what i wonder is that if, having formulated this problem, there's a solution to it that doesn't involve agreeing on aesthetic. if we can establish that we are fighting a social battle together while still having the foundational, ideological conversations within that structure. it's tough, because in some sense i want to have unilateral solidarity with any woman in my field. i never argued about OOP with donna because i wanted to be on "her side" in some sense. but can we be on each other's side in a gender revolution and still argue foundations of our field?

This is hard. It occurs to me that in the society we live in, two women who dare to have opinions on a topic and talk about them are going to lose, no matter what: if we speak up in agreement with each other, we're living down to the aforementioned stereotype of interchangeability; if we speak up in disagreement, we're having a catfight. Hell, when the patriarchy is working so hard to ensure that our interactions with other women cause such distress, is it any wonder that a lot of us don't mind being the only woman in the room so much of the time?

As so often when the environment itself is what's broken, I don't see any easy fix for that problem. But to get back to Chris's question about how to disagree while female, the following is an experiment that I might try. Before voicing my disagreement with a woman, I can consider the following:

  • Do I really disagree, or am I just worried that I'll be assumed to have agreed with her if I don't quickly and loudly voice disagreement?
  • Do I really disagree, or do I actually pretty much agree but nevertheless feel that I have to find something to nitpick in order to continue to have an identity distinct from hers?
  • Do I really disagree, or am I just upset that she's a woman with an opinion?

If the answer in every case is "I really disagree", then I should say so, if I feel like it -- I want to stress that the point of this exercise is not necessarily for there to be less disagreement, but, rather, to avoid reinforcing the patriarchy while encouraging legitimate disagreement. I don't know if it will help, but maybe it's worth a shot.

Link9 comments|Leave a comment

Writing macros that write Redex [Apr. 21st, 2013|01:21 am]
[Tags|]

Hi! I'm a friendly, albeit janky, Ruby script, and this is one of several automated messages that I'm capable of producing to let you know that there's a new post on composition.al.

Link5 comments|Leave a comment

A new paper draft, and a debugging story [Mar. 31st, 2013|05:59 pm]
[Tags|]

Hi! I'm a friendly, albeit janky, Ruby script, and this is one of several automated messages that I'm capable of producing to let you know that there's a new post on composition.al.

LinkLeave a comment

FizzBuzz revisited [Mar. 2nd, 2013|03:03 pm]
[Tags|]

Hi! I'm a friendly, albeit janky, Ruby script, and this is one of several automated messages that I'm capable of producing to let you know that there's a new post on composition.al.

Link1 comment|Leave a comment

Cross-linking from composition.al [Feb. 18th, 2013|11:26 am]
[Tags|]

Hey! So, lately I've been posting on my research blog more than I've been posting here. I got one request, sort of, to syndicate to here from the new blog. But I don't want to cross-post the entire contents of posts, because I like to have the freedom to continue editing things after they've gone up. I don't like the thought of versions being out of sync with each other, or of manually having to edit one to match updates in the other. So, true cross-posting probably isn't going to happen.

Automated cross-linking could happen, though. I'm partway toward rigging it up (and I can't find anything off-the-shelf that quite does what I want, so there is a bit of...rigging...involved), but first I thought I'd ask if there's an audience here for it. I'm skittish, because personally, I find these automated things annoying more often than not. Be honest: would you find it annoying if links to my research blog posts automatically appeared here?

In the meantime, here are a few recent posts:

Link3 comments|Leave a comment

composition.al is up! [Jan. 10th, 2013|06:55 pm]
[Tags|, , ]

I'm very excited to announce that I've started a new blog for writing about the research and research-related program activities that have taken over this journal in the last few years. Also, I'm excited to have a domain that's less embarrassing than rockstargirl.org.

I hesitate a bit in calling it a "research blog" -- that sounds so bloodless. Rather, I want it to be a blog about my experiences as a researcher, which necessarily include research but also include a lot of other things. If you've been reading my research posts here, I hope you'll consider reading there, too.

Link10 comments|Leave a comment

2012 in review (part 2 of 2) [Jan. 6th, 2013|09:03 pm]
[Tags|, , , ]

Continued from part 1!

As June came to an end, I went to back-to-back Mountain Goats concerts -- John Darnielle solo shows, really -- on the 27th and 28th, bringing Alex with me for the first (it was his first Mountain Goats show) and my friend Emily for the second (her first, as well). Because I lived in Mountain View, I spent twice as much time getting to and from these shows on public transit than I spent actually at the shows, but it was worth it, and I was really happy to get to give Alex and Emily a proper introduction to a band I've loved for a long time. Neither show quite left my head for months. (LMA has the first night's recording, which happened to be the night that JD played not one but two songs about professional wrestling.)

July arrived, and Ryan and I made a final push to finish up our POPL submission on time, with the help of many friends and colleagues who read drafts of it for us. Ken Shan spotted a couple of particularly subtle bugs.

Just before the deadline, a friend of Ryan's pointed us to some related work we hadn't seen yet: a very recent tech report from the group working on the Bloom language at Berkeley. Then, it turned out that my Mozilla colleague Niko had a friend who had worked on Bloom. Niko put me in touch with his friend, I started talking to the Bloom folks, various enthusiastic emails were exchanged, and I ended up being invited to go visit Berkeley and give a talk in August.

Things that Jim can help you with at OPLSS.

With the POPL deadline behind me, I took two weeks off from Mozilla to attend OPLSS in Eugene, Oregon, an annual two-week-long summer school that draws PL folks from around the world. The lectures were intense, mind-bending, and entertaining, and I loved hanging out with the people at OPLSS.

But it was at around this point in the summer that I began to feel pulled apart at the seams, because there were so many things I had to do and they all seemed critically urgent. Although our paper was now done, I had returned to trying to fix the remaining bug in our determinism proof, so that Ryan and I could put up the tech report that was supposed to accompany the paper. I felt guilty for not doing the OPLSS homework -- after attending the lectures all day, whatever energy I had left was going toward working on the proof instead. On the other hand, I felt equally guilty for being at OPLSS at all instead of back at Mozilla hacking on traits, which had gone rather quickly in my mind from being a somewhat exotic, nice-to-have feature to an essential feature that the language sorely needed. (Indeed, Niko's type inference code was filled with plaintive comments about how the implementation could have been so much cleaner, if only we had traits.) And on top of everything else, I had to prepare for my upcoming talk at Berkeley.

After a few days at OPLSS, with all my various research and work obligations at war for my attention, I was a stressed-out wreck. Alex listened to my woes on the phone with characteristic patience and understanding. Another thing that helped was getting out of my dreary, isolating OPLSS dorm room (my roommate had been a no-show, so it was just me) and running on the beautiful network of trails around Eugene. Nevertheless, with all the other stuff I had to do, I began to fall behind on the 20-mile-a-week habit I would have had to keep up in order to make my 1000-mile goal for the year.

I began to make progress on the proof again; then, at the start of the second week of OPLSS, I got a big emotional boost: Ryan and I got official notification that our grant had been funded! This was pretty huge news for me: it meant that my plans for doing a Ph.D. with Ryan were starting to shape up in the way that I had hoped.

By the end of OPLSS, I had managed to isolate and finally really understand the renaming bug. I still hadn't managed to fix it properly, though, so Ryan and I decided to post an incomplete version of our tech report, and I went back to Mountain View with a vow to go back and fix it once my internship was over.

In August, back at Mozilla, I worked furiously to get at least some part of my traits proposal implemented before my internship ended. I had to give my final presentation on traits in my second-to-last week at Mozilla, before I had anything actually working yet; in it, I overoptimistically predicted that traits would be done by the 0.4 release. (Much of the work ended up being deferred to the 0.5 release, which just came out in December, and many bugs still remain to be addressed.)

But finally, on Monday of my last week, I successfully compiled and ran the first-ever Rust program with a Haskell-style default method. It was just a toy program, but I was pretty excited. I also felt heartened by all the enthusiasm I was seeing for traits, both on the team and in the Rust community beyond the core team. (As I said in my presentation, "I'm an academic -- I'm not used to working on things that people actually want.") For that matter, it was rather exciting that a Rust community beyond the core team could now actually be said to exist; that hadn't been the case back in 2011!

A few days before we had to head back to Indiana, I went to give my talk at Berkeley, where I had a great time chatting with Neil Conway, Joe Hellerstein and the rest of the Bloom and Daedalus folks. Their work on BloomL, which is an extension of Bloom, had turned out to be directly related to our work: what Ryan and I were doing for single-assignment parallel languages -- namely, parameterizing them by a user-specified lattice to give them a more flexible and general notion of monotonicity -- BloomL had already done for Bloom. Their goal was guaranteeing eventual consistency in distributed databases, rather than deterministic parallelism, but the math was largely the same.

Moreover -- and I might never have realized this, had we not come across the Bloom work -- the ideas about monotonicity that Ryan and I had been kicking around had already been in play in the distributed systems community for a while. The novel thing that I hope to be able to offer is a language-based account of those ideas, as part of a language-based approach to deterministic parallelism. But just because something looks like a language problem to me doesn't mean it's okay to succumb to PL myopia! We need to pay attention to what the distributed systems people are doing; it turns out they're working on really hard, interesting problems.

With our internships done, Alex and I flew back home to Indiana, again with cats in tow, and I spent a much-needed week doing absolutely nothing while Alex began teaching NLP to undergrads. On August 27th, we happily celebrated our first wedding anniversary.

Inside "Your rainbow panorama" by Ólafur Elíasson on the roof of ARoS Aarhus Kunstmuseum, Aarhus, Denmark.

The highlight of my September was a trip to Denmark, where I attended ICFP in Copenhagen, then spent a few days adventuring with Chris. While ICFP was going on, Ryan and I received the reviews for our POPL submission and wrote our response to the reviews. I had been nervous that the reviewers would spot the remaining hole in our proof, but my fear turned out to be unfounded -- none of the reviewers took issue with the technical development. Rather, their complaints were that we needed to motivate the paper better and provide more real-world examples of why a new approach to deterministic parallelism was called for, which were both fair points.

Considering that it was my first time submitting a paper to POPL, I was actually quite happy with the outcome: the reviewers found our idea to be interesting and potentially useful, pending more examples. But since it looked like our paper wasn't going to be accepted to POPL, we started thinking about resubmitting it to ESOP. I also began talking to people about potential applications for our work, and Matt Might suggested using LVars for parallelizing CFAs, so I began thinking a bit about how that might work. (I didn't get particularly far with the idea, but as it turns out, two of my favorite colleagues, Will Byrd and Andy Keep, are just about to join Matt's research group as postdocs, and there's a possibility that we'll be collaborating on it in the future, which would be very cool.)

At the end of September, Alex and I went to Florida for a few days to be part of his sister Natalie's wedding, and happily welcomed her new husband, Bryan, into our family.

On October first, Ryan and I were notified that our paper didn't get into POPL, so we spent the first half of the month readying our ESOP submission. Since the ESOP page limit is shorter, we had to condense and cut a lot of the material, which was difficult, but I think ultimately improved the paper. Aaron Turon helped by commenting extensively on a draft. It was also during this time that I finally fixed the renaming bug, after some conversations with Amr and a few emails exchanged with Neel Krishnaswami (who had offered to help when we'd talked at ICFP). We posted an updated version of our tech report with the finished proof.

With the determinism proof finally complete, I went back to thinking about the frame-rule-like property we'd had to show along the way. Something about it was nagging at me. In my experience, people used frame rules to show that, if a program only used certain resources when it ran, then the resources it didn't use remained the same before and after the run. That was a useful property, but it seemed like only half the story. A frame rule could also show that if a program only used certain resources and produced a given result, then running it again with additional resources present would produce the same result.

For us, it was that second guarantee that was particularly important, because "the same result" was what determinism was all about! When I asked about it on cstheory.stackexchange, both Aaron and Neel had illuminating responses, and I realized that there was more to the frame rule than I'd thought. Conveniently, Larry Moss had just asked me to give a talk at the IU logic seminar in November, so I used the classic "agree to give a talk about something as a way of motivating yourself to learn about it" trick and told Larry that I would give a talk about frame properties, adding a paper that Aaron had recommended to my reading list.

Alex all up ons.

Once we'd sent our paper off to ESOP, Ryan suggested that while we were waiting to hear back, I could help out with some monad-par hacking. He asked me to do what he thought of as a fairly minor task, but when I tried to dig into it, I was utterly lost. Since I had barely written any Haskell in my life up to that point, I decided to back up and work on actually learning the language first, which was a bit embarrassing, since Ryan had assumed that I was already pretty fluent with Haskell.

By this point in the year, I was so far behind on my 1000-mile running goal that I more or less gave up on it entirely, although I continued to accrue points on Fitocracy for my bike commutes to campus. Alex, though, continued to run regularly as preparation for another marathon he had coming up in November (he actually did a total of three marathons in 2012). He also became enamored of these things on a weekend trip we made to Atlanta to attend yet another wedding.

I crossed one minor academic cheevo off my list in October: the BloomL paper by Neil Conway et al. was published at SOCC, marking the first time that my work on LVars has been cited by someone else. Finally, in October Larry Moss and Ken Shan both agreed to join Ryan and Amr as members of my dissertation committee, bringing it up to the required total of four members.

As November began, my efforts to get better at Haskell limped along. I had frustrating interactions where I would say that I was struggling with Haskell, and then another grad student would proceed to start 'splaining basic type theory to me. The types weren't the hard part; the purity, the laziness, and the parallelism were the hard part! Eventually, I begged off of working on the monad-par project so that I could get back to my own stuff. I also spent some time organizing events for CS Club, especially the second annual CS Club "So you want to go to grad school?" panel.

Over our Thanksgiving break, Alex and I made a road trip to Iowa to visit my parents and my grandpa Joe, my mom's dad. We spent a few days traipsing around Cedar Rapids, where I lived for a year growing up, and Grinnell, where I went to undergrad.

After Thanksgiving, I gave my logic seminar talk about separation logic and frame properties. While preparing for it, I chatted with Aaron a bit more, and he suggested that I take a look at a paper on "views" that was about to come out at POPL; he suspected there might be an interesting relationship between views and LVars. I began doing some more background reading on concurrent separation logic so that I'd be better able to make sense of the views paper.

Finally, at the end of the month, we got the reviews back from our ESOP submission and wrote our response. The reviewers had liked many things about the paper, but, just as with POPL, they wanted to see more convincing examples of what LVars were good for.

In December, while looking through some old emails, I realized that back in October, Neel Krishnaswami had independently recommended that I read the same paper on views that Aaron had pointed me to. (Dun-dun-DUNNNNNNNN.) I emailed Aaron and Neel to see if they were interested in working with me to investigate a connection between views and LVars, and they responded enthusiastically, inviting me to visit Saarbruecken right after POPL so that we could spend some time working together. There are a couple of other LVar-semantics ideas we're interested in pursuing, as well.

Needless to say, I'm incredibly excited about collaborating with Aaron and Neel. For one thing, I've been wanting to do something involving logical relations and LVars right from the start; for another, the fact that a frame property just fell out in the process of doing the LVar determinism proof suggests the possibility of some kind of separation logic for deterministic parallelism. (Also, I've never been to Germany, and I'm quite looking forward to visiting, especially since Ezgi Cicek alerted me to the existence of Flammkuchen.)

What Will Byrd's office looked like in December 2012, at the end of his nine years at IU.

In mid-December, Ryan and I got a very nice rejection letter from the ESOP committee, in which they reiterated that they liked our idea but that they wanted more convincing examples. Although I'm of course disappointed that we haven't been able to publish our work yet, I think that the two rounds of reviewing we've been through have put us in a good place to move forward with it. The technical development is now quite solid, the idea is novel as far as we know, and people seem to want to be enthusiastic about it. But it's clear that we need to motivate the work better. Everyone knows that nondeterminism can be nasty, but why would someone want to use our thing instead of just using a single-assignment language? What kinds of programs are expressible (or conveniently expressed) with a monotonic-multiple-assignment language that would be impossible (or inconvenient) to express with a single-assignment language or some other existing deterministic parallel model? Those are the questions I think we need to address next time.

The semester wrapped up, concluding with Andy Keep's dissertation defense, and Alex and I skipped town for the holidays, going first to New York for an end-of-the-world party that some friends were throwing, and then to Tallahassee to spend a few days with his family, as has become traditional. All this was great fun, except that just as we got to NYC, I caught a terrible cold that destroyed my voice and just wouldn't go away. When we got back to Bloomington, Alex convinced me to see a professional, who prescribed four different medications. Believe it or not, this is the first time in my adult life that I remember having to take prescription drugs of any kind, and I was a little reluctant to do so, but they seem to have done the job. Still, it's only now, after nine days of drugs, that my throat is getting back to normal.

Finally, I submitted a talk proposal about the LVars work for the POPL student short talk session, and it was accepted, so it looks like I'll be giving a short presentation at POPL in addition to the, uh, even shorter one that I might be giving at PLMW. I have a bit of work to do to prepare for both of those before I head off to POPL (in Rome!) in a couple of weeks.

To sum up, I'm happy with how my 2012 went. I made a lot of progress on research this year. Getting our grant proposal accepted was a big win. I'm proud of having submitted my first paper to POPL, having finally gotten the LVar determinism proof done, and having given various talks and successfully reached out to various people about research collaborations. At Mozilla, I contributed to every release of Rust, and I helped bring traits into the language. In my personal life, my marriage continued to go wonderfully. Alex is still the best. The paper rejections were unfortunate, but that's part of academic life; there's not much I can really complain about.

In 2013, I'd like to do another marathon; I'm tempted to go back to Toronto and try that course again in May. Research-milestone-wise, I want to get our first LVar paper published and get another paper or two underway, and I'm hoping to propose my thesis relatively soon -- sometime this summer, perhaps. Alex is planning to propose this year, too, so he and I are even more or less synchronized, which is awesome. Although we decided we don't want to do any more internships before we graduate, I want to keep contributing to Rust as a volunteer when I can, and to do what I can to help other people contribute. And that's about it for me; thanks for reading! How about you?

Link4 comments|Leave a comment

2012 in review (part 1 of 2) [Jan. 3rd, 2013|09:19 pm]
[Tags|, , , ]

So it turns out I have a lot to say about how my 2012 went. Part 2 to follow!

In January, I began a research assistant position with my advisor, Ryan, marking the first time in grad school that I've had no major responsibilities other than research (that is, no classes and no teaching). In December, Ryan and I had submitted an NSF grant proposal about lattice-based deterministic parallel computation, so now we began fleshing out the ideas we'd described in the proposal, putting together a semantics for a small language with lattice-based data structures that we called LVars.

Alex and I started training for the 2012 Toronto Marathon, and I opened a Fitocracy account on January 1 with ambitious plans to log 1,000 miles by year's end.

I spent some time helping organize InWIC, a conference for women in computing in Indiana; the main thing I did was work together with my friends Will and Ian at Studio Cypher to design a cooperative puzzle game for the InWIC attendees to play.

Philly as seen from my hotel room at POPL.

At the end of the month, I went on a delightful road trip to POPL in Philadelphia with a whole pile of folks from IU and CMU. Highlights included playing board games in the hotel lobby and being too scared to say hello to Simon Peyton Jones in the elevator (later I got over it and we had a lovely chat).

In February, Ryan and I continued working on our project. As our LVar-based language began to solidify, I started working on a determinism proof for it, taking the determinism proof for the Featherweight CnC language in this paper as a starting point and frequently soliciting Amr's advice. It had actually been the Featherweight CnC proof that had gotten me started thinking about the relationship between monotonicity and determinism in the first place, so it was interesting to go back to that proof and try to adapt it to our setting.

It began to sink in that I was headed toward doing a Ph.D. with Ryan on deterministic parallelism, which was pretty exciting. Deterministic parallelism was still rather unfamiliar territory for me, but now that I had a big proof to work on, I was in my element. Amr also agreed to join my nascent thesis committee.

As March began, I was getting close -- or so I thought! -- to finishing the proof, and we considered submitting something to ICFP, but with the proof still not done, we decided we'd better wait and shoot for POPL in July instead.

During IU's spring break in mid-March, Alex and I went to Boston for a few days, where I spent some time working with Amal on the still-unfinished multi-language parametricity project I was doing with her. While there, I told Amal about what I was working on with Ryan, and when I showed her one of the properties I'd had to prove to make our determinism proof go through, she pointed out that it looked sort of like a frame rule. At the time, I didn't really understand what that meant, but the idea stuck with me.

Finishing the IU Mini.

While I was in Boston, Amr found a bug in my proof that had to do with the names of memory locations and the circumstances under which they could be renamed. It wasn't a showstopper, but it would continue to plague us, in one guise or another, for several months.

When I got back to Bloomington, after a couple of meetings in which Ryan, Amr, and I all found ourselves evaluating expressions by hand on Amr's whiteboard, we realized that we really needed a runnable model of our language, so I started hacking a Redex model together. I had a lot of fun bringing the paper semantics to life. On March 30th, which was my 30th birthday, I celebrated by giving a whiteboard talk at PL-wonks about what Ryan, Amr, and I had been doing, followed by a Redex demo.

The next day, Alex and I ran the IU Mini Marathon, which doubled as part of my Toronto marathon training.

In April, I had the honor of visiting my undergrad school, Grinnell College, as part of the Alumni Scholars Program. It was a lot of fun: I chatted with my former professors, met some current students, and gave a talk about the work I did in 2011 implementing parts of the (former, prototype-based) Rust object system.

What I spent April figuring out.

Once back at home, I spent much of the rest of April trying to finish a particularly hairy case of the diamond lemma (the lemma that did the heavy lifting of our determinism proof) that had been thwarting us for the previous two months. I finally got it at the end of the month -- the solution required a tweak to the aforementioned frame-rule-like property that seemed obvious in retrospect -- and the only remaining known problem with the proof was the location-renaming bug that Amr had pointed out. By now, the proof had grown to 40 pages long, and we'd started drafting our POPL submission.

In May, the semester ended, and Alex and I headed to Toronto for the marathon (following a last-minute trip to Chicago to get my passport renewed). Toronto was great! We got to hang out with our friends Ryan and Janice, who live around the corner from Honest Ed's, and I caught up with my old friend Steven from the Act IV days. And I successfully completed my seventh marathon. Given the course's negative change in elevation, it should have been an easy PR, but I missed my PR by five minutes due to a series of unfortunate gastrointestinal events.

After Toronto, Alex and I headed to California (with cats in tow) for our second summers of working on Google Translate and Rust, respectively. It was great to return to Mozilla, where I pretty much already knew everyone on the Rust team. Most impressively, all of the summer 2011 Rust interns -- Tim Chevalier, Eric Holk, Paul Stansifer, Michael Sullivan, and me -- were back for summer 2012, either as returning interns or, in Tim's case, as full-time employees.

For me, returning to Mozilla for a second summer was something of an indulgence. I had reached a point in my Ph.D. when I really should have been concentrating on research, rather than going off and doing yet another internship, and I suspect that some of the other interns were in a similar position. But the opportunity to work on a project as cool as Rust, with a team as good as the Rust team, was too tempting for any of us to pass up, it seems.

Near the end of May, Ryan and I got the incredibly exciting news that the grant proposal we'd submitted in December had been recommended for funding. Being recommended for funding usually means that a grant will be funded, but we kept quiet about it because it wasn't yet a sure thing. So began an extremely squirmy two months of compulsive email-checking and NSF-website-page-reloading.

In June, I managed to keep up my running, aided by the perfect Mountain View weather and the fact that our apartment was right next to the Stevens Creek Trail. For Alex's part, he ran almost every day, sometimes as part of his commute.

Another compelling argument for working in Mountain View.  I miss west coast Mexican food.

At work, I had to spend a fair amount of time re-familiarizing myself with Rust; the compiler had matured a lot since I'd left the previous August, and the language had sprouted a mysterious new region system, a typeclass system of sorts, and a few other features that were new to me. After some amount of flailing with the type inference engine (which had been overhauled (...again)), I finally landed integer-literal suffix inference in the compiler in mid-June, in time for the 0.3 release.

Once suffix inference was done, I needed a new project. The team had been mulling over the idea of adding traits to Rust for some time; as far as I know, Patrick was the first to bring up the idea of traits, in his object system proposal from November 2011. After reading a bit and asking some questions, I realized that what everyone had been calling traits were essentially Haskell-style typeclasses with default methods -- in the terminology of the original traits paper, "provided" methods were implementations, while "required" methods corresponded to signatures -- and that Rust's existing ifaces were just underpowered typeclasses that could be extended to traits (whereas traits and interfaces had been distinct notions in the original proposal). The idea of combining traits and interfaces was well received, and I spent a fair amount of time putting a proposal together, with help from Patrick and Dave, who had already done some thinking about separate compilation and so on. Adding default methods to an interface, it turns out, has surprisingly deep semantic ramifications -- the whole thing's...polarity?...flips, or something. I don't have a good explanation at hand, but something about it made me go "whoa" and sort of stagger back from the whiteboard.

Meanwhile, I was continuing to work on Ryan's and my POPL submission in my off hours. We still had the location-renaming bug in the proof to contend with, but Ryan suggested that I put the proof aside for a while and focus on writing instead, since the POPL deadline was quickly approaching...

Continued in part 2!

Link3 comments|Leave a comment

"This is an area you should thrive for in the coming year." [Dec. 30th, 2012|01:21 am]
[Tags|, ]

I got my annual review letter from my graduate program. It's much longer and more boilerplatey than the ones I've gotten in the past, so I won't quote the whole thing, but the gist of it is that I'm doing fine and the program will continue to fund me, provided that I hurry up and submit my research committee paperwork by spring. They're correct that I'm behind schedule on that -- I've been delayed by the fact that one of my committee members doesn't actually join our faculty until next month!

The letter also contained this paragraph:

As a Ph.D. student, it is critical to submit and publish your research results to peer-reviewed venues. This is an area you should thrive for in the coming year.

As flattering as "thrive in" might be, I think "strive for" is what must have been intended.

Link9 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]