Filed under

The Simplest Version

By Benjamin Evans

Here is what I was planning to put behind a bathroom mirror:

A 220-volt defogger pad from AliExpress. A Mean Well constant-voltage LED driver. Three meters of high-CRI 2835 LED strip at 120 LEDs per meter. An ESP32 microcontroller running custom ESPHome firmware. An MPR121 capacitive touch sensor wired through conductive copper tape to pads epoxied to the back of the glass, sensing finger presses through the mirror's reflective coating, which I would need to scrape off in a precise strip using a razor blade. A Hi-Link AC-to-DC converter to power the ESP32 from mains. A MOSFET to let the ESP32 control the 24-volt LED circuit. A Shelly relay module to switch the 120-volt defogger independently. Wago lever connectors in an old-work junction box. Fourteen-gauge pigtails. And a Lutron Sunnata dimmer hidden behind the mirror frame, communicating over RF to the RadioRA 3 processor in the garage, so the LEDs could participate in whole-home lighting scenes.

Total parts per mirror: twelve components, not counting wire. Estimated cost: $219. Estimated time behind each mirror: a full afternoon of wiring, soldering, configuring, and praying that capacitive touch sensing works reliably through glass with a partially scraped metallic coating in a humid room.

I was building two of these.

How it got there

The project started reasonably. I had Romex behind each bathroom mirror, run down to the garage where a Lutron switch controlled it. I wanted two things: LED lighting around the mirror perimeter, tied into the Lutron system for scene control, and a defogger pad that could be toggled independently via a touch interface on the glass.

These are not unreasonable goals. They're the kind of thing you see in a hotel bathroom and think, "I could do that." The problem is that "I could do that" is a compound sentence. The "I" part is usually fine. The "that" part keeps expanding.

The defogger needed its own power path because the Lutron switch would kill everything when it turned off. So the Romex had to stay always-hot, with the Lutron dimmer moved downstream to control only the LEDs. But phase-cut dimming from a Lutron device will flicker or kill a constant-voltage LED driver, so the dimmer had to be a specific model that outputs clean AC. But now the defogger needed its own switch, so add a relay module. But the relay needed a trigger, so add a microcontroller. But the touch interface needed to sense through glass, so add a capacitive touch controller. But the mirror's reflective coating is conductive and would interfere with sensing, so scrape it off in a strip with a razor blade and apply copper tape to the exposed glass.

Each decision was locally rational. Each one added a component, a failure mode, and an hour of labor. The BOM grew like a weed.

The voltage problem

Before any of this got built, the AI flagged something I'd missed. The defogger pads I'd ordered were rated 220 volts. My house runs 120. A resistive heater on half its rated voltage doesn't produce half the heat — it produces roughly a third, because power scales with the square of the voltage. The pads would get warm. They would not defog a mirror after a shower.

This is the kind of mistake that costs a weekend. You wire everything up, turn it on, wait, and nothing happens, and you don't know why because nothing is broken — it's just physics. The product listing said 220V in a font size I apparently did not read. The AI read it.

The question that killed the project

Several conversations into the design — after we'd discussed MOSFET gate logic, ESPHome YAML configs, capacitive touch calibration, and the relative merits of TTP223 modules versus MPR121 breakout boards — the AI asked a question that I should have asked at the beginning:

What if a commercially available mirror already has built-in LEDs, a built-in defogger, and a built-in touch controller?

I found one in twenty minutes. A JSneijder 24-by-36-inch LED mirror, black frame, with perimeter LEDs, integrated defogger, touch controls for brightness and color temperature, and — this was the detail that mattered — a memory function that resumes to its last ON state when power is restored.

That last spec is the one that makes everything else disappear. If the mirror remembers that it was on at 4000K and 80 percent brightness when the power went away, then the Lutron switch in the garage becomes the only control I need. Lutron on, mirror on. Lutron off, everything dead. Touch the mirror to toggle the defogger. Set the brightness once and forget it.

One product. One cable. Zero additional parts.

$149.99.

What I gave up

CRI. The strips I'd specced were CRI 95 — laboratory-grade color rendering, the kind that makes skin tones look accurate under artificial light. The mirror's built-in LEDs are CRI 80, which is what you get in most commercial lighting. The difference is real. Put them side by side and you'd see it. In isolation, in a bathroom, at the vanity — you wouldn't.

I also gave up scene-integrated dimming. The mirror dims via its own touch panel, not via Lutron. The Lutron system can turn it on and off but can't set it to 30 percent for a shower scene or 5 percent for a nightlight. That was the whole reason for the Sunnata dimmer, the MOSFET, and the ESP32.

These are real losses. I felt them. The custom build was more capable, more integrated, more technically interesting. It was also twelve components per mirror, two afternoons of labor, and a maintenance surface that would outlive my patience.

Subtraction as a skill

There is a bias in making culture toward complexity. The more components, the more custom, the more hand-built, the more impressive. A commercially available mirror is not a project. You can't write a blog post about plugging something in. (And yet.)

The AI didn't have this bias. It didn't care that I'd spent five conversations designing a capacitive touch interface through scraped mirror coating. It didn't care that the ESP32 firmware was clever, or that the architecture was elegant, or that the BOM was a testament to my ability to source obscure components from AliExpress. It asked whether the goal was to build something interesting or to have a mirror that defogged.

This is an uncomfortable question when you're the kind of person who likes building interesting things. The answer, in a bathroom, is that I want a mirror that defoggs. My daughter will stand on a stool at this mirror someday and brush her teeth. She will not care about CRI. She will care that the mirror is not foggy after her bath.

The hardest version of "from idea to object" is the one where the object already exists and the idea was overbuilt.

What the AI actually did

In the previous essays in this series, the AI helped me design a custom part that didn't exist, engineer a piece of furniture, and plan a fabrication process. Those are additive contributions — the AI helped me build more, build better, build with more confidence.

Here, the AI did the opposite. It helped me stop. Not by telling me to stop — it was perfectly willing to keep designing the custom build, and it did, for several rounds. It helped me stop by answering my questions so precisely that the gap between what I was building and what I needed became impossible to ignore.

The $511 BOM was a solution to a $150 problem. The twelve components per mirror were eleven more than necessary. The ESPHome firmware, the capacitive touch interface, the MOSFET gate drive — all of it was real engineering, and none of it was needed.

I bought two mirrors. I hardwired them to the Romex. I set the brightness to 80 percent and the color temperature to 4000K. I have never touched the settings again. The defogger works when I press the glass. The lights come on when the Lutron scene says "bathroom."

The most useful thing the AI did in this entire renovation was not help me build something. It was help me notice that I didn't have to.