Brian Harvey is a Teaching Professor Emeritus (i.e., retired) at the University of California, Berkeley. Web page.

I'm an old-time Logo teacher and author. (The MIT Logo group was a direct ancestor of the Scratch Team.) I've taught kids from 8 to 25. The most fun was my time as a high school teacher, but the fifth graders with whom I've volunteered are really cute and lively.

When I first saw Scratch I wasn't that impressed; what kind of programming language is it if you can't define procedures? But my friends at the Media Lab made me come to the 2008 conference, which is where I came to understand the amazingness of the Scratch web-based community. (This wiki editor doesn't think there's such a word as "amazingness.") So I became a convert, but I still wanted to be able to define procedures! So I started my career as a Scratch troublemaker by agitating for user-defined blocks at the conference. (I wasn't the only one; it's an obvious thing to want if you've programmed in pretty much any other language.)

I didn't convince the Scratch Team, but luckily, Jens Mönig had the same idea and actually did something about it, inventing BYOB. A year later, my colleague Dan Garcia roped me into a project to develop a computer science course for non-computer-geek, non-CS-major undergraduates, and we figured that if Scratch is non-scary enough for an eight-year-old, then maybe it wouldn't scare away English and history majors either. But we wanted them to experience something more like the way programs are organized in the real world, and that means procedures, and that meant BYOB.

That was when I started bugging Jens about improving BYOB in various ways. Some of them were just bug fixes, but there was one big one constantly at the back of my mind. If you ask, "what are the big ideas about computer programming that a non-major should come to understand?" I would give two answers. The first is recursion, which the original BYOB already made possible, but the second, higher order functions, was still unavailable. So we started this pattern of daily interaction along these lines:

5pm: I send Jens an email asking for some new BYOB feature.

9pm: I get a reply saying, "No, that's way too hard; I could never get that to work."

7am: I wake up and the new BYOB build with the new feature is in my inbox.

Jens is amazing! He can do anything. I'm lucky to have gotten teamed up with him. And now we have higher order functions in BYOB3! :D