A story’s been making the rounds about a software project that enforced a no-LLM-use policy by using prompt injection to delete itself. An “AI” agent-using coder filed a bug report (understandable), but filled it with a bunch of long-winded, clearly LLM-generated comments.

I looked at those comments. I can’t say I read them, because my eyes started glazing over a couple of paragraphs in. The contrast with the posts by the maintainer and other commenters is…stark.

Though I did notice the bit about how nobody reads the docs, which seems rather telling.

One of the problems with letting an “AI” write for you: If you aren’t reading it, and you assume the person at the other end is just going to summarize it anyway, there’s no motivation to make it readable. And no motivation to think about it and narrow down what’s important. And if you’re rewriting the prompt to focus on what matters most, consider that the prompt would get the idea across more effectively.

I remember a brief period shortly after Instagram introduced in-feed advertisements when I was getting mostly travel ads that consisted of well-composed scenic landscapes and cityscapes and sponsored nature photos. Which…well, was fine! They blended in with all the scenic and nature photographers I was following! I almost hit “like” on a few!

Back in 2017, I wasn’t sure whether to be disturbed, or to look at it in terms of XKCD’s idea of constructive spambots. (Mission accomplished? Maybe, but looking back from today, that’s basically what “generative AI” does, and it turns out it’s still disturbing.)

It’s probably the only time I’ve come close to appreciating targeted advertising. It was possible to use just context and not full behavioral surveillance, and it actually surfaced something worth seeing.

That said, I never clicked through to arrange a trip through any of the posts. Apparently, it was ineffective across the board, because as I mentioned, that period was brief. (Targeted advertising doesn’t work as well as its proponents claim, and oh how I wish it hadn’t become the standard method of paying for online services.)

By 2019 I was seeing big box stores and fast food, crackers and cold medicine, movie posters, brand logos and slogans. They weren’t even trying. It was fully Facebook-ified, they were mining as much of my data as they possibly could, and this was the best they could do? Plus, by then they’d also tweaked the feed algorithm to push more ads, more sponsored posts, more allegedly-popular posts instead of the pictures from friends and photographers I wanted to see. In short, it no longer sparked joy.

Instagram had the chance to be like a magazine, with ads that at least align with the content, but the more Facebook tried to monetize it, the more jarring and blatant the ads became, and the more they were based on what Facebook thinks it knows about you instead of trying to fit with your actual interests based on what’s posted by the people you’re following.

That’s around the time I mostly shifted to Pixelfed for casual photo sharing. I cross-posted for a while, but eventually deleted my account after leaving it unused for several years. Since then I’ve moved from Pixelfed to a compatible self-hosted site.

From what I’ve read, Instagram has continued to double-down on shoveling ads/sponsored content/influencers (now with more AI!) since then. I haven’t felt like dipping my toe back in. Though I have on occasion tried to visit some local business’ online presence only to discover that all they have is an Instagram account…which I can’t see because Instagram hates the open web (and always has, even before Facebook bought them).

And yet I’m still on Flickr. As much as it lost its way during the Yahoo years, it never stopped being about the photos.

I’m considering starting the 100 Days To Offload challenge to post 100 times to my personal blog over the next year. I’m going to include any new posts I make on my personal website, including the tech tips and reviews sections (which is where I’ve mostly been writing these days). I could mirror those posts over here, but that seems kind of silly, since they all show up in my main site’s feed anyway. (They’ll also get combined in the sitewide 100daysToOffload tag list.)

It’s been a while since I did one of these challenges. A long while: The last one was probably when I tried to do NaBloPoMo in 2018 (blog daily during November, sort of a companion challenge to NaNoWriMo) and dropped it after a few days. This one’s longer, but it’s a lot more flexible.

Though I am curious: across my whole website, how many posts have I made over the past year? Only nine on K2R (counting the update round-up, but not counting the individual posts I’ve updated), but it turns out I’ve written 96 reviews since May 23 last year (which is a lot more than I realized!) and 14 troubleshooting articles. So I guess I’ve got a decent shot at hitting 100 again!

