This post is the second part of my March 10th interview of Matt Might, a PL researcher and Associate Professor in the Department of Computer Science at the University of Utah.
In Part I, we talked about Matt’s academic background, his PL research (including his favorite among the papers he’s written), and his work on understanding and treating rare disease, which began with the quest to diagnose his son Bertrand, and has led to a role in the President’s Initiative on Precision Medicine.
In this post, our conversation continues, covering the topics of blogging, privacy, managing a crazy schedule, and looking ahead to promising PL research directions.
You are very well known for your blog. How did that get started?
My first blog post happened during the academic job hunt. A colleague asked about the job search and how to manage it, and so I wrote up my thoughts in an e-mail. Later, I realized that others might benefit from my experience, so I included it on my website. I wasn’t really thinking of it as a blog post at the time. But then I did the same sort of thing several more times (I call it “reply to public”) and I realized that what I had was a blog.
Your blog covers a wide variety of topics. Which are the most popular?
In total the blog has had about 13M pageviews. As for which are most popular, I wrote about this in answer to a Quora question. I get a lot of feedback on my “how to write email” post, whose ideas I learned from my PhD advisor, Olin Shivers. I receive e-mail about articles on the blog maybe 5-10 times per day.
Is blogging helpful to your academic work?
Yes, in several ways. Blog posts help attract students and might help get (and convince) letter writers. The blog is really useful to me as an advisor: Carefully writing down things that I say again and again makes me more efficient and more effective. The blog is great as a source of “external memory” — when I go through the process of learning something, I will write it down when I realize that I’ve learned it before and forgotten it! I do the same with code or algorithms that are tricky to understand.
Sometimes blog posts turn into academic papers. For example, my paper on parsing with derivatives started as an academic paper, but got rejected, so I turned it into a blog post. The post went viral, so I turned the post back into a paper, which ended up at ICFP. Another example is a post on purely functional deletion from Okasaki’s red-black trees. In Okasaki’s book this was “left as an exercise.” I worked it out and posted it. Enough people considered it to be an academic contribution that I wrote it up for JFP.
Do you recommend blogging to others, particularly academics?
Yes, as I said above, I think blogging has many benefits that complement an academic’s (or a computer scientist’s) day job. Blogging will not get you tenure, and you shouldn’t expect that.[ref]Mike: But maybe tenure should consider outreach to the public[/ref] Academia is about impact, not just peer-reviewed publications. Blogging can serve an academic’s broader teaching mission by reaching a broader audience. By impacting more people, blogging opens new doors, too. And it does give you a platform for doing research — public scrutiny helps. I’ve found that writing for a blog has positively affected my general writing style. Now I aim for punchy, short sentences in order to be more understandable.
You’ve publicly revealed a lot of your private life; what’s your view about personal privacy?
I strongly believe in the right to privacy, and the right to ensure privacy through strong encryption. I wrote a blog post for cryptography newcomers. But ever since I was in graduate school I’ve felt compelled to write about my own failures to help others see that they are not alone when they fail. It’s OK to fail. It feels risky to write about failures and struggles, and doing so should always be voluntary, but it’s been rewarding for me.
You have a busy schedule right now; how do you manage it?
Yeah, it’s crazy. I’m currently on sabbatical as a visiting professor at the Harvard medical school, in Boston, while my family is still in Salt Lake City, Utah. And now I have this part-time position at the White House, in Washington, D.C., to work on the President’s Precision Medicine Initiative. I’m doing a lot of flying! Before I agreed to any of this, we talked about it as a family, to make it work. During the summer, my family came with me to Boston. They often join me on work trips; since my kids are still small, missing school is less of an issue. When I travel home now, I try to be really present — no work, and no Internet after 8pm.
What tips do you have to manage the day-to-day efficiently?
Omnifocus really worked for me for 2-3 years. Then my task-flow exceeded what Omnifocus could handle. Now there are so many urgent tasks that I leave them in my inbox (against advice of “Getting Things Done”, which I followed). For a while, I used GMail as a todo system, where you star things you have to deal with. But now I’m finding that the starred things can grow without bound! So I’ve realized that I’ve hit my limit: I have to just say ‘no’ to great opportunities. Last year I gave 40 talks. This year, I am saying ‘no’ to almost everything. In fact, I’ve not done any blogging since August. It’s turned out to be the least critical thing for me in the short run.
Returning to PL research: What recent work do you see that’s really promising?
One area I think is getting really exciting is probabilistic programming in support of machine learning. I see very compelling clients on the medical side. One example is discovering gene regulatory networks. A scientist may have the idea that certain genes are connected but does not know how. To figure this out, she may take a bunch of data and try to infer a model that shows the connection. But this process is laborious and ad hoc. Probabilistic programming could help the situation: Instead of hand-rolling models, it could support building tools to help scientists concisely describe possible relationships whose structure can be refined from the data. Probabilistic programming raises the level of abstraction to something more manageable, and the right front end could do even more (like the Tabular front end for Fun, for example).
Looking 10 years into the future, how do you see PL having an impact?
I think we in PL are slowly achieving one of our key missions, which is to make a platform for secure, reliable software construction. Taking a step back, we can see things are really improving from where they were ten years ago. Every language has lambdas in it now, even C++ and PHP! To quote my advisor, Olin, “In PL, our languages rarely win, but our ideas almost always do.” We prototype them and show their worth, and they make their way into tools people use. Garbage collection, metaprogramming, advanced type systems, and many other good ideas were far from the mainstream when they were proposed, but in time they have become widely adopted in mainstream languages.
I think that static analysis is destined for wider adoption. It is already used for compiler optimizations, but I think it will be increasingly used for ensuring correctness and security. It is now breaking into the mainstream as a viable business. I also think that dependently typed programming has a bright future.[ref]The Pragmatic bookshelf has an article that is a reasonable primer on dependently typed programming.[/ref] I see my students programming in Agda, using its type system to express and prove strong invariants about their programs. There is a lot of energy in this space now, and I think it bodes well for producing more secure software in the future.
Follow Matt on Twitter at @mattmight.