1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-09-19 20:02:10 +00:00

Check and fix broken links

This commit is contained in:
Rohan Kumar 2022-06-17 20:36:35 -07:00
parent b3b50d2ee3
commit fba366ca11
No known key found for this signature in database
GPG key ID: 1E892DB2A5F84479
13 changed files with 84 additions and 22 deletions

1
.gitignore vendored
View file

@ -12,3 +12,4 @@ public_*/
.hugo_build.lock
csv/webrings.csv
results/
linter-configs/htmltest/

View file

@ -52,6 +52,14 @@ validate-json:
validate-html:
$(VNU) --stdout --format json --skip-non-html --also-check-svg $(OUTPUT_DIR) | sh scripts/filter-vnu.sh
.PHONY: htmlproofer
htmlproofer:
htmlproofer $(OUTPUT_DIR) --disable-external --report-invalid-tags --report-missing-names --report-missing-doctype --report-eof-tags --report-mismatched-tags --check-html --check-opengraph --check-favicon --empty-alt-ignore --file-ignore $(OUTPUT_DIR)/search/index.html --url-ignore '../music.txt'
.PHONY: htmltest
htmltest:
htmltest -c linter-configs/htmltest.yml $(OUTPUT_DIR)
.PHONY: hint
hint: hugo .hintrc-local
hint --config .hintrc-local -f codeframe $(OUTPUT_DIR)

View file