I host most of my websites on a DreamHost VPS*. This morning I discovered that a new file had been added, agents.txt, to the root of each site, on May 7.

It was easy to confirm that this is a new default file similar to the default robots.txt and favicon.ico DreamHost puts in every new site to get you started. Apparently they retroactively added it to sites that don’t already have one. So it’s a host action, not a hack. That’s good at least.

The contents are simple, and sensible for a new website: Discourage LLM training and actions, allow on-the-fly “AI”-generated summaries, disallow access to some common folders that shouldn’t be used for any of the above.

Though I am annoyed that they added it retroactively, particularly since it includes what looks like an explicit opt-in to retrieval-augmented generation, even if it’s something that’s happening already and less of a problem than a model vacuuming up your entire website for regurgitation. (Guess who’s already in Common Crawl!)

# Data use policy
Allow-Training: no
Allow-RAG: yes
Allow-Actions: no

# Default rules for all agents
[Agent: *]
Allow: /
Disallow: /admin/
Disallow: /config/
Disallow: /tmp/
Disallow: /logs/
Disallow: /backup/
Disallow: /.env
Disallow: /wp-admin/
Disallow: /wp-includes/

Harder to find was what else goes in this file. The first agents.txt spec I found used a completely different syntax and a completely different purpose. I had to search for the policy directives (in quotation marks) to find the proposal it’s implementing, which turns out to have been renamed as agent-manifest.txt shortly after it was proposed in March. Apparently whoever DreamHost didn’t get the memo before it rolled out. Update: As Patryk points out below, it’s changed again to agents-brief.txt, just one day after the blog post was updated with the second name. .

Good: sensible defaults for new sites.
Bad: rolled out to existing sites without notice, half-baked implementation.

*Update: To clarify, this is on DreamHost’s managed VPS service, where they handle the OS and the webserver, but you have a flexible userspace all to yourself. It’s a middle ground between shared hosting (where other sites are on the same virtual machine and webserver) and fully run-your-own-OS cloud hosting, and the balance generally works for me (YMMV).

Since I started with the whole garden-and-stream thing a few years back, I’ve taken to updating existing posts instead of writing new ones when following up. That’s great for someone looking back at the old post from the future, but it doesn’t help anyone who’s following along.

So here are some pages I’ve updated recently:

The whale sculpture recovered from Marineland still hasn’t been installed at Point Vicente, a decade after it was approved, probably due to the higher-than-expected cost for restoring it. In trying to find out what happened with the sculpture, I discovered that Sea World’s midnight orca heist was actually worse than previous articles had suggested.

Camera shop with windows painted with American Gothic with six feet of social distancing and face masks, and a thank you message to front line heroes in scrubs.The camera shop with its masked American Gothic mural from the early months of Covid has since been demolished, along with a nearby bowling alley, to make way for a blocky lump of “luxury apartments.” Silvio’s still hasn’t found a new retail location, but they’ve been running an online/phone business out of a warehouse unit.

Anaheim GardenWalk is still around (even the Johnny Rocket’s!) 10 years after House of Blues moved in, though it’s still got a lot of empty spaces on its map.

I created a tiny subset font for *-and-a-half-star reviews, updating the how-to article with how I did it and updating my reviews pages to use it.

Torrance S-Mart closed a while back, and is now a Grocery Outlet.

The same wall again. It's another sunny day, and a narrow shadow streaks diagonally across the bricks. This time, the Spider-Man climbing out of the upper-level window is bright blue and red, no signs of scratches, but the Superman silhouette at ground level is gone, replaced with a featureless white door-sized rectangle and a rather verbose sign that boils down to No Trespassing.The Spider-Man mural has been touched up at the former Dream World Comics building, though Superman changing in a phone booth has been painted over.

