Question: Why did every solution that relied on a name eventually fail?

I thought names were good identifiers.

They weren't.

I didn't realize I was fixing the same bug three times.

Not because the bugs looked similar.

Because they didn't.


I was building a shared backend to connect a video editor and an analytics dashboard — two separate tools that needed to agree on what a "project" was. Every time I needed to answer a simple question — is this the same thing I saw before? — my first instinct was the same: check the name.

It felt obvious every time. It broke every time.

First time: the filename

The editor exported projects as downloadable JSON files. To reconnect exported projects to YouTube videos, I kept a lookup table based on filenames.

It looked obvious.

Until a title changed. Rename the file, and the lookup breaks — the system now thinks it's looking at a project it has never seen before.

I hadn't picked a fragile key.

I'd picked one that was designed to change.

Second time: the same filename, twice

Later, I needed a way to avoid registering the same project twice. The fix seemed simple: if a file with this name is already registered, reuse its ID instead of creating a new one.

That also broke — in a more embarrassing way. Two completely different projects, created independently, happened to share a title. The second one silently inherited the first one's identity. The system could no longer tell them apart.

Names change. Languages change. Identifiers don't.

Third time: "Favorites"

The last one was smaller, but it was the same shape. I needed to filter a legacy system-generated playlist out of a dropdown, so I checked whether its title was "Favorites".

That's an English label. The channel this system runs on publishes in Korean. The moment YouTube's UI locale changes, that title changes with it — and the filter silently stops working, with no error, no warning, just a stray playlist quietly showing up where it shouldn't.

The label wasn't the playlist.

It was just one possible way YouTube chose to display it.

Even the original filename-based lookup eventually disappeared entirely. Instead of trusting filenames, I started trusting the YouTube API itself — asking it directly which playlists were system-generated, instead of guessing from a label.

What I kept doing wrong

The interesting part wasn't that I fixed three bugs.

It was that they were actually the same bug.

Every one of them came from the same shortcut: reach for something a human already reads — a filename, a title — and let the system treat it as if it were permanent. Every one of them broke for the same reason: the human- readable version of something and its identity are not the same thing, and nothing forces them to stay in sync.

The fix was never a better filename.

Or a better title.

It was to stop trusting names altogether.

A name is for people.

An identity is for systems.

Sometimes the real work isn't fixing bugs.

It's realizing they all came from the same wrong assumption.


Wrong assumption: human-readable names (filenames, titles) are stable enough to use as identifiers Discovery: a name and an identity are different things — only one of them survives being renamed Next step: the second time this happened was the strangest one — two unrelated projects colliding under one name. That's its own story, coming next.