MusiCoders Profile: Peter Dodds, percussionist and acoustic engineer

Photo credit: Ruby Somera

What is your current programming and musical life?


I lead the Acoustic Research Engineering team at Facebook Reality Labs Research – the organization within Facebook that researches and develops next generation AR/VR technology. Almost all of my programming these days deals with some form of acoustic and audio signal processing or ML for audio. Given that it’s research, the tech stack changes significantly depending on the project I’m working on, but I’m usually working in some combination of Python, Matlab, C/C++, and assorted bash scripting kind of things. Sometimes I’m also working on hardware/software interfacing which can be javascript, .NET, or C# stuff, but that’s significantly rarer.

My musical life has been quiet lately, but with the pandemic I’ve been looking for music making opportunities that I can do easily at home. I’ve been practicing a lot of guitar and attempting to get my jazz improvisation skills from “terrible” to “marginal.” At the intersection of my music and programming life, I’ve done a lot of sound artwork which usually manifests as sound installation projects. I’ve also recently been experimenting with building instrument effects using ML so that has been a fun endeavor at the intersection of music, software, and hardware.

What is your primary instrument and what age did you start learning it? Did you study any other instruments, either as a child or an adult?

The instrument I went to school for was classical percussion. I started learning drum set at around 8 years old and then shifted my focus more towards classical music in high school. I played bass guitar in a few bands in high school as well as in Seattle during my time here and I’ve been focusing on guitar more lately (melodies and harmonies on the same instrument?! GASP).

What was your experience of learning a musical instrument, and how did it differ from your experience in learning to program?

I learned music almost entirely through private lessons and traditional academic institutions. For programming, it’s been a hodgepodge of formal educational learning, self-teaching through projects, and shamelessly asking colleagues to explain things I don’t understand. In some ways they’re very different. Music has this mentor/mentee relationship as well as a pretty linear idea of progress, whereas programming has been much more scattered; deep diving some things, barely scraping the surface of others before moving on and forgetting them, finding resources in a lot of different places. In other ways, I think there’s a lot of similarity. Despite the degrees and the teachers, most of my musical learning was done in a practice room: trying to figure things out in whatever way would get the best results, asking friends for help, watching videos on YouTube, etc. That’s not so different from learning new skills in tech for me. The wallpaper changes, but it’s still a practice room.

How old were you when you started programming? Why did you start programming?

I dabbled on and off in college. Percussionists tend to be tinkerers and when I started doing some work with electronics, I wanted to dive a little deeper and figure out how things worked. I initially started using Max/MSP to do some audio stuff and then when I hit the limits of the in-built tools, I needed to investigate other languages to get things done. It was honestly pretty casual, and I didn’t make a lot of progress. When I went back to grad school to study acoustics, I did much more programming. All my engineering classes required some level of programming, so it became something I was doing daily.

Do you have any specialisms in your musical performance?

I guess the sound art is pretty specialized. Live electronics, generative art, and architectural scale sound installations have all been a big part of my creative life since school. Other than that, it was all garage bands and orchestral playing.

Do you have any specialisms in your programming?

Audio digital signal processing (DSP) and machine learning is where I’ve been doing most of my work for the last few years. Audio signal processing, in particular, is an interesting field to write code, because you often have hard real-time constraints.

Do you hold degrees in music, computer science, or something else?

I have a BM and MM from the University of Michigan and New England Conservatory, respectively, and a MS in acoustics from Rensselaer Polytechnic Institute.

What influence, if any, does your musical background have on your programming, and vice versa?

The idea of solving a problem by breaking it down in to small steps that are manageable is something that I learned first in music and applied to engineering. You learn pieces by note, then measure, then phrase, etc. until you’ve learned the whole thing. Sometimes you can do that all in sequence. Sometimes you parallelize parts of it. You start with nothing and end up with music. Building software feels the same way.

Aside from music and software, what other hobbies or pursuits do you have?

I’m lucky to live in Seattle, where it’s reasonable to be outside every day of the year so I do a lot of running and I used to bike commute before the pandemic. My wife and I have also recently gotten into playing tennis which has been another humbling episode of trying to learn an entirely new skill from scratch.

What would you say to a musician considering a career change into programming?

There are a lot of great resources online to try it out to see if you like it, but try to go beyond a web-based tutorial like Codacademy. Part of the job is writing code, but you also spend significant amounts of time on documentation, environment set-up, testing, version control, debugging and refactoring. Make sure those parts are at least tolerable. It doesn’t need to be a big thing, but try something from the ground-up once.

I’d also say that programming is a HUGE field and can look very different depending on your company or field. Working at a start-up will be different than working at a FAANG company. Insurance companies and airlines all need software developers whose jobs will look very different. IC1 at a small company will have very different responsibilities than IC1 at a Fortune 500. It’s important to keep in mind that the portrayal of software engineering in the media or on blogs or youtube is only a tiny slice of things, if it even exists at all.

And finally, what advice would you give your younger self when you started programming?

Program to solve a problem you care about. I wasted a lot of time hemming and hawing about learning C vs JS vs Python and doing tutorials that weren’t really practical. The activities that have been most educational have been the ones where I can contextualize WHY I’m learning the things I am and how they can be applied.Also, seek out people you trust that you can ask for help (this is good advice for my current and future self too).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s