I finally got around to building a combined tag list for the blog and other parts of my website.

Bookshop.org’s app actually runs on my newer e-reader, though it still has trouble running offline. Which, I mean, it’s for reading books. This should be a first-class use case.

Way back in the year 2000, I bought a domain name to move my personal website from the school web server to someplace I could keep it visible after graduating. I picked Hyperborea.org from an adventure movie I’d seen years earlier, wanting something that sounded fantastic but wasn’t Atlantis, which had already been done to death (and besides, it was taken). In 2002, I set up the first version of this blog, running on b2/cafelog. At the time, Katie and I both posted here. She later moved to LiveJournal, then stopped blogging, then set up again at Feral Tomatoes.

Somewhere along the line I bought KVibber.com and set it up to redirect to my main site. Then in 2022 I rebuilt it as a simple Indieweb-style profile, figuring that while Hyperborea was a digital home, it really wasn’t a digital identity. I’ve been using that in various online profiles ever since, but kept most of the actual stuff on the existing site while I dithered over what to keep where.

Eventually I decided I wanted to move over to the newer domain.

The Eleventy parts were easy: I just needed to change some parameters and rebuild. The hand-crafted parts were relatively easy: global search and replace.

And of course redirecting each section to the new site as I moved it.

Search indexes are slowly shifting over. Google so far has decided to keep pointing to some of the older pages even though those pages redirect to the new ones.

The blog…is complicated. WordPress and ClassicPress use a database for some things and files for others. Plus I’m using the ActivityPub Plugin to make the blog visible on the Fediverse, which brings its own set of complications. I was relieved to see that copies of posts previously federated at the old site do in fact show up correctly on the new site’s Fediverse view.

One thing I decided on early on: I was going to use a subdomain this time instead of a folder, because too many things (some plugins, .well-known files, etc) assume your blog is running at the top level of the site.

I did a first pass Wednesday night to copy the files and database, set up the new config, run all those search-and-replace actions, and kick the metaphorical tires. Since then I’ve been spot-checking things here and there, and the new site seems fine so far.

I tried running the ActivityPub migration, but it doesn’t seem to have sent any followers over. And when I look at the old @kelson profile in Mastodon, it says it’s moving to…@kelson, instead of to @k2r. Most likely it’s either an incompatibility with ClassicPress or another problem with running in a subfolder. Update: I gave it another stab the next day, but it failed again. There were only about 5 followers, so I figured it wasn’t worth the trouble. I issued a self-destruct on the old ActivityPub view, waited for it to run, and set up the old site to redirect to the new one.

Better Late Than Never

I’m kicking myself for taking so long. I should’ve just moved wholesale over to KVibber.com back in 2022. By waiting until 2026, I’ve left the new location without proof of having existed before the slop era. (I’m still writing articles myself, not using an “AI,” so all the mistakes in this post are my own.) Unless someone looks up the old hyperborea.org version of a page on the Wayback Machine, but they shouldn’t have to know to do that.

But the old name is awkward and hard to spell, and apparently some of the creepy groups that have weird obsessions with the myths it came from are more substantial than the historical footnotes I thought they were back in the day.

Last night the whole family got into a multiplayer Minecraft game for the first time in a while. Weirdly enough, *one* system was showing way to many materials as copper. Even stuff like snow. WTF?

Well, we realized it was after 7 PM local time, which meant on UTC time it was already April 1, so it must be this year’s April Fool’s joke for Minecraft. (Or in this case, one of the mods.) But why only on one computer?

Then it hit me: The host was a Windows machine, which means the hardware clock is set to local time (instead of being set to UTC and just displaying local time). I was connecting from a Linux box that dual-boots, so I’d long since set the hardware clock to local time so Windows wouldn’t fight with it. The one showing all copper, all the time, was a Mac, which doesn’t dual boot, and uses Unix under the hood, so its hardware was set to UTC, and it was the only computer of the three that was already running in April 1.