mirror of
https://git.sr.ht/~seirdy/seirdy.one
synced 2024-11-27 14:12:09 +00:00
Compare commits
No commits in common. "1329678af123edbb341c0bcca969929dd709a045" and "d5b19a0d72e56e0c92744b237ce39da1fbc3a5ce" have entirely different histories.
1329678af1
...
d5b19a0d72
11 changed files with 15 additions and 116 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -11,4 +11,3 @@ public/
|
||||||
public_*/
|
public_*/
|
||||||
.hugo_build.lock
|
.hugo_build.lock
|
||||||
csv/webrings.csv
|
csv/webrings.csv
|
||||||
results/
|
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -43,13 +43,8 @@ lint-css: $(CSS_DIR)/*.css
|
||||||
pnpm -s dlx stylelint --config linter-configs/stylelintrc.json --di --rd --rdd $(CSS_DIR)/*.css
|
pnpm -s dlx stylelint --config linter-configs/stylelintrc.json --di --rd --rdd $(CSS_DIR)/*.css
|
||||||
@#csslint --quiet $(CSS_DIR)
|
@#csslint --quiet $(CSS_DIR)
|
||||||
|
|
||||||
.PHONY: validate-json
|
.PHONY: lint-html
|
||||||
validate-json:
|
lint-html:
|
||||||
jq -reM '""' $(OUTPUT_DIR)/manifest.min.*.webmanifest 1>/dev/null
|
|
||||||
jq -reM '""' $(OUTPUT_DIR)/webfinger.json 1>/dev/null
|
|
||||||
|
|
||||||
.PHONY: 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: hint
|
.PHONY: hint
|
||||||
|
@ -58,7 +53,7 @@ hint: hugo .hintrc-local
|
||||||
rm .hintrc-local
|
rm .hintrc-local
|
||||||
|
|
||||||
.PHONY: lint-local
|
.PHONY: lint-local
|
||||||
lint-local: validate-html validate-json lint-css
|
lint-local: lint-css lint-html
|
||||||
|
|
||||||
# dev server, includes future and draft posts
|
# dev server, includes future and draft posts
|
||||||
.PHONY: serve
|
.PHONY: serve
|
||||||
|
|
|
@ -19,16 +19,12 @@ hint-online:
|
||||||
hint --config linter-configs/hintrc -f codeframe $(URL)
|
hint --config linter-configs/hintrc -f codeframe $(URL)
|
||||||
lighthouse:
|
lighthouse:
|
||||||
mkdir -p $(CHROME_PROFILE)
|
mkdir -p $(CHROME_PROFILE)
|
||||||
CHROME_PATH=$(CHROME_PATH) CHROME_PROFILE=$(CHROME_PROFILE) JS_FLAGS='' lighthouse $(URLS) $(LIGHTHOUSE_ARGS)
|
CHROME_PATH=$(CHROME_PATH) CHROME_PROFILE=$(CHROME_PROFILE) JS_FLAGS='' lighthouse $(URL) $(LIGHTHOUSE_ARGS)
|
||||||
rm -rf $(CHROME_PROFILE)
|
rm -rf $(CHROME_PROFILE)
|
||||||
redbot:
|
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
|
||||||
equal-access:
|
|
||||||
@echo $(URLS) | tr ' ' '\n' >urls.txt
|
|
||||||
achecker --reportLevels violation,recommendation,potentialrecommendation urls.txt
|
|
||||||
rm urls.txt
|
|
||||||
|
|
||||||
all: lighthouse hint-online
|
all: lighthouse hint-online
|
||||||
|
|
||||||
|
|
|
@ -293,12 +293,6 @@ input[type="hidden"] {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove list style from data feeds. */
|
|
||||||
main[itemtype="https://schema.org/DataFeed"] > ol {
|
|
||||||
padding: 0;
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Narrow screens: long words can cause content to flow out of the
|
/* Narrow screens: long words can cause content to flow out of the
|
||||||
* viewport, triggering horizontal scrolling. Allow breaking words in
|
* viewport, triggering horizontal scrolling. Allow breaking words in
|
||||||
* content I don't control (comments, names). For content I do control,
|
* content I don't control (comments, names). For content I do control,
|
||||||
|
|
|
@ -19,9 +19,6 @@
|
||||||
h2 + a,
|
h2 + a,
|
||||||
/* You can't navigate in a printout. */
|
/* You can't navigate in a printout. */
|
||||||
footer,
|
footer,
|
||||||
/* splitting up sections with <hr> is unnecesary if those
|
|
||||||
* sections are removed */
|
|
||||||
body > hr,
|
|
||||||
nav a:not([rel="home"]) span {
|
nav a:not([rel="home"]) span {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
title: "Internet Explorer is almost gone"
|
|
||||||
date: 2022-06-15T19:49:39-07:00
|
|
||||||
replyURI: "https://social.treehouse.systems/@ayushnix/108482319254719524"
|
|
||||||
replyTitle: "There's no good reason to use Internet Explorer anywhere."
|
|
||||||
replyType: "SocialMediaPosting"
|
|
||||||
replyAuthor: "Ayush Agarwal"
|
|
||||||
replyAuthorURI: "https://microblog.ayushnix.com/"
|
|
||||||
---
|
|
||||||
I want to agree, with one caveat: if you're a government or healthcare website you might still want to test with IE-mode to make sure critical functionality is at least _usable_. There are still companies that require you to use their sites in Internet Explorer with compatibility mode (emulates either IE 7 or IE 5, depending on some properties of the markup/headers). [QuickBooks Desktop 2022](https://quickbooks.intuit.com/learn-support/en-us/help-article/install-products/system-requirements-quickbooks-desktop-2022/L9664spDA_US_en_US) and [PEACH](https://www.theregister.com/2022/01/07/defra_peach_only_works_internet_explorer/). And as long as some software requires IE and there exist people who want to use one browser for everything, there will be people who set it as their default browser.
|
|
||||||
|
|
||||||
You'll probably need to support it if you have a log-in page that can be summoned when someone uses you as an OAuth provider; lots of software uses IE libraries to render the log-in window, and those aren't going anywhere. Internet Explorer isn't in Windows 11, but the `.dll` files for this are.
|
|
||||||
|
|
||||||
IE is still supported for <abbr title="Long Term Support Channel">LTSC</abbr> and government editions of Windows, and on Windows 7 <abbr title="Extended Security Updates">ESU</abbr>.
|
|
||||||
|
|
||||||
I'm not really concerned with IE support, but I test with IE-mode in Edge sometimes. I look up any breakages to see whether they are known to be non-standard IE quirks. If they aren't known quirks, I try to land a standards-compliant fix. The main thing I look for isn't nonstandard behavior, but missing features.
|
|
||||||
|
|
||||||
In other words, I test in IE to make sure my site is robust and uses progressive enhancement, not because I actually want it to work perfectly in IE. The only IE problem in my site is SVG rendering (a perfectly compliant SVG shrunk to a smaller size in HTML retains its original size in IE, but cropped with hidden overflow) and a lack of support for `<details>`. Turns out, basically every independent, non-mainstream, currently-active browser engine lacks `<details>` support except for Servo, so I might have to start looking into fallback approaches.
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ I think this post is correct, strictly speaking. I also feel like it misses the
|
||||||
|
|
||||||
Lots of people are less concerned with avoiding identification than they are with reducing the amount of data collected about them. For example, if they sign into an account that's linked to their real identity, they fully expect to be identified by the site. However, if the site contains Facebook and Google trackers, they would rather not run those because they harm the user rather than help.
|
Lots of people are less concerned with avoiding identification than they are with reducing the amount of data collected about them. For example, if they sign into an account that's linked to their real identity, they fully expect to be identified by the site. However, if the site contains Facebook and Google trackers, they would rather not run those because they harm the user rather than help.
|
||||||
|
|
||||||
To say that this is not a perfect solution would be an understatement. But when it comes to meeting the goals of such a user, content blocking isn't useless. It straddles the gray area between quality-of-life improvements (blocking content makes pages less unpleasant and heavy) and slight unobtrusive privacy improvements (the majority of sites nowadays still outsource most of their tracking to well-known third parties).
|
To say that this is not a perfect solution would be an understatement. But when it comes to meeting the goals of such a user, content blocking isn't useless. It straddles the gray area between quality-of-life improvements (blocking content makes pages less unpleasant and heavy) and slight unobtrusive privacy improvements (most nowadays sites outsource most of their tracking to known well-known third parties).
|
||||||
|
|
||||||
The ideal approach is obviously to use something like the Tor Browser's "Safest" mode (or perhaps the "safer" mode in a Whonix VM), which doesn't rely on badness enumeration. On that I agree. I personally switch between the Tor Browser for anonymous browsing (anonymity), Chromium for Web apps (security), and Firefox for general non-anonymous browsing (convenience and quality-of-life). Blocking trackers would not make sense for browsing anonymously, but is a slight improvement for non-anonymous browsing. Badness enumeration is of course counterproductive when trying to be fully anonymous.
|
The ideal approach is obviously to use something like the Tor Browser's "Safest" mode (or perhaps the "safer" mode in a Whonix VM), which doesn't rely on badness enumeration. On that I agree. I personally switch between the Tor Browser for anonymous browsing (anonymity), Chromium for Web apps (security), and Firefox for general non-anonymous browsing (convenience and quality-of-life). Blocking trackers would not make sense for browsing anonymously, but is a slight improvement for non-anonymous browsing. Badness enumeration is of course counterproductive when trying to be fully anonymous.
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<p role="doc-tip">
|
<p role="doc-tip">
|
||||||
Timestamp format: <code>YYYY-MM-DD HH:MM</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite>
|
Timestamp format: <code>YYYY-MM-DD HH:MM</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite>
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ul>
|
||||||
{{ $bookmarks := getJSON "https://seirdy.one/data/bookmarks.json" -}}
|
{{ $bookmarks := getJSON "https://seirdy.one/data/bookmarks.json" -}}
|
||||||
{{ range sort $bookmarks "tags" "desc" -}}
|
{{ range sort $bookmarks "tags" "desc" -}}
|
||||||
{{ $bookmark := . -}}
|
{{ $bookmark := . -}}
|
||||||
|
@ -43,6 +43,6 @@
|
||||||
</article>
|
</article>
|
||||||
</li>
|
</li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</ol>
|
</ul>
|
||||||
</main>
|
</main>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
{{ define "main" -}}
|
{{ define "main" -}}
|
||||||
<main itemprop="mainEntity" class="h-feed hfeed" itemscope="" itemtype="https://schema.org/DataFeed">
|
<main itemprop="mainEntity" class="h-feed hfeed" itemscope="" itemtype="https://schema.org/DataFeed">
|
||||||
<h1 class="p-name" itemprop="name headline" id="notes">Notes</h1>
|
<h1 class="p-name" itemprop="name headline" id="notes">Notes</h1>
|
||||||
<p>This is my microblog, containing short informal entries. <a href="../posts/">See my blog</a> for longer entries. An <a href="./atom.xml">An Atom feed</a> contains the full text of all my notes.</p>
|
<p>This is my microblog. These are my short informal entries, sorted by date (newest first). For longer entries, <a href="../posts/">see my blog</a>.</p>
|
||||||
|
<p>An <a href="./atom.xml">Atom</a> feed is available, containing the full text of all my notes. A legacy <a href="./index.xml">RSS</a> feed also exists.</p>
|
||||||
<p role="doc-tip">
|
<p role="doc-tip">
|
||||||
Timestamp format: <code>YYYY-MM-DD HH:MM:SS</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite>. Sorted newest to oldest.
|
Timestamp format: <code>YYYY-MM-DD HH:MM:SS</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite>
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
{{- $posts := (where site.RegularPages "Section" "notes") -}}
|
{{- $posts := (where site.RegularPages "Section" "notes") -}}
|
||||||
|
|
|
@ -3,9 +3,10 @@
|
||||||
{{- $isStandalone = true -}}
|
{{- $isStandalone = true -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- if $isStandalone -}}
|
{{- if $isStandalone -}}
|
||||||
<main itemprop="mainEntity" class="h-feed hfeed" itemscope="" itemtype="https://schema.org/DataFeed">
|
<main itemprop="mainEntity" class="h-feed hfeed" itemscope="" itemtype="https://schema.org/CompleteDataFeed">
|
||||||
<h1 class="p-name" itemprop="name headline" id="posts">Posts</h1>
|
<h1 class="p-name" itemprop="name headline" id="posts">Posts</h1>
|
||||||
<p>These are all of my long-form posts. <a href="./atom.xml">An Atom feed</a> contains the full text of all my posts.</p>
|
<p>These are all of my posts, sorted by date (newest first).</p>
|
||||||
|
<p>An <a href="./atom.xml">Atom</a> feed is available, containing the full text of all my posts. A legacy <a href="./index.xml">RSS</a> feed also exists.</p>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<section class="h-feed hfeed" itemprop="hasPart" itemscope="" itemtype="https://schema.org/DataFeed">
|
<section class="h-feed hfeed" itemprop="hasPart" itemscope="" itemtype="https://schema.org/DataFeed">
|
||||||
<h2 class="p-name" itemprop="name" id="posts">Posts</h2>
|
<h2 class="p-name" itemprop="name" id="posts">Posts</h2>
|
||||||
|
@ -13,7 +14,7 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<p>I edit some of these posts quite often; some are updated indefinitely. Check the “updated” timestamps.</p>
|
<p>I edit some of these posts quite often; some are updated indefinitely. Check the “updated” timestamps.</p>
|
||||||
<p role="doc-tip">
|
<p role="doc-tip">
|
||||||
Timestamp format: <code>YYYY-MM-DD</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite> and <cite><a href="https://xkcd.com/1179/">ISO 8601</a></cite>. Sorted newest to oldest.
|
Timestamp format: <code>YYYY-MM-DD</code>, as per <cite><a href="https://www.ietf.org/rfc/rfc3339.txt">RFC 3339</a></cite> and <cite><a href="https://xkcd.com/1179/">ISO 8601</a></cite>
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
{{- $posts := (where site.RegularPages "Section" "posts") -}}
|
{{- $posts := (where site.RegularPages "Section" "posts") -}}
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
#!/usr/bin/env dash
|
|
||||||
|
|
||||||
set -e -u
|
|
||||||
|
|
||||||
# the name of this program
|
|
||||||
progname="$(basename "${0}")"
|
|
||||||
|
|
||||||
help_text="Usage:
|
|
||||||
|
|
||||||
Validate the site's markup, CSS, and accessibility.
|
|
||||||
|
|
||||||
Uses xmllint to to check well-formedness and the Nu HTML Checker to
|
|
||||||
check (X)HTML5 and CSS validity on every markup file (inc. HTML, XHTML,
|
|
||||||
SVG). (xmllint is only relevant if you're using XML syntax).
|
|
||||||
|
|
||||||
Lints source CSS files with stylelint.
|
|
||||||
|
|
||||||
Uses both axe-core and the IBM Equal Access Checker to test
|
|
||||||
accessibility on every page in the sitemap.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h Print this help and exit
|
|
||||||
-b Base URL of site
|
|
||||||
"
|
|
||||||
|
|
||||||
# TODO: add the following:
|
|
||||||
# - check broken internal links
|
|
||||||
# - check broken webring links
|
|
||||||
# - validate JSON (web app manifest, webfinger)
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
printf '%s' "${help_text}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# when the user passess bad args, send a msg to stderr and exit
|
|
||||||
# usage: bad_option <option> <reason>
|
|
||||||
bad_option() {
|
|
||||||
echo "${progname}: option ${1}: ${2}" >&2
|
|
||||||
usage >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
base_url='http://localhost:8089/'
|
|
||||||
|
|
||||||
while getopts "hb" flags; do
|
|
||||||
case ${flags} in
|
|
||||||
h)
|
|
||||||
usage
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
b)
|
|
||||||
base_url="$1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
bad_option "${flags}" 'invalid option'
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
make -j1 HUGO_FLAGS=-DF HUGO_BASEURL="$base_url" clean hugo xhtmlize lint-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' ' ')"
|
|
||||||
|
|
||||||
# vi:ft=sh
|
|
Loading…
Reference in a new issue