God Awful Font

Your Program Is an Interpreter

"Your program is an interpreter", I once posited to a concerned engineering manager who called me to complain that her team's application failed for the first time in a long time.

This manager owned a critical data processing job that failed that morning. This job ran inside a virtual machine, and since I was the on-call person that week for the hypervisor, she thought to give me a call.

She explained that the program had not changed recently, and the job had been running for ages with no issue, so she wondered if maybe my team had changed the hypervisor. I thought "why is she calling me?". The error message didn't obviously implicate the hypervisor. There were a lot of other layers between her team's application code and the hypervisor, including the language interpreter (for a home-grown data management language), a home-grown ISAM file format and accompanying libraries, and the operating system that runs inside the VM.

I asked, somewhat petulantly, if the data in the input file changes from day to day. She confirmed that was the case. So I said something along the lines of: "Your application is a language interpreter, and your input files are programs. Some input files may take your bespoke interpreter down a combination of paths it has not travelled before". I didn't know the word bespoke back then, but that was the gist of what I actually said.

I am not sure where I got that idea, but it popped into my head that morning. I'm not even sure it holds up to scrutiny. I think what I meant was: if your input data changes, then your program's behavior potentially changes with each run. And that, I think, does hold up to scrutiny.

She was skeptical, but she decided that I wasn't the magic bullet solution and hung up. I never heard back, thus I assumed her team fixed the issue (or it never happened again).

At the time, before I had enough experience under my belt to understand how little I actually knew, I thought I was hot shit, so I felt perfectly justified in dismissing her concerns with a pseudo-dictum.

I got my comeuppance a year or so later when I made a similarly confident claim that an application failure (for a different application than the one above) was caused by a bug in the operating system (the one that runs inside the virtual machine). The on-call person for the operating system eventually proved that the bug was in the hypervisor, which helped to moderate my hubris a little.