@ -29,7 +29,7 @@ This is a basic [IndieWeb site](https://indieweb.org/) that contains articles, n
About me
--------
The Director's Cut of my bio is at my [About page](/about.html "{itemprop='subjectOf'}").
The Director's Cut of my bio is at my [About page](./about/ "{itemprop='subjectOf'}").
<div class="p-note" itemprop="description">

View file

@ -13,7 +13,7 @@ I read your article and share similar concerns. Using Microsoft Bing and Google
Most of these agreements are confidential, so users don't really get transparency. On rare occasions, certain engines have successfully negotiated exceptions to result-mixing, but we don't know what other terms are involved in these agreements.
I've catalogued some other engines in my post {{<mention-work itemprop="citation" itemtype="BlogPosting">}}{{<cited-work name="A look at search engines with their own indexes" url="../../../../../posts/2021/03/10/search-engines-with-own-indexes/" extraName="headline">}}{{</mention-work>}}, and there are many alternatives that don't have this conflict of interest.
I've catalogued some other engines in my post {{<mention-work itemprop="citation" itemtype="BlogPosting">}}{{<cited-work name="A look at search engines with their own indexes" url="https://seirdy.one/posts/2021/03/10/search-engines-with-own-indexes/" extraName="headline">}}{{</mention-work>}}, and there are many alternatives that don't have this conflict of interest.
Most of these are not as good as Google/Bing when it comes to finding specific pieces of information, but many are far better when it comes to website discovery under a particular topic. Mainstream engines always seem to serve up webpages carefully designed to answer a specific question when I'm really just trying to learn about a larger topic. When using an engine like Marginalia or Alexandria, I can find "webpages about a topic" rather than "webpages designed to show up for a particular query".

View file

@ -10,5 +10,5 @@ replyAuthorURI: "https://tuxcrafting.online/"
---
What do you mean by "false sense of security"? Signal's cryptography is pretty solid. It's one of the only messengers with such a lack of metadata leakage; if you combine it with Tor you can add enough noise to the network-layer metadata to be more private than almost any alternative.
Don't get me wrong, [I dislike it on the grounds of being a closed platform](../../../../../posts/2021/01/27/whatsapp-and-the-domestication-of-users/), but few alternatives exist that support both offline messaging and have such little metadata leakage. I'm willing to hear suggested alternatives that do not bake a "cryptographically-secure, decentralized pyramid scheme" (cryptocurrency) into the protocol. I'm not aware of any such alternative at the moment.
Don't get me wrong, [I dislike it on the grounds of being a closed platform]({{<relref "/posts/whatsapp-and-the-domestication-of-users">}}), but few alternatives exist that support both offline messaging and have such little metadata leakage. I'm willing to hear suggested alternatives that do not bake a "cryptographically-secure, decentralized pyramid scheme" (cryptocurrency) into the protocol. I'm not aware of any such alternative at the moment.

View file

@ -271,7 +271,7 @@ Some search engines are integrated into other appliances, but don't have a web p
- Apple's search engine is usable in the form of "Siri Suggested Websites". Its index is built from the Applebot web crawler. If Apple already has working search engine, it's not much of a stretch to say that they'll make a web interface for it someday.
- Amazon bought Alexa Internet (a web traffic analysis company, at the time unrelated to the Amazon Alexa virtual assistant) and discontinued its website ranking product. Amazon still runs the relevant crawlers, and also have [a bot called "Amazonbot"](developer.amazon.com/support/amazonbot). While Applebot powers the Siri personal assistant, Amazonbot powers the Alexa personal assistant <q cite="https://developer.amazon.com/support/amazonbot">to answer even more questions for customers</q>. Crawling the web to answer questions is the basis of a search engine.
- Amazon bought Alexa Internet (a web traffic analysis company, at the time unrelated to the Amazon Alexa virtual assistant) and discontinued its website ranking product. Amazon still runs the relevant crawlers, and also have [a bot called "Amazonbot"](https://developer.amazon.com/support/amazonbot). While Applebot powers the Siri personal assistant, Amazonbot powers the Alexa personal assistant <q cite="https://developer.amazon.com/support/amazonbot">to answer even more questions for customers</q>. Crawling the web to answer questions is the basis of a search engine.
Graveyard
---------

View file

@ -1450,8 +1450,8 @@ This article is, and will probably always be, an ongoing work-in-progress. Some
* Keyboard-driven browsers and extensions. Qutebrowser, Luakit, visurf, Tridactyl, etc.
* Ways to support non-mainstream and older browsers by supporting subsets of specifications and using progressive enhancement.
* Avoiding "_blank" targets in URLs unless absolutely necessary.
* Ways to improve comprehension by readers who struggle to understand non-literal language (certain manifestations of cognitive disabilities, non-native speakers unfamiliar with idioms, etc.). I might wait until this WAI draft specification matures and its vocabularies gain adoption before going in depth:
=> https://w3c.github.io/personalization-semantics/help/index.html Personalization Help and Support 1.0
* Ways to improve comprehension by readers who struggle to understand non-literal language (certain manifestations of cognitive disabilities, non-native speakers unfamiliar with idioms, etc.). I might wait until this WAI- draft specification matures and its vocabularies gain adoption before going in depth:
=> https://www.w3.org/TR/adapt-help/ WAI-Adapt: Help and Support Module
## Conclusion
@ -1563,7 +1563,7 @@ A special thanks goes out to GothAlice for the questions she answered in #webdev
³ Here's an overview of PE and my favorite write-up on the subject.
=> https://en.wikipedia.org/wiki/Progressive_enhancement Progressive Enhancement (Wikipedia)
=> https://whalecoiner.com/articles/progressive-enhancement Yes, progressive enhancement is a fucking moral argument
=> https://web.archive.org/web/20220316060312/https://whalecoiner.com/articles/progressive-enhancement Yes, progressive enhancement is a fucking moral argument
⁴ Each of these flows can be visually displayed using a breadcrumbs list; doing so can meet a AAA WCAG criterion:

View file

@ -1110,7 +1110,9 @@ Readers with hand tremors depend on this space to scroll without accidentally se
{{<image-figure>}} {{<picture name="touch_targets" alt="List of rectangles with a 56 pixel wide square to its left, filling negative space.">}}
<figcaption itemprop="caption">
I made sure to leave enough non-interactive space in <a href="../../../../#webrings">my homepage&rsquo;s webring list</a> to accommodate a 48&nbsp;px tap target, with extra space in between.
I made sure to leave enough non-interactive space in [my homepage's webring list]({{<relref "/_index.md#webrings" >}}) to accommodate a 48&nbsp;px tap target, with extra space in between.
</figcaption>
{{</image-figure>}}
@ -1500,7 +1502,7 @@ This article is, and will probably always be, an ongoing work-in-progress. Some
* Avoiding `_blank` targets in URLs unless absolutely necessary.
* Ways to improve compre&shy;hension by readers who struggle to understand non-literal language (certain cognitive disabilities, non-native speakers unfamiliar with idioms, etc.). I might wait until the <abbr title="Web Accessibility Initiative">WAI</abbr> <cite>[Personali&shy;zation Help and Support 1.0](https://w3c.github.io/personalization-semantics/help/index.html)</cite> draft specification matures and its vocabularies gain adoption before going in depth.
* Ways to improve compre&shy;hension by readers who struggle to understand non-literal language (certain cognitive disabilities, non-native speakers unfamiliar with idioms, etc.). I might wait until the <cite>[WAI-Adapt: Help and Support Module](https://www.w3.org/TR/adapt-help/)</cite> draft specification matures and its vocabularies gain adoption before going in depth.
* Other accessible writing tips, maybe after I get a copy of <span class="h-cite" itemprop="mentions" itemscope="" itemtype="https://schema.org/Book">{{<cited-work name="Writing Is Designing" url="https://rosenfeldmedia.com/books/writing-is-designing/">}} by {{<indieweb-person first-name="Michael" last-name="Metts" url="https://mjmetts.com/" itemprop="author">}} and {{<indieweb-person first-name="Andy" last-name="Welfe" url="https://www.andy.wtf/" itemprop="author">}}</span>. A relevant excerpt on writing accessibly is [on A List Apart](https://alistapart.com/article/standards-for-writing-accessibly/).<!--Hugo does something weird when I use my mention-work shortcode here.-->
@ -1601,7 +1603,7 @@ A special thanks goes out to GothAlice for the questions she answered in <samp>#
[^2]: Some addons will have reduced functionality; for instance, [Tridactyl](https://github.com/tridactyl/tridactyl) can't create an `<iframe>` for its command window. I consider this to be worthwhile since the most important functionality is still available, and because authors shouldn't feel compelled to support security weakening. I say this as someone who uses Tridactyl often.
[^3]: Here's an [overview of PE](https://en.wikipedia.org/wiki/Progressive_enhancement) and [my favorite write-up on the subject](https://whalecoiner.com/articles/progressive-enhancement).
[^3]: Here's an [overview of PE](https://en.wikipedia.org/wiki/Progressive_enhancement) and [my favorite write-up on the subject](https://web.archive.org/web/20220316060312/https://whalecoiner.com/articles/progressive-enhancement).
[^4]: Each of these flows can be visually displayed using a breadcrumbs list; doing so can meet the WCAG [Success Criterion 2.4.8: Location](https://w3c.github.io/wcag/understanding/location.html). I opted to meet the criterion a different way. Since all my pages are linked by my site's global navigation or my "posts" page (also in the global navigation), I just used `aria-current` and made the currently-relevant entry in my global navigation a `<strong>` element.

View file

@ -1,3 +1,4 @@
{{- $wbmLinks := (slice "https://si3t.ch/log/2021-04-18-entetes-floc.html" "https://xmpp.org/2021/02/newsletter-02-feburary/") -}}
<hr />
<section aria-labelledby="webmentions">
<h2 id="webmentions" tabindex="-1">Webmen&#173;tions</h2>
@ -14,6 +15,10 @@
{{ $webmentions := (getJSON $url1) | append (getJSON $url2) -}}
{{ range sort $webmentions "created_at" -}}
{{ $webmention := . -}}
{{- $src := $webmention.source -}}
{{- if in $wbmLinks $src -}}
{{- $src = printf "https://web.archive.org/web/0/%s" $src -}}
{{- end -}}
{{ if (eq $webmention.type "like") -}}
<div itemprop="potentialAction" itemscope="" itemtype="https://schema.org/LikeAction" class="u-like h-cite">
{{- else -}}
@ -35,11 +40,11 @@
{{ else if $webmention.title -}}
<span itemprop="name" class="p-name">{{ $webmention.title -}}</span>
{{ else -}}
{{ $webmention.source -}}
{{ $webmention.source | strings.TrimPrefix "https://" | strings.TrimPrefix "www." | strings.TrimRight "/" | truncate 35 -}}
{{ end -}}
<a class="u-url" itemprop="url" href="{{ $webmention.source }}" rel="nofollow ugc">liked</a> this
<a class="u-url" itemprop="url" href="{{ $src }}" rel="nofollow ugc">liked</a> this
{{ else -}}
<a class="u-url" itemprop="url" href="{{ $webmention.source }}" rel="nofollow ugc">
<a class="u-url" itemprop="url" href="{{ $src }}" rel="nofollow ugc">
<span itemprop="name" class="p-content p-name">
{{ if $webmention.title -}}
{{ $webmention.title | truncate 200 -}}

View file

@ -0,0 +1,46 @@
DirectoryPath: "public"
IgnoreDirs:
- "search"
CacheExpires: "48h"
CheckFavicon: true
EnforceHTML5: true
IgnoreAltMissing: true # an empty alt makes presentation-role explicit, it's not a defect.
EnforceHTTPS: true
IgnoreHTTPS:
- "http://192.168.1"
- "http://localhost:"
- "http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion"
- "http://bettermotherfuckingwebsite.com/"
- "http://dtrace.org/"
- "http://emacspeak.sourceforge.net/"
- "http://herpolhode.com/"
- "http://io.netgarage.org/me/"
- "http://linter.structured-data.org/"
- "http://optipng.sourceforge.net/"
- "http://renaissancechambara.jp/"
- "http://techrights.org/"
- "http://www.nathanmyhrvold.com/"
- "http://www.tuxmachines.org/"
- "http://xmlns.com/"
CheckExternal: true
IgnoreURLs:
- "../music.txt"
- "^gemini://.*"
- "mailto:.*"
- "git@git.*"
- "http://[^/]*.onion.*"
- "https://archive.is.*"
- "https://ogp.me/ns.*"
- "https://seirdy.one/webmentions/.*"
- "http://creativecommons.org/ns.*"
- "https://seirdy.one/search/.*"
- "https://jacky.wtf/.*" # site is down i think
- "https://fediring.net/(previous|next)" # redir
- "https://forum.palemoon.org/.*" # manual check: blocks crawlers
- "https://queue.acm.org/detail.*" # manual check: blocks crawlers
- "https://www.geocities.ws/jaup/jaup.htm" # manual check: blocks crawlers
- "https://plausible.io/blog/google-floc#" # manual check: I block this domain
- "https://twitter.com/" # manual check: 404 for some reason, using curl works fine.
- "https://bugs.debian.org/cgi-bin/bugreport.cgi" # manual check: 400 for some reason, using curl works fine.
- "https://forum.kuketz-blog.de/" # manual check: blocks crawlers
OutputDir: "linter-configs/htmltest"

View file

@ -1,8 +0,0 @@
insecure = true
method = "get"
exclude = [
"^gemini://.*",
"mailto:.*",
"git@git.*",
".*.onion.*",
]

View file

@ -59,7 +59,8 @@ while getopts "hb" flags; do
esac
done
# HTML validation is already parallelized, so run that single-threaded.
make -j1 HUGO_FLAGS=-DF HUGO_BASEURL="$base_url" clean hugo xhtmlize validate-html
make -j2 -f Makefile.online lint-css axe equal-access URLS="$(curl "$base_url/sitemap.xml" | htmlq loc -t | rg -v '/search/$' | tr '\n' ' ')"
make -j2 -f Makefile.online htmltest validate-json axe equal-access lint-css htmlproofer URLS="$(curl "$base_url/sitemap.xml" | htmlq loc -t | rg -v '/search/$' | tr '\n' ' ')"
# vi:ft=sh

7
scripts/bin/firefox Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env dash
set -eu
/opt/firefox-dev/firefox --headless $*
# vi:ft=sh