Friday, December 20, 2013

An undergrad's first academic conference

PLDI 2013 was my first major academic conference in which I participated. As a lowly undergrad, I had attended lab retreats and industry conferences previously, but PLDI was to be my first academic conference. More exciting still, I was presenting in the student research competition (undergrad division.)

Having gone through it all (including winning second place in the SRC,) I can safely say that it was an experience like no other, and one that I am extremely grateful to have had the opportunity to attend.

It's easy to lose sight of the bigger picture when you're sequestered in your lab, working long hours, for months stretching into years. You start to focus on the minutia of your research, both good and bad. Worse, you lose the larger context; you lose the ability to see how your little research project really advances the state of the art, and fits into the world around you.

For me, PLDI was a great way to ground myself and put both what I am doing, and what others are doing, into a larger context. In one place, at once time, you have some of the worlds best research and researchers all coming together, to talk about the same sort of stuff you work on every day. And better still, these world-class researchers come and talk to you, about your research, allowing you to see it with fresh eyes.

One of the hardest problems to combat as a student researcher, in my experience, is burnout. You start out with a great idea, infinite energy and drive, and you want to change the world. But if you stay shut away in your little corner of the lab, plugging away at your project without any feedback, you start to wonder if this really is the right path to be going on. You start to wonder if anybody cares about what you're doing. You start to wonder why you do it at all.

PLDI cured me of any lingering feelings of burnout. First, I had people whom I greatly respect come up and say nice things about my work, which is always gratifying. But more importantly, I saw a number of ways that I could use my research to solve pressing problems people are struggling to solve. And more than that, I got ideas for another dozen paths of inquiry for projects both related and unrelated to my current one.

I left PLDI completely energized and ready to go. I now was able to see the wider picture of how my research mattered, what the state of the industry was, and how my research could contribute to it. I also saw another dozen projects I couldn't way to look at once this project drew to a close.

This is on top of meeting all the great people, seeing all the great tutorials, and just generally having a great experience.

PLDI definitely changed how I view academic research, and I can't wait to go back again.

Matt Torok
UC Berkeley
Bachelors in Computer Science, Fall 2013

Wednesday, December 18, 2013

This was my second time at PLDI and while I didn't have a talk this time around, I had a wonderful time connecting with friends and also building new collaborations.  

For example, I was able to chat with researchers of UW on the potential of an approximate computing workshop and express my support. And, just as of late, we found out that they have been able to make that possible.  I was also able to coordinate two visits to Microsoft Research within that week as a result of conversations I had in the "hallway" sessions.

As to the PLDI technical track, I particularly enjoyed Verifying Higher-order Programs with the Dijkstra Monad. I also enjoyed myself at the joint SRC and main track poster session. At the poster session,  I had great discussion with both the authors of Static Analysis for Probabilistic Programs: Inferring Whole Program Properties from Finitely Many Paths (main track) and Uncertain: Uncertain data as a first-order type  (SRC).

Until next year,
Mike

Tuesday, December 10, 2013

Reflecting on PLDI

This was my first time attending PLDI, and it was an extraordinary experience that I hope to be able to repeat again soon. I had a great time connecting with people and meeting new faces in between sessions and over dinner.

The sessions that left the biggest impact on me were toward the end of the program, possibly because my mind was much more relaxed after my SRC presentation:

  • Static Analysis for Probabilistic Programs: Inferring Whole Program Properties from Finitely Many Paths
  • A General Constraint-centric Scheduling Framework for Spatial Architectures
  • Halide: A Language and Compiler for Optimizing Parallelism, Locality and Recomputation in Image Processing Pipelines

Overall, the atmosphere was really inspiring and I gained a totally new perspective on a number of things. Hope to see everyone next year!

Thursday, December 5, 2013

I was presenting a paper about a static analysis to infer memory  ownership properties for C libraries at ISMM this year, co-located with PLDI.  Overall, I enjoyed the conference. Presenting is always fun, as is putting faces to all of the names you read about.  I just want to cover a few papers that stood out for me (in roughly chronological order):

One of my favorite papers was presented early: Scalable Variable and Data Type Detection in a Binary Rewriter (http://dl.acm.org/citation.cfm?id=2462165).  This work takes (stripped) x86 binaries and converts them into the LLVM IR with reasonable precision.  As the title hints, they recover many complex types, which is both impressive and necessary for many tools.  My own work is on the LLVM IR and having a tool like this would be very useful to let me apply my work to a wider range of inputs.  Not having perfect accuracy would probably be fine for many of my purposes, so this was an especially exciting piece of work for me.

Being mostly a software person, I learned a bit about different types of hardware, specifically memory that  deteriorates (http://dl.acm.org/citation.cfm?doid=2462156.2462171).

On the last day of PLDI, I was actually torn between the two post-lunch sessions.  I actually wanted to see all of the presentations from both sessions (one session was about Monads and FRP, while the other was about alias analysis).  Being a mostly functional programmer, I decided to go to the Monads and FRP session. I couldn't digest the whole thing during the presentation, but Monadic Abstract Interpreters (http://dl.acm.org/citation.cfm?id=2491979) seemed very elegant.  I'd like to spend some more time on that paper soon, actually.  That said, I was more immediately excited about Asynchronous Functional Reactive Programming for GUIs, otherwise known
as Elm (http://elm-lang.org/).  I've been vaguely familiar with FRP for a while, but this was a good presentation introducing it and actually demonstrating how to use it.  I find that most of the discussions of FRP assume you are already an expert, rendering them somewhat unapproachable.  I'm not directly interested in Elm itself, but I would very much like to try out an FRP library or two in Haskell.  A side project I am working on now should afford me the opportunity soon.

On the ISMM.  I am not really an expert on memory management, but I am interested in the topic, obviously.  I found myself nodding along with the keynote, which basically argued that sequential consistency (i.e., what most programmers who are not computer architects or compiler writers expect) does not need to be prohibitively expensive.  Maybe we will actually see sequential consistency in the wild one day.

My favorite paper in ISMM (besides mine, of course) was Control Theory for Principled Heap Sizing.  I know nothing about control theory and I have never implemented a garbage collector myself (though, like everyone, I have all sorts of opinions about what makes a good garbage collector).  I am not really qualified to evaluate the approach or results in the paper, but I really liked the connection between a well-known problem in Computer Science and a field of mathematics that I have never really seen before.  It makes a lot of sense to look to other fields for inspiration, especially since the programming languages and compiler communities do not often focus on this type of modeling.