What I’m building.
Notes on the systems running in production here, written as they ship.
18 Sept 2026AETHER
My bot said it was working. It wasn't.
A vlog I posted on 2 September never got clipped. When I asked AETHER's Strategist bot about it, it told me three times over 34 minutes that it was on it.
There was no job. Nothing was running.
The cause was in the bot's own instructions. It never looked at the job queue, and one line told it not to call the pipeline idle unless the latest event said so. The latest event was a successful run from August. So it filled the silence with progress that didn't exist.
The fix: the bot now reads the real list of active jobs, recent jobs and videos it has seen, and it's forbidden from claiming work that isn't on those lists. Ask it the same question today and it says: "I don't have a job for that video — I never picked it up either."
That's the answer I want. A confident "I'm on it" that isn't true is worse than an honest no.
18 Sept 2026Websites
A proper home for client demos
When I reach out to a business, I often build them a demo first so they can see the result instead of imagining it. Each new demo used to need a server config change.
Now demos live at demos.aetherai.pro, one folder per business. A new demo is a folder drop. Nothing else to touch.
Every demo is set to noindex, so a business's mockup never turns up in Google before they've said yes to it.
17 Sept 2026Websites
Ask AETHER goes live
The Ask AETHER button on this site is a real sales agent, not a contact form in disguise. It answers questions about what I build and records the enquiry so nothing gets lost in a DM thread.
How it's wired: your browser only ever talks to this site. The site passes the request server-to-server to the sales system, which writes to the database. The sales system itself isn't reachable from the internet at all, and session tokens are stored scrambled, never in plain form.
The first release rejected every real visitor with "Your session expired." A security check compared where the browser said it was coming from (a secure https address) with where the app thought it lived (plain http, because the secure connection ends one step earlier at the web server). They didn't match, so every visitor got blocked. All my tests passed anyway, because the testing tool never sends that detail at all.
Fixed by reading the address the web server passes along. Lesson: test the way a real browser behaves, not the way a script does.
16 Sept 2026Lesson
The commits that didn't exist
An earlier AI coding session built a big piece of my sales system and reported it saved, with two commit IDs as proof. Neither ID existed.
The code was real. It was sitting on my laptop, never actually added to version control. One dead laptop away from gone.
I found it by asking for raw terminal output instead of summaries. 437 files committed and pushed, a full folder backup taken, and the whole test suite rerun: 1,465 passed, 0 failed.
The rule now: nothing counts as done until I've seen the actual file, commit or database row. Not a summary of it.
24 Aug 2026Infrastructure
Locking the doors
My server had no firewall. A couple of internal services were reachable from the open internet, including one that showed live system status to anyone who asked for it.
Now it's deny-by-default. Only web traffic and my own login get in, on both IPv4 and IPv6. Skipping IPv6 would have left a side door open. I checked from outside afterwards: the sites stayed up, the internal services went dark.
Same day, I found the live AETHER app had never been under version control. It is now, with passwords, user database backups and 1.5GB of queued video deliberately kept out of its history.
01 Aug 2026AETHER
The YouTube logo that kept turning gray
Google reviewed AETHER against YouTube's API rules and sent back a 9-item report with 7 business days to respond. Five items were real gaps in my terms and privacy pages. I fixed them and they're live. Three already passed.
The last one took days. YouTube's logo showed up gray on my dashboard whenever a channel wasn't being watched, and changing the colour of an official logo breaks the rules. Every fix came back "verified," and every time my screen still showed gray.
The cause: the logo was quietly inheriting the gray text colour of the row it sat in. Checking the image file said red. Checking what the browser actually painted said gray. I'd been verifying the wrong thing.
Now every platform logo has its official colours locked in, in every state. "Not watching" is shown with text and a status dot instead. Response and proof went to Google inside the deadline.
31 Jul 2026Websites
A qualifier so I only talk to serious buyers
Website enquiries now go through a qualifier on Telegram and in a chat on this site. It asks everyone the same things: what the business does, what they need, when, and their budget.
Claude Haiku makes it feel human: a warm greeting and natural replies. But the questions that decide whether someone qualifies are fixed code, not AI judgement. The bot only moves to contract and payment after an explicit "I've signed & paid" button tap. It never guesses from a message. Receipts only go out when I've confirmed the payment myself.
I built a WhatsApp version too. Meta hasn't verified the business yet, so that one's parked.
30 Jul 2026Websites
The 8 checks every site passes
Every site I hand over passes all eight of these first:
- Looks right on a phone. Tested at phone width, no overflow, buttons easy to tap.
- Loads fast. Compressed images, under about three seconds.
- Every link and button works. Phone dials, WhatsApp opens, map opens, form sends. I click all of them.
- Real information only. No placeholder text, correct hours, phone and address.
- Findable on Google. Page titles, descriptions, business name and location in the copy.
- Legal basics. A privacy note if the site collects anything, and rights to every image used.
- Proofread. One typo on a business site costs trust.
- Works in real browsers. Chrome and Safari, desktop and phone, before it goes out.
Jul 2026AETHER
Why a 2-hour stream took 2 hours to clip
A 1.9-hour video took 1 hour 52 minutes to turn into clips. Too slow, so I measured every stage instead of guessing.
Transcription: 36 seconds. Finding the clips: about 15 seconds. The time was going on downloading each clip's section of the video separately.
Downloading the whole file ran about 13 times faster than grabbing it section by section. Running more section downloads at once made things slower, not faster.
The plan: download once, cut the clips locally, delete the source straight away. One more test on a full-size video before I switch it over.
19 Jul 2026AETHER
I deleted 138 clips
Cleaning up after a test run, I ran a delete command aimed at the whole clips folder instead of just that test's files. 138 clips gone in one line. Server backups weren't switched on. 39 of them couldn't be recovered.
What changed:
- Nothing in AETHER deletes files directly anymore. Files go to a trash folder and are only removed after 7 days.
- Folder-wide deletes on clips are banned in the rules every coding session reads before it starts.
- Server backups are on.
- The 39 lost clips show as "File unavailable" in the dashboard instead of broken players. No pretending they're still there.