Summer of summer schools!

Sunday September 21, 2025

This summer, I went to a couple of summer schools! They were both related to PL theory and research. They were also both very fun! Lots of knowledge was imparted, a little was retained, and I’m ever-more-conscious of all the things I don’t know, but hope to one day learn and understand. After stumbling across Johannes’ blog post about OPLSS this year, I’ve been inspired to write down some brief recollections as well, mostly for myself.

I also went to SPLV, which is held in Scotland, but I probably won’t write much about that. I will say that (a) SPLV was only a week, which is shorter than OPLSS, (b) I was very jetlagged for most of the time, which resulted in me missing part of the mentoring session that I wanted to go to, (c) Edinburgh is beautiful and haggis is quite good, (d) it was smaller than OPLSS in terms of number of attendees, which I really liked because I think I got to know people a lot better, and (e) I finally got to meet Lindsey Kuper in person, which was very cool!

OPLSS

OPLSS is usually held at the University of Oregon, and it’s been happening since 2002—23 years! I first heard about it when I was first getting into PL stuff about a year and a half ago. There’s a long tradition of people interested in programming language theory, both in academia and in the software industry, attending the school and having a really formative time.

General structure

OPLSS is two weeks long, and consists primarily of lectures by various PL researchers, mostly in academia—there were also a few shorter lecture series from PL researchers in industry roles, although most of them weren’t actively doing research, or at least not full-time research. There are usually four 1.5 hour lectures a day, for 6 days a week, with a long break (2 hours or so) each lecture day for lunch. It’s honestly a fairly tough schedule, especially if you want to try and make it to all the lectures and really pay high-quality attention to each one. In fact, I don’t really know if it’s the best idea to go to all of the lectures—it makes a lot of sense to skip lecture series that you aren’t really interested in.

There was a good deal of downtime during lunch and after lectures each day. The nice thing about OPLSS is that everyone is located together in a couple of dorms on the University of Oregon campus, and food is also provided for the full two-week duration in a nearby campus cafeteria. So there was a good, natural impetus to get food with and talk to lots of different people during mealtimes.

Some attendees also organized impromptu study sessions or tutorials in the evenings, either to go over some material from lectures that day, talk about some of their own research, or about some other cool thing (i.e. Iris) that they were knowledgeable about. I was usually too tired to go to these, but the few I went to were pretty fun. I was super impressed by the people who seemed to go to a lot of these and put in significant time studying after lectures! There were lots of very motivated, passionate people around, which was energizing. But I usually needed a break. :)

Some reflections

I think a lot of OPLSS is on the more theory-oriented side of programming languages research, i.e. a lot of the “core” lecture series (which I classify as the ones that were 3-4 lectures long) were introductions (at various levels) to topics like modal type theory, category theory, linear logic, and so on. There’s a ton of value in this, in my opinion, primarily because it feels like there really aren’t many educational institutions in the US that actually teach many of these things. (For what it’s worth, I think Europe does a far better job of teaching foundational programming language theory, i.e. the semantics and logic flavored side of computing theory.)

I personally really enjoyed all of these lectures—I think programming language theory is awesome, as is theory of computation more broadly!—although I admittedly wasn’t able to closely follow all of them. My favorite lecture series, off the top of my head, were Brigitte Pientka’s lectures on logical foundations, Paige Randall North’s lectures on category theory, and Ningning Xie’s lectures on algebraic effects. All of those were taught at a really nice pace (for me, at least) and generally kept everyone engaged (I think).

One thing I think I’m realizing more and more is that I’m not particularly interested in doing theory just for the sake of theory—i.e. I don’t think I would be super happy thinking solely about problems in type theory, category theory, or formal logic all day. I’m definitely not a mathematician or logician.

What interests me the most are applications of this kind of principled theory to real-ish systems. I like being able to see what it is that I can do with nice theory in practice, at least in some relatively clear way, and then implementing meaningful and “usable” prototypes that bubble nice theory up to practice. The fun thing about programming languages as a field is that I think it’s very much aligned with these goals: it bridges a really important gap, in my view, between theory and practice. I think it’s an area where there is and can be very fruitful interactions between those researchers more inclined towards the “purer” mathematics and logic side of things, and those researchers more inclined towards “dirtier” and more practical systems-oriented work.

It does mean that I feel like there’s just a lot for me to learn.(1) I want to learn enough theory to be able to work on it and push it forward in meaningful ways, or at least be able to communicate productively with the real theoreticians; I want to have enough of a systems-building skillset to be able to construct useful and reasonably practical software systems based on solid, elegant abstractions and foundations from theory. I think that will take a lot of time. But that’s part of why I want to do the whole graduate school thing! I think it’s also important to remember (for myself, at least) that (a) life is long and (b) you can’t possibly know everything. That’s part of the joy of it all.(2)

Conclusion

It was really nice to meet so many people this summer that are also interested in programming languages research in one way or another. The more I go to these sorts of things, the more I’m excited about all the things happening in programming languages, formal methods, and all the other related and overlapping fields. There’s a lot of cool work being done that I think is important, and a lot of cool people doing that work! I’m glad that I’ve been able to talk to a few of you, and I’m looking forward to seeing some of you all at various conferences and other events over the years. :)

  1. I've actually been feeling like this quite often recently. I think that's just part of doing research and being in academia, and something that I need to get used to. This isn't really a negative thing, but what is negative is that it's also been quite easy for me, at least recently, to feel sort of embarassed and out-of-place at conferences (i.e. POPL earlier this year) and at the summer schools this summer when I don't know something being discussed, particularly when it seems like most people do know what's going on. Part of this is probably related to the fact that I'm applying to PhD programs and it sometimes feels a bit like: how can I be ready for a PhD program if I don't know X thing? But, in hindsight, that's mostly unreasonable. There will always be things you don't know and, well...it takes time learn things! Expertise takes effort, and one person's expertise can only be so broad.
  2. Thanks to someone at Recurse for showing this to me! I forget who it was though.