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.

I’ve been using the excellent ActivityPub Plugin for WordPress to connect this blog to the Fediverse for several years now, and it keeps getting better. The plugin makes any WordPress blog also work like a Mastodon server, so you can follow and interact from any site running Mastodon, Akkoma, Pixelfed (image posts only, of course), Snac or my favorite, GoToSocial.

Last year some features started breaking on here as WordPress and ClassicPress diverged, and I put some stop-gap fixes in place. I never quite got around to debugging it in my spare time, though. So I was very happy to see that starting with the 7.8.3 release a couple of weeks back, ActivityPub for WordPress now explicitly checks for ClassicPress to fall back to a compatibility mode!

You still need to trick it into thinking it’s on WordPress 6.5 or later (ClassicPress 2 split off from WordPress 6.2), but the latest version fixes all the problems I’d been working around on this site, including broken comment forms and missing images on the Fediverse view of a post.

Update: I missed a scenario with filtering comment authors in comment_reply_link. I’ve manually worked around it for the moment, and when I have a chance I’ll either do a proper bug report or suggest a proper fix.

So I’d like to give a shout-out to Matthias Pfefferle and the ActivityPub Plugin team and say: thanks for fixing it!

And if anyone reading this wants to connect their WordPress or ClassicPress site directly to the Fediverse (rather than just cross-posting or auto-posting links), this plugin is still the best way to do it.

On a related note…

I finally got around to fixing Share Classicly so it won’t add its link to the Fediverse view of a post. (Aside from cutting the clutter, boosting would make more sense anyway.) That’s the plugin I made that adds a ShareOpenly link to each post, so your readers can share to a Micropub, Mastodon, Bluesky, etc. account.

In retrospect, it’s wild that so many tech people who were hyper-aware of the fact that Microsoft’s dominance in the 1990s and 2000s was due to more to marketing (“never underestimate Microsoft on marketing”) than technical merits…fell for the idea that a “marketplace of ideas” would coalesce around the best ideas, and not just the loudest ones.

»All pages site-wide with this tag