Let's Speak The Open Web (and stay readable by everyone)
Wired up microformats, webmentions, WebSub, and ActivityPub on my blog, tightened feeds and Open Graph, and kept pushing accessibility — so it talks to the open web without losing the humans.
For a while my blog had the usual stuff: HTML, RSS, a few alternate formats. That was fine. Then I started wanting it to play nicer with the rest of the indie web — without bolting on a heavy CMS or a pile of JavaScript.
So I spent some time wiring up the boring, important protocols. The ones that don’t trend, but keep the web a web.
Feeds, but properly
RSS 2.0 was already here. I cleaned it up, kept Atom and JSON Feed in sync, fixed Open Graph so each post has its own URL and metadata instead of always pointing at the homepage, and made sure tags and authors show up where they should. Small things. They matter when a reader or a feed reader is picky.
Microformats
Posts are proper h-entrys now. The blog list is an h-feed. Titles, authors, dates, content, tags, canonical URLs — in the HTML itself, no scripts. If something wants to parse my blog the old indieweb way, it can.
Webmention
You can mention my blog from yours, and I’ll get the ping. Mentions are verified (your page has to actually link here) and moderated before they show up — same vibe as comments, not an open spam hose.
And if I link out to someone, I can check a “Webmention” box when I publish and notify them. Not automatic on every save — only when I mean it.
WebSub
Feeds advertise a hub. Subscribers can get push updates when something new goes out, instead of polling forever. The boring infrastructure of “new post, please wake up.”
ActivityPub
My blog has a fediverse actor now. You can try finding @arazgray@arazgray.com from Mastodon and friends. Follows, likes, boosts, replies — the basics. Posts can go out as Create activities. It’s modular enough that I can grow it later without rewriting the whole blog.
I’m not trying to replace a full Mastodon instance. I just don’t want my blog to be a dead end when the rest of the network talks ActivityPub.
Accessibility (the quieter half)
Same project, different angle: make my blog usable for more people, not just more protocols.
Semantic HTML where it counts. Skip link to main content. Real labels on forms. Focus styles you can actually see. visually-hidden text where icons need context. Prefer reduced motion when someone asks for it. Alternate formats still exist — TXT, MD, RAW, INK, PDF — because “accessible” isn’t only screen readers; it’s also old devices, weird browsers, and people who just want the words.
I still joke about making the most accessible blog in the world. I’m not there. But the direction is intentional: open standards for machines, careful HTML for humans.
Why bother
Because I don’t want this place to only work inside one company’s app. Because feeds still matter. Because a personal site can talk to other personal sites without a central landlord. And because if you’re going to put words on the internet for twenty years, you might as well make them findable, shareable, and readable by as many people and tools as possible.
No new frontend framework. No SPA. Just Laravel, queues, and some care.
If you run a site that supports webmentions, link here and say hi. If you federate, follow along. If you just came for the post — the HTML still works the old-fashioned way. That’s the point.