Gaslight Bugs

17 May 2025

Gaslight bugs

A "gaslight bug" is one where the software not only doesn't work, it makes the user doubt their own mind. It's a profoundly unpleasant experience.

I searched Photos.app for a photo I remember taking, using a word I remember putting in the caption. It did not appear in search results. The app claimed that it did not exist and had never existed.

It does exist. I was there. Wasn't I?

After some searching, I eventually found it via brute-force scrolling. It turns out this is a particularly insidious Photos.app bug: If you search for a person's name, even if that name appears in the photo caption, if Apple's AI magic doesn't think their face is in the photo, it will be silently dropped from the results.

This is a particularly offensive bug1 not just because of the effect on the user's sanity, but because it exhibits what I'm going to call "condescending software" - software that behaves in undocumented, inconsistent and irrational ways because it thinks it knows better than the user.

Entering xyzzy into a search box MUST return all objects where I have explicitly added xyzzy to the metadata. If due to the relentless enshittification of software, it needs to also display "additional results created by opaque AI slop like 'guessing what you meant by xyzzy' or 'inferring xyzzy by spying on the image content'", that should be clearly labelled and in addition to the actual data I ordered.

Before we start working on anything we claim to be "truly intelligent", how about we focus on the level of intelligence required to faithfully follow simple instructions?

Every complaint is a project

Obviously, my first thought was "this software is defective and untrustworthy and I should write a replacement". It turns out that this is non-trivial because PhotoKit - an apparently 'mature' API - does not support retrieving or setting photo captions. At all!

I think the rot is deeper, though. Possibly because of Photokit's lead, none of the half-dozen or so photo management apps I tried supports captions. (A two-inch-wide textbox hidden in a submenu, displaying maybe two or three words at once, does not count as 'supports'). Are people just not writing about their photos? Or maybe about anything?

I don't understand this logic. For a photo more than a few years old, if it doesn't have a caption, I find it useless. There's no context - even if it has an accurate date- and location- stamp, there's not enough information about what's going on, why it's going on, how I'm feeling, or what the bigger picture is. This counts double if it's a snapshot, taken in a couple of seconds without thought or framing, designed to act as a memory key without pulling me out of the moment.

In most UIs, the type of camera used to take the shot - which could not possibly be less interesting - is more prominent than anything I've written about it.

A picture without a thousand words is useless. So, obviously, I'm building my own photo management tool called Thousand Words.

Here are the design constraints:

  • Truthful: If a photo isn't shown in the search results, it's because it didn't match the search.

  • Literate: Enables, and expects, you to write captions. Captions are not hidden away in a tiny box wide enough for three words; they have unlimited length and are displayed front-and-center.

  • Integrated: Uses iCloud / PhotoKit. While "folder full of jpgs, synced with rclone" is objectively superior, we are unfortunately stuck with the walled garden at this time. Has no authoritative storage of its own, only a cache/index (which is kept up to date, and using the software is disabled while it is updating).

  • Fast: Every action other than 'search' is complete within 100ms. 'Search' has a maximum of 1000ms2.

  • Tidy: Every piece of data on the screen has a reason to be there. No ads, no visual clutter, and no animations.

  • Quiet: The software displays an interface and awaits your orders, which it then carries out immediately. If you don't do anything, it doesn't do anything.

  • Correct: Click on any piece of data to change it - inline, immediately. If data cannot be edited, then errors can't be fixed, which means the data is untrustworthy, which means that it should not be shown.

  • Unsurprising: Simple enough that you are able, and expected, to understand everything it does. Simple data model with two screens in total. No magic, no fuzzy-matching, no attempts to infer what you 'want' it to do rather than what you ordered it to do.

  • Trustworthy: Any AI feature is clearly marked and requires manual activation. No AI features are visible in the user interface unless "enable AI features" is turned on in the settings menu, and it defaults to off.

  • Forthright: Does not patronise you with fake progress bars3, "helpful tips"4, mandatory onboarding, or sycophancy.

  • Private: Does not know, or care, who you are. Has no concept of 'login' or 'signup'. Does not use the network.

  • Stable: No automatic updates. Possibly no updates at all5. Buy it once; this software will not change underneath you.

It is entirely possible that the total market size for this application is one user. That's okay.

I'm still right.

--

Footnotes

  1. I can reproduce this bug 100% of the time, and I've found a workaround using "smart albums". I have not bothered to report it; I don't have any confidence that that would make a difference.

  2. Up to a maximum library size of 1tb. Let's be reasonable here.

  3. Actually no progress bars at all, because any operation that takes more than 1000ms results in an application crash, a bug report, and a refund.

  4. Here's a tip: read the manual. If you want. And not because some app is shoving it in your face.

  5. Including compatibility updates. If some future version of OSX breaks this application, that's on Apple, that's not on me.