wholeconductors

How the placeholder is put together. Such as it is.

wholeconductors.com is a domain parked for an inside joke — a nod to a Bulgarian politician's remark about building a factory for semi-conductors this year, and whole ones next. A few of us find it funnier than is probably defensible. One day it'll host something real. Until then, the site is a single portrait and one sentence in Bulgarian.

Below is a tour of how that is assembled, mostly so future-us remembers where everything is. I should warn you that this is a great deal of reading for a page that ultimately serves one JPEG and twelve words of Cyrillic. Do carry on, though. Don't mind me.

Repo layout

wholeconductors/
├── public/                 # everything served at wholeconductors.com — static
│   ├── index.html           # the whole site: dark page, portrait, Bulgarian
│   │                        #   quote; tap the quote → English gloss appears
│   ├── about/index.html     # this page
│   └── portrait.jpg         # the man himself — also used as favicon + og:image
├── docs/
│   └── deployment.md        # rsync recipe + nginx notes, the only ops knowledge#   that isn't derivable from the code itself
├── .claude/skills/
│   └── using-exe-dev.md     # exe.dev cheat-sheet, mirrored across sibling repos
├── CLAUDE.md                # TOC / index of docs — kept short on purpose
├── README.md                # what this is + file layout
└── .gitignore

No build step. No framework. 23 lines of CSS, one image, twelve words of Bulgarian. The HTML is lovingly hand-typed, which is more than anyone asked for.

How a change reaches the world

Laptop edit + rsync (openrsync over ssh) Cloud VM nginx on :8000 /var/www/wholeconductors/ exe.dev edge TLS + public HTTPS auto cert rsync port 8000 proxy wholeconductors.com
Laptop edit + rsync (openrsync over ssh) rsync Cloud VM nginx on :8000 /var/www/wholeconductors/ port 8000 proxy exe.dev edge TLS + public HTTPS auto cert wholeconductors.com

exe.dev terminates TLS at its edge for every hostname that resolves to a running VM, so there's no certbot here and nothing to renew. nginx inside the VM does hostname-based routing among the other, mostly more purposeful, sites that share the box. Life is hard enough without having to rotate TLS certs by hand.

Three places the code lives

Working copy ~/code/wholeconductors Primary — bare repo on the Mac on my desk Backup — bare repo another Mac, same LAN github — private cloud backup git pushall (Primary first, then Backup, then github)
git pushall from the working copy, in order 1. Primary — bare repo on the Mac on my desk 2. Backup — bare repo another Mac, same LAN 3. github — private cloud backup

Three remotes for a one-page joke site, I know. The pattern is recycled across several of my repos — one bare repo on each of two physical Macs (fast and offline-durable) and one private copy in the cloud (catastrophe-durable, assuming the cloud also still exists, which one shouldn't assume forever). A global git pushall alias visits all three in order, with the stoic patience of something that has nothing better to do.

The domain

DNS is at Squarespace. Three records do all the work:

DNSSEC is off — Squarespace's ALIAS type (a synthesised apex CNAME) is incompatible with it. You find this out by wanting ALIAS to work, then having it not work. Which is also a serviceable summary of most things.

Updating the live site

From the repo root:

chmod -R u=rwX,go=rX public/
rsync -avz --delete \
  --exclude .git --exclude .DS_Store \
  public/ <vm-host>:/var/www/wholeconductors/

The chmod step is there because images pulled off Signal or AirDrop arrive mode 0600; rsync preserves those perms faithfully and nginx (running as www-data) returns 403 on them. macOS ships openrsync which doesn't support an inline --chmod flag, hence the pre-step. Nobody should have to know this. Everyone eventually does.