Mistake recovery

The year was 2021. The month was February. The day was Sunday. I don't remember why, but I sat down at my desk and despite my tightly-held personal "no work email on the weekend" policy, I opened my work email.

I found a short email thread from my web designer counterpart, our manager, and our director. A person applying for a job with our company left us a note in the contact form, informing us that our website appeared to be tampered with because an odd string was appearing on every form on the site.

The discussion had already concluded by the time I read it, deciding it was likely a phishing attempt or a phishing test, and besides, no one could see the string the person claimed to find.

I shave with Occam's Razor as often as the next person but, while rare, sometimes the correct explanation isn't the simplest. Outliers exist. The outlier in this situation?

The phrase "fart noises."


I'd just finished up a big project updating the forms on the company's website.

These forms were my baby, a thing I'd built with love and intention over ten years, to work the way we needed them, crossing all the compliance boxes and doing the spam prevention while still providing a frictionless sign-up flow no matter the context.

This project became particularly frustrating when I had to account for geo-based fields and messaging. If I couldn't tell whether something was working, I needed a signal in the front-end to let me know.

Most developers have their go-to test strings. "Hello world." "Test123." "This worked."

Me? My test strings worked on an escalating scale that reflected my annoyance and desperation. Let us think of it as a form of developer catharsis.

At the start of a project, my test strings look a lot like the previous standard fare, but when something is giving me a headache, I switch to "fart noises." Because that's what is in my heart. The problem feels like a fart noise. Hell, as the headache reaches a migraine, a curse word or two may even make an appearance, but no matter the level of annoyance they reflected, they are cleaned up in the end in a find-and-replace two-step.

Except I forgot to do that two-step this go around.

Two years out, I can try and fail to scrape every last square inch of my brain to find why or how I forgot, but to mangle a cliché, it is what it was.


The second I read "fart noises" in the email that Sunday afternoon, I opened the site repo and searched. Found it in the global form partial used on every page, tucked inside a conditional block that would only show it to visitors outside of the United States.

Naturally, no one in that email thread thought to check from a proxy connection. "If it wasn't appearing," they may have thought, "it had to be made-up."

Within minutes of reading the email, I somehow managed to reply, "Sorry to dampen the mood, but they're right. That is one of my test strings. It made it out of testing and QA. I'm pushing out a fix right now to remove it. I am mortified."

My early-morning meeting with our Chief Marketing Officer was cut short by a (100% unrelated) config error by our MSP that took our website offline. But based on conversations that followed, I was going to get it. What "it" was, I'll never know, but I was going to get it.

I'd never made a mistake like that. It was embarrassing—for me, and for the company. Calling out specific examples feels cruel, but we've all heard stories of dropped tables in production, we've watched DNS remind everyone that it's not here to make friends. Somehow, more than a decade into my career, I'd managed to avoid writing a story of my very own.

Then I farted on the marketing website of a well-known, well-respected security software company.

This is the part of the Blog Post™ where you're probably expecting some key takeaways, what lessons were learned, other thought-leadership type stuff. Maybe the announcement of an open-source QA solution inspired by this incident. Something.

But that’s not what we’re here to do today.

Maybe more eyes in the stakeholder review cycles would have prevented this.

Maybe a tighter QA process would have prevented this.

Maybe a better work-life balance would have reduced the pressure and helped me to—

—but none of those things were in place. It happened.

I could have tried harder.

I could have cared more.

I could have—

—AND YET. I worked hard. I cared deeply. And it happened.

I farted on a website.

The perfect QA process doesn't exist.

Mistakes will happen.

It wasn't the result of a personal shortfall.

Mistakes will continue to happen.

And when they do, remember, that mistake is already in the past. So, how do you respond in the present?


  1. Endless thanks to my dear friend Hayes for reading this ahead of my pressing "post."🍓