1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-11-23 21:02:09 +00:00

Compare commits

...

3 commits

Author SHA1 Message Date
Rohan Kumar
4b42a8686d
Support running axe-core with Firefox 2022-06-17 20:54:05 -07:00
Rohan Kumar
8c8b2fe51b
Exclude date-less pages from feeds 2022-06-17 20:53:19 -07:00
Rohan Kumar
fba366ca11
Check and fix broken links 2022-06-17 20:36:35 -07:00
17 changed files with 89 additions and 25 deletions

1
.gitignore vendored
View file

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

View file

@ -52,6 +52,14 @@ validate-json:
validate-html: validate-html:
$(VNU) --stdout --format json --skip-non-html --also-check-svg $(OUTPUT_DIR) | sh scripts/filter-vnu.sh $(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 .PHONY: hint
hint: hugo .hintrc-local hint: hugo .hintrc-local
hint --config .hintrc-local -f codeframe $(OUTPUT_DIR) hint --config .hintrc-local -f codeframe $(OUTPUT_DIR)

View file

@ -26,6 +26,8 @@ redbot:
redbot_cli -a $(URL) redbot_cli -a $(URL)
axe: axe:
axe $(URLS) --chrome-options $(CHROME_FLAGS_COMMA) --chromedriver-path=$(CHROMEDRIVER_PATH) --show-errors axe $(URLS) --chrome-options $(CHROME_FLAGS_COMMA) --chromedriver-path=$(CHROMEDRIVER_PATH) --show-errors
axe-ff:
PATH=scripts/bin:$(PATH) axe $(URLS) -b firefox --show-errors
equal-access: equal-access:
@echo $(URLS) | tr ' ' '\n' >urls.txt @echo $(URLS) | tr ' ' '\n' >urls.txt
achecker --reportLevels violation,recommendation,potentialrecommendation urls.txt achecker --reportLevels violation,recommendation,potentialrecommendation urls.txt

View file

@ -29,7 +29,7 @@ This is a basic [IndieWeb site](https://indieweb.org/) that contains articles, n
About me 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"> <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. 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". 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. 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. - 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 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. * 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. * 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. * 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: * 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 => https://www.w3.org/TR/adapt-help/ WAI-Adapt: Help and Support Module
## Conclusion ## 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. ³ 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://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: ⁴ 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.">}} {{<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"> <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> </figcaption>
{{</image-figure>}} {{</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. * 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.--> * 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. [^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. [^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

@ -3,7 +3,7 @@
{{- $title := .Section | humanize -}} {{- $title := .Section | humanize -}}
{{- if .IsHome }} {{- if .IsHome }}
{{- $title = "All content" -}} {{- $title = "All content" -}}
{{- $pages = .Site.RegularPages -}} {{- $pages = where .Site.RegularPages "Date" "!=" (time "0001-01-01") -}}
{{- $period = "hourly" -}} {{- $period = "hourly" -}}
{{ end -}} {{ end -}}
{{- if eq .Section "notes" -}} {{- if eq .Section "notes" -}}

View file

@ -13,7 +13,7 @@
{{- if .IsHome }} {{- if .IsHome }}
{{- $period := "hourly" -}} {{- $period := "hourly" -}}
{{- $title = "All content" -}} {{- $title = "All content" -}}
{{- $pages = .Site.RegularPages -}} {{- $pages = where .Site.RegularPages "Date" "!=" (time "0001-01-01") -}}
{{- $mins = "60" -}} {{- $mins = "60" -}}
{{ end -}} {{ end -}}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }} {{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}

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 /> <hr />
<section aria-labelledby="webmentions"> <section aria-labelledby="webmentions">
<h2 id="webmentions" tabindex="-1">Webmen&#173;tions</h2> <h2 id="webmentions" tabindex="-1">Webmen&#173;tions</h2>
@ -14,6 +15,10 @@
{{ $webmentions := (getJSON $url1) | append (getJSON $url2) -}} {{ $webmentions := (getJSON $url1) | append (getJSON $url2) -}}
{{ range sort $webmentions "created_at" -}} {{ range sort $webmentions "created_at" -}}
{{ $webmention := . -}} {{ $webmention := . -}}
{{- $src := $webmention.source -}}
{{- if in $wbmLinks $src -}}
{{- $src = printf "https://web.archive.org/web/0/%s" $src -}}
{{- end -}}
{{ if (eq $webmention.type "like") -}} {{ if (eq $webmention.type "like") -}}
<div itemprop="potentialAction" itemscope="" itemtype="https://schema.org/LikeAction" class="u-like h-cite"> <div itemprop="potentialAction" itemscope="" itemtype="https://schema.org/LikeAction" class="u-like h-cite">
{{- else -}} {{- else -}}
@ -35,11 +40,11 @@
{{ else if $webmention.title -}} {{ else if $webmention.title -}}
<span itemprop="name" class="p-name">{{ $webmention.title -}}</span> <span itemprop="name" class="p-name">{{ $webmention.title -}}</span>
{{ else -}} {{ else -}}
{{ $webmention.source -}} {{ $webmention.source | strings.TrimPrefix "https://" | strings.TrimPrefix "www." | strings.TrimRight "/" | truncate 35 -}}
{{ end -}} {{ 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 -}} {{ 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"> <span itemprop="name" class="p-content p-name">
{{ if $webmention.title -}} {{ if $webmention.title -}}
{{ $webmention.title | truncate 200 -}} {{ $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 esac
done 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 -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 # 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

View file

@ -15,5 +15,5 @@ cleanup() {
trap cleanup EXIT trap cleanup EXIT
export XMLLINT_INDENT=' ' export XMLLINT_INDENT=' '
time -p find "$output_dir" -type f -name '*.html' | xargs -n1 sh "$script_dir/xhtmlize-single-file.sh" find "$output_dir" -type f -name '*.html' | xargs -n1 sh "$script_dir/xhtmlize-single-file.sh"
# done # done