Blog Articles 46–50

Dynamic Dispatch is Control Flow

In 2010, I saw a tweet that changed how I think about programming. I do not remember who tweeted it, and I have been unable to locate it again, but its gist was “The Tao of OOP is that dynamic dispatch is control flow”.

This is true, and it creates an entirely different way of thinking about designing objects. I also find it applies somewhat to functional programming.

Let’s start with a small, contrived example:

if (shape.isFilled()) {
    fillAndStroke(shape);
} else {
    stroke(shape);
}

Holes

My productivity system is working fairly well at a few levels: I feel like my day-to-day and weekly tactical planning are in good shape, as well as my pipeline management and some medium-term planning. However, there are a couple of notable holes that I’m still looking to fill.

One Tweet Research

I spent the day yesterday at the NSF CISE CAREER workshop. It was excellent, and I strongly encourage any young US CS faculty to go to a future installment or watch the online videos if a CAREER proposal is in their future.

One thing that came up repeatedly is the need to clearly — and concisely — explain your research. Several program directors referenced the Heilmeier Catechism, the first question of which is “What are you trying to do? Articulate your objectives using absolutely no jargon.” Another brought up that it’s important to be able to explain briefly what you’re doing (or planning to do).

I’ve been adopting something like this in my talks for a few years now. When I’m giving a research seminar, one of my first few slides is ‘#1TweetResearch’: how would I convey, in a single tweet, the overall thrust of my work? Here’s the slide from my last seminar:

Coordinating Collaboration

In previous articles, I have written about how I organize my own personal productivity. However, many of my projects are collaborative, and physical paper doesn’t work very well for sharing task lists.