TextEdit (macOS) settings:
1. “New Document” → “Format” → “Plain text.”
2. “Open and Save” → “When Opening a File” → “Display HTML files as HTML code instead of formatted text.”
Webpages — all in the same iCloud Drive folder named “justin-reeves”:
1. TextEdit .html files — including “index.html” (becomes the home page or apex domain, in this case “justin-reeves.net”).
2. .png (image) files — Apple’s Photos app’s files have to be “exported.”
3. a TextEdit .xml (RSS 2.0) file (“rss.xml”).
E-mail: iCloud Mail with iCloud+ custom domain name — e-mail @ justin-reeves.net, not @ icloud.com.
Domain name (web address) registrar: Cloudflare.
Web server (host): Cloudflare Pages.
Cloudflare Pages:
1. “Direct Upload,” not GitHub.
2. Graphical interface, not command-line interface (Wrangler).
3. “select from computer,” not “drag and drop.”
4. “upload folder,” not “upload zip.”
(“Dashboard” @ Dash.Cloudflare.com → “Workers & Pages: Overview” → “justin-reeves” (my Cloudflare project’s name) → “Create deployment” → “select from computer” → “Upload folder” → “justin-reeves” (my iCloud Drive folder’s name) → “Upload.”)Web design: W3Schools’ “TryIt Editor” and CodePen’s “Pen.”
Cost: $24/year — $1/month for iCloud+, $12/year for my Cloudflare domain.
Had to disable Cloudflare’s “Parking Page” before I could “upload folder” (deploy site) to server.
Had used .htm — not .html — but Cloudflare didn’t redirect justin-reeve.net/index.htm to justin-reeves.net, justin-reeves.net/me.htm to justin-reeves.net/me, etcetera.
justin-reeves.net/rss.xml doesn’t redirect to justin-reeves/rss, so I set two (of three free) Cloudflare permanent “URL forwarding” “Page Rules” (justin-reeves.net/rss and justin-reeves.net/rss/* to justin-reeves.net/rss.xml).
The asterisk after the slash is a “wildcard” that, in this case, captures domains that include “justin-reeves.net/rss/” — but not domains without the “trailing slash” after “justin-reeves.net/rss” — for example: “justin-reeves.net/rss-is-not-dead-yet” — .
Redirect Cloudflare subdomains — www.justin-reeves.net, static.justin-reeves.net, etcetera:
1. “Dashboard” (@ Dash.Cloudflare.com) → “Account Home / Websites” → “Select a domain: justin-reeves.net” (“Overview”) → “DNS: Records” → “Add record” → “Type: CNAME” → “Name: *” → “Target: @” → “Save.”
2. “Dashboard” (@ Dash.Cloudflare.com) → “Account Home / Websites” → “Select a domain: justin-reeves.net” (“Overview”) → “Rules: Page Rules” → “Create Page Rule” → “URL: *.justin-reeves.net/*” → “Setting: Forwarding URL” → “status code: Permanent Redirect” → “destination URL: https://justin-reeves.net” → “Save & Deploy.”
1. Verified with Google Search Console: “URL-prefix property,” not “Domain property”; “HTML tag,” not “HTML file upload.” (Didn’t want to download the file, nor keep an extra file.)
2. Another TextEdit .xml file (“sitemap.xml”) in the iCloud Drive folder.
3. Sitemap (https://justin-reeves.net/sitemap.xml) and RSS (https://justin-reeves.net/rss.xml) URLs pasted into Search Console.
4. Imported Search Console sitemaps into Bing Webmaster. (Used “Sign in with Google.”)
Cloudflare:
1. “Always Use HTTPS: on.”
2. “Basic Features: on.”
3. “SSL/TLS encryption mode: Full (strict).”
1. Changed Page Rule (“justin-reeves.net/rss” targets “justin-reeves.net/rss.xml” now “justin-reeves.net/*.htm” targets “https://justin-reeves.net”).
2. Deleted Page Rule (“justin-reeves.net/rss/*” targets “justin-reeves.net/rss.xml”).
3. Kept Page Rule (“*.justin-reeves.net/*” targets “https://justin-reeves.net”).
Two (of ten free) “Redirect Rules”:
1. “Rule name: Redirect from rss and rss/* to rss.xml” → “Custom filter expression” → “Field: URI Full” → “Operator: wildcard” → “Value: *justin-reeves.net/rss” → “Or” → “Field: URI Full” → “Operator: wildcard” → “Value: *justin-reeves.net/rss/*” → “Type: Static” → “URL: https://justin-reeves.net/rss.xml” → “Status code: 301” → “Deploy.”
2. “Rule name: *justin-reeves.net/*/*” → “Custom filter expression” → “Field: URI Full” → “Operator: wildcard” → “Value: *justin-reeves.net/*/*” → “Type: Static” → “URL: https://justin-reeves.net/” → “Status code: 301” → “Select order: custom” → “Select which rule this will fire after: Redirect from rss and rss/* to rss.xml” → “Deploy.”
Redirect “*.pages.dev” (“justin-reeves.pages.dev” for project named “justin-reeves”) URLs to custom domain (“justin-reeves.net”):
1. “Bulk Redirects” → “Create Bulk Redirect List” → “Name: pages_dev” → “Source URL: https://justin-reeves.pages.dev” → “Target URL: https://justin-reeves.net” → “Status: 301” → “Edit parameters: Include subdomains, Subpath matching” → “Save.”
2. “Bulk Redirects” → “Create Bulk Redirect Rule” → "Rule name: pages_dev” → “Redirect . . . list: pages_dev” → “Save & Deploy.”
Used the “Markup Validation Service” of the W3C (World Wide Web Consortium).
Discovered that button tags “nested” within link tags are considered “invalid errors” (despite working in browsers).
Wrapping button tags with link tags creates a link that looks like a button but with no colored and underlined “link decoration.”
Wrapping link tags with button tags also works, but is also considered an error, and, by default, does have link decoration (can be removed).
Solution was to remove button tags, remove link decoration, and style links to look like buttons.
Errors part of a broader class of “nested interactive controls,” for example: a button inside another button (when I tested this, the browser made two — separate — buttons).
I don’t know why the convention was adopted, some discussion I found came across circular: it’s not standard because it’s invalid, and not valid because non-standard.
But most emphasize possible problems with keyboard navigation and / or screen reading software (albeit unclear if the problems were created by its adoption).
Was (finally) able to add the full HTML “content” to an RSS 2.0 item’s description by using an online HTML encoding tool someone published on (Microsoft’s) GitHub Pages.
(W3Schools’ RSS article fails to mention how to do it.)
But then was able to figure out how to use CDATA (Character Data) instead (putting all the HTML between “<![CDATA[” and “]]>”).
A “CDATA-ed” HTML heading, for example:
<item>
<link>
https://justin-reeves.net/hell-towers
</link>
<description>
<![CDATA[
<h1>Let Hell-Towers Fall</h1>
]]>
</description>
(Title is optional when there’s a description, description is optional when there’s a title.)
Fixed “RSS autodiscovery” — being able to subscribe (to a RSS .xml file from a .html page) using a browser extension, for example: the free “Subscribe to Feed” extension for Safari from the free NetNewsWire for Mac app — not available through the Mac App Store (despite having iPhone & iPad App Store apps).
Mistake was using the absolute (justin-reeves.net/rss.xml) rather than relative (rss.xml) URL (for “href=”).
<head>
<link rel="alternate" type="application/rss+xml" href="rss.xml" title="justin-reeves.net">
</head>
(Couldn’t get RSS autodiscovery to work in Safari from justin-reeves.net/rss [.xml] itself, but it can still be subscribed to from there by using Safari’s “Share” button [ꜛ].)
NetNewsWire’s “Subscribe to Feed” button can only autodiscover one feed to add to NetNewsWire, but a webpage might have autodiscovery for more than one — for example, it might (for better or for worse) have RSS’d its “comments” (“pursuant to Section 230”).
(“RSS Button for Safari” — “$0.99,” Mac App Store — can autodiscover such things as those.)
“HTML Editors” @ W3Schools.com
¶ “XML RSS” @ W3Schools.com
¶ “TryIt” @ W3Schools.com
¶ “Pen” @ CodePen.io
¶ “Deploy Your [Cloudflare] Project” @ Cloudflare.com
¶ “Disable Landing Page” @ Cloudflare.com
¶ “URL Forwarding” @ Cloudflare.com
¶ “Wildcard DNS Records” @ Cloudflare.com
¶ “Wildcard Matching” @ Cloudflare.com
¶ “Search Console” @ Google.com
¶ “Types of Website Properties” @ Google.com
¶ “Sitemaps XML Format” @ Sitemaps.org
¶ “Webmaster” @ Bing.com
¶ “Redirecting *.pages.dev to a Custom Domain” @ Cloudflare.com
¶ “Create [Bulk Redirects] in the Dashboard” @ Cloudflare.com
¶ “Matching the Source URL of Redirects” @ Cloudflare.com
¶ “Markup Validation Service” @ W3.org
¶ “HTML Encode / Escape” @ GitHub.io
¶ “Really Simple Syndication Best Practices” @ RSSBoard.org
¶ “NetNewsWire” @ NetNewsWire.com
Nov 2024