1
0
Fork 0
mirror of https://git.sr.ht/~seirdy/seirdy.one synced 2024-11-27 14:12:09 +00:00

Compare commits

..

No commits in common. "09a507a7ed1b90e95519ca24c1a2e42a4db0c7cd" and "afc8fa6213a0afff0c3626cf5090987d484e8ba8" have entirely different histories.

10 changed files with 139 additions and 208 deletions

View file

@ -2,7 +2,7 @@
* touch-friendly layout.
* Nothing here exists purely for aesthetics; everything addresses a
* specific a11y, compatibility, or critical
* usability need. The only exception is the h1's top margin.
* usability need.
*
* One exception: I re-set the input styles so Safari wouldn't make them
* pill-shaped.
@ -145,7 +145,7 @@ html {
margin: -.75em -.25em;
}
header a[href="#main"], /* skip link */
header a[href="#main"],
div[itemprop="comment"] dd > a ,
footer > nav,
/* List items with direct hyperlink children should only have one hyperlink. */
@ -183,7 +183,6 @@ html {
margin-bottom: 1.75em;
}
/* skip link: make it invisible until focused, and put it on the top. */
header a[href="#main"] {
position: absolute;
top: -2em;
@ -254,14 +253,11 @@ blockquote {
border-left: 3px solid;
}
/* Narrow screens: allow hyphenating titles I can't add soft hyphens to
* these. Also decrease the top margin a bit; the navbar and breadcrumb
* list take up plenty of space on top. The latter is a purely
* aesthetic choice, since it was annoying me a lot. */
/* Narrow screens: allow hyphenating titles
* I can't add soft hyphens to these. */
h1 {
-webkit-hyphens: auto;
hyphens: auto;
margin-top: .25em;
}
/* Very narrow screens: full hyphenation.

View file

@ -63,19 +63,12 @@ disableKinds = ["taxonomy", "term"]
url = "/about/"
weight = 30
[[menu.main]]
identifier = "meta"
name = "Meta"
title = "meta"
url = "/meta/"
weight = 40
[[menu.main]]
identifier = "resume"
name = "Resume"
title = "resume"
url = "/resume/"
weight = 50
weight = 40
[permalinks]
posts = "/posts/:year/:month/:day/:filename"
@ -121,7 +114,6 @@ disableKinds = ["taxonomy", "term"]
posts = ["HTML", "atom", "RSS"]
notes = ["HTML", "atom", "RSS"]
about = ["HTML", "atom", "RSS"]
meta = ["HTML", "atom", "RSS"]
# https://github.com/nekr0z/static-webmentions
[webmentions]

View file

@ -143,3 +143,38 @@ I think that at least one entry in that list has some problematic messages, but
I've put together a periodically-updated [list of tracks](../music.txt) that I've rated 8/10 or higher in my mpd stickers database, auto-generated by some of my [mpd-scripts](https://git.sr.ht/~seirdy/mpd-scripts/tree/master/smart-playlists). I'm a fan of glitch, trailer music, and symphonic and power metal; I've also recently been getting into Japanese rock thanks to a few anime openings. Some of my favorite artists are The Glitch Mob, Pretty Lights, Beats Antique, Hammerfall, Badflower, Celldweller and Scandroid, Helloween, Two Steps from Hell, Nightwish, Mili, and MYTH & ROID.
Meta: other versions of this site
---------------------------------
This website's canonical location is on seirdy.one.
This page also exists on the [tildeverse](https://tildeverse.org/), a bunch of \*nix computers that let people sign up for shell accounts. A typical shell account features clients for IRC and email, common terminal/commandline utilities, and (most importantly) web hosting. Read about the tildeverse's [origins](https://web.archive.org/web/20180917091804/https://medium.com/message/tilde-club-i-had-a-couple-drinks-and-woke-up-with-1-000-nerds-a8904f0a2ebf), read [the FAQ](https://tilde.club/wiki/faq.html), pick [a tilde](https://tilde.club/%7Epfhawkins/othertildes.html) and [get started](https://tilde.club/~anthonydpaul/primer.html). My Tildeverse pages will serve as a "rough draft".
Content on this site also appears on <a rel="alternate" href="gemini://seirdy.one/" class="u-syndication">my Gemini capsule</a>. My Web and Gemini content may be slightly different: I often phrase things differently to accommodate the strengths and weaknesses of each medium.
I have a [Tor hidden Web service](http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion/ "{rel='alternate' class='u-syndication'}") which mirrors this site's contents, except for the fact that it replaces some SVGs with PNGs.
Meta: featured in directories
-----------------------------
This site is featured in some cool directories.
### Website minimalism
- [10 KB Club](https://10kbclub.com/)
- [no-JS Club](https://no-js.club/)
- [XHTML Club](https://xhtml.club/)
- [Hyperlinked Text](https://sjmulder.nl/en/textonly.html)
### Other directories
- [Indieweb Webring Directory](https://xn--sr8hvo.ws/directory)
- [Writer's Lane, Nightfall City](https://nightfall.city/writers-lane/)
- [Just Another Useless Page](https://www.geocities.ws/jaup/jaup.htm)
- [Webrings Fanlisting](https://fanlistings.nickifaulk.com/webrings/)
- [Gossip's Web](https://gossipsweb.net/personal-websites)
- [Nixers](https://github.com/nixers-projects/sites/wiki/List-of-nixers.net-user-sites)
- [Nerd Listings](https://nerdlistings.info/category/personalsites/) (pending)
- [Ye Olde Blogroll](https://blogroll.org/) (pending)
- [LinkLane](https://www.linklane.net/) (pending)

View file

@ -1,42 +0,0 @@
---
date: 2021-07-10
title: "Meta: about this site"
outputs:
- html
description: "About this site. How it's built, why it's built that way, privacy, accessibility, mirrors, etc."
---
Other versions of this site
---------------------------
This website's canonical location is on seirdy.one.
This page also exists on the [tildeverse](https://tildeverse.org/), a bunch of \*nix computers that let people sign up for shell accounts. A typical shell account features clients for IRC and email, common terminal/commandline utilities, and (most importantly) web hosting. Read about the tildeverse's [origins](https://web.archive.org/web/20180917091804/https://medium.com/message/tilde-club-i-had-a-couple-drinks-and-woke-up-with-1-000-nerds-a8904f0a2ebf), read [the FAQ](https://tilde.club/wiki/faq.html), pick [a tilde](https://tilde.club/%7Epfhawkins/othertildes.html) and [get started](https://tilde.club/~anthonydpaul/primer.html). My Tildeverse pages will serve as a "rough draft".
Content on this site also appears on <a rel="alternate" href="gemini://seirdy.one/" class="u-syndication">my Gemini capsule</a>. My Web and Gemini content may be slightly different: I often phrase things differently to accommodate the strengths and weaknesses of each medium.
I have a [Tor hidden Web service](http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion/ "{rel='alternate' class='u-syndication'}") which mirrors this site's contents, except for the fact that it replaces some SVGs with PNGs.
Featured in directories
-----------------------
This site is featured in some cool directories.
### Website minimalism
- [10 KB Club](https://10kbclub.com/)
- [no-JS Club](https://no-js.club/)
- [XHTML Club](https://xhtml.club/)
- [Hyperlinked Text](https://sjmulder.nl/en/textonly.html)
### Other directories
- [Indieweb Webring Directory](https://xn--sr8hvo.ws/directory)
- [Writer's Lane, Nightfall City](https://nightfall.city/writers-lane/)
- [Just Another Useless Page](https://www.geocities.ws/jaup/jaup.htm)
- [Webrings Fanlisting](https://fanlistings.nickifaulk.com/webrings/)
- [Gossip's Web](https://gossipsweb.net/personal-websites)
- [Nixers](https://github.com/nixers-projects/sites/wiki/List-of-nixers.net-user-sites)
- [Nerd Listings](https://nerdlistings.info/category/personalsites/) (pending)
- [Ye Olde Blogroll](https://blogroll.org/) (pending)
- [LinkLane](https://www.linklane.net/) (pending)

View file

@ -1,102 +0,0 @@
---
outputs:
- html
title: Privacy policy
description: "Privacy policy for seirdy.one"
date: "2022-04-06T00:00:00+00:00"
---
This privacy policy is effective as of <time datetime="2022-04-06T00:00:00+00:00">2022-04-06</time>. In short: I only collect standard server logs, I purge them regularly, and I only share sanitized excerpts (e.g. when filing bug reports).
Scope
-----
This privacy policy applies to the following services:
1. The Web site <https://seirdy.one>
2. The hidden Web service [http://wgq3\[...\]d<wbr />.onion](http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion/ "{title='http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion'}"), accessible over the Tor network
3. The Gemini capsule <gemini://seirdy.one>
This policy only applies if served by one of those three services.
Information I collect
---------------------
My servers temporarily store server logs.
### Web server logs
For each request you make that reaches my Web servers, my server logs:
- Your public IP address
- The contents of your `user-agent` and `referer` (sic) headers
- The page you requested
- The time of the request
- The HTTP response code of the request
This is the information that [Nginx](https://nginx.org/) logs according to the default configurations in many operating systems.
None of the Web content I serve contains cookies or scripts, or collects any information not described by this Privacy Policy.
### Gemini server logs
My Gemini server logs:
- The page you requested
- The time of the request
- The Gemini response code of the request
- The language-code of the request
This is the information [Agate](gemini://qwertqwefsday.eu/agate.gmi) logs according to its default configuration.
### Hosting provider
These services currently run on, but do not necessarily endorse, virtual private servers owned by Digital Ocean. You can read Digital Ocean's [data processing agreement](https://www.digitalocean.com/legal/data-processing-agreement) to learn about how Digital Ocean processes data on these servers.
### Retention
Log entries will persist for between two and three days. Purges of server logs occur every day at <time datetime="03:35:12">00:00 UTC</time>
Before purging, I may preserve the "User-Agent" request headers of agents that clearly identify as bots.
### How I use your information
I use server logs to detect <abbr title="Denial of Service">DoS</abbr> attacks, misbehaving bots, and search engines to add to [my public collection](../../posts/2021/03/10/search-engines-with-own-indexes/).
Information I share
-------------------
Searches performed on search boxes in the site footer and on the search page are powered by the [Search My Site](https://searchmysite.net/) API. When you search, your query---and only your query---is sent to Search My Site. No other information (e.g., your IP address or request headers) is sent. Information about how Search My Site may handle these anonymized queries is available in [its privacy policy](https://searchmysite.net/pages/privacy/).
No other information is automatically shared with any third-parties, to my knowledge.
I may share excerpts of of server logs with third parties if I am trying to resolve a technical issue. For example, I may submit an excerpt of an error log when filing a bug report. Any time I have to share such an excerpt, I remove or alter all identifying information. This includes, but is not limited to: IP addresses, timestamps, and any uniquely-identifying user-agent strings.
I do not remove or alter identifying information when sharing excerpts of bot traffic.
Web content and Gemini content may contain hyperlinks to other pages hosted by other parties whose privacy policies I do not govern.
My privacy policy ends here. Any information that follows is not part of a privacy policy.
Information I avoid
-------------------
The following describes information I _avoid receiving_ when serving Web content, as well as information I prevent users from _accidentally transmitting_ to third parties.
No Web content governed by these policies makes any connections to parties that are not governed by this Privacy Policy, when rendered in a standards-compliant browser.
By default, web browsers may share pages a user visits with third parties by loading third-party content (e.g. hotlinked images, third-party frames, etc). I have disabled this behavior with a `Content-Security-Policy` HTTP header that forbids all third-party content.
By default, web browsers may share arbitrary information with a server through HTTP headers; these headers could include fingerprintable information unintentionally (client-hints, do-not-track) or intentionally (Chromium's upcoming advertising identifiers). I do not log any HTTP headers not explicitly mentioned in the "Web server logs" section, but I cannot prevent user agents from sending a header ahead of time.
By default, web browsers can share near-arbitrary identifying data with a server by executing near-arbitrary JavaScript, or store this information for future transmission. I have disabled this behavior with a `Content-Security-Policy` HTTP header. It contains explicit and implicit directives that forbid script loading (`script-src: none`), script execution (`sandbox`), and making connections for any purpose other than downloading a page a user navigated to (`connect-src`).
By default, user agents using HTTPS may contact a certificate authority to check the revocation status of an TLS certificate. I have disabled and replaced this behavior by including an "OCSP Must-Staple" directive in the TLS certificates used by my Web servers.
By default, user agents using HTTP or HTTPS may share a "referring" location with the destination website when following a link. I have disabled this by sending a `Referrer-Policy: no-referrer` header.
By default, Web browsers may share characteristics about the user's hardware, connection type, and personalizations using Client Hints and media queries. Browsers may request Web content according conditionally, in response to a `media` attribute in HTML or XHTML documents. Browsers may leverage stylesheets that use media queries to select varying `background-image` files. No Web content on seirdy.one will send network traffic in response to media queries except <code>prefers-color-<wbr />scheme</code>, assuming the use of a standards-compliant browser. Media queries and client hints will have no impact on HTTP responses except for dark image variants. This is a single binary piece of information that isn't enough to let me realistically identify anyone.
By default, many networks and Internet service providers often alter requests by redirecting them or injecting content. I have prevented this behavior by using a secure TLS cipher suite.

View file

@ -1,7 +1,103 @@
---
outputs:
- html
- gemtext
title: Privacy policy
description: "Privacy policy for seirdy.one"
date: "2022-04-06T00:00:00+00:00"
---
This privacy policy is effective as of <time datetime="2022-04-06T00:00:00+00:00">2022-04-06</time>. In short: I only collect standard server logs, I purge them regularly, and I only share sanitized excerpts (e.g. when filing bug reports).
Scope
-----
This privacy policy applies to the following services:
1. The Web site <https://seirdy.one>
2. The hidden Web service [http://wgq3\[...\]d<wbr />.onion](http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion/ "{title='http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion'}"), accessible over the Tor network
3. The Gemini capsule <gemini://seirdy.one>
This policy only applies if served by one of those three services.
Information I collect
---------------------
My servers temporarily store server logs.
### Web server logs
For each request you make that reaches my Web servers, my server logs:
- Your public IP address
- The contents of your `user-agent` and `referer` (sic) headers
- The page you requested
- The time of the request
- The HTTP response code of the request
This is the information that [Nginx](https://nginx.org/) logs according to the default configurations in many operating systems.
None of the Web content I serve contains cookies or scripts, or collects any information not described by this Privacy Policy.
### Gemini server logs
My Gemini server logs:
- The page you requested
- The time of the request
- The Gemini response code of the request
- The language-code of the request
This is the information [Agate](gemini://qwertqwefsday.eu/agate.gmi) logs according to its default configuration.
### Hosting provider
These services currently run on, but do not necessarily endorse, virtual private servers owned by Digital Ocean. You can read Digital Ocean's [data processing agreement](https://www.digitalocean.com/legal/data-processing-agreement) to learn about how Digital Ocean processes data on these servers.
### Retention
Log entries will persist for between two and three days. Purges of server logs occur every day at <time datetime="03:35:12">00:00 UTC</time>
Before purging, I may preserve the "User-Agent" request headers of agents that clearly identify as bots.
### How I use your information
I use server logs to detect <abbr title="Denial of Service">DoS</abbr> attacks, misbehaving bots, and search engines to add to [my public collection](../posts/2021/03/10/search-engines-with-own-indexes/).
Information I share
-------------------
Searches performed on search boxes in the site footer and on the search page are powered by the [Search My Site](https://searchmysite.net/) API. When you search, your query---and only your query---is sent to Search My Site. No other information (e.g., your IP address or request headers) is sent. Information about how Search My Site may handle these anonymized queries is available in [its privacy policy](https://searchmysite.net/pages/privacy/).
No other information is automatically shared with any third-parties, to my knowledge.
I may share excerpts of of server logs with third parties if I am trying to resolve a technical issue. For example, I may submit an excerpt of an error log when filing a bug report. Any time I have to share such an excerpt, I remove or alter all identifying information. This includes, but is not limited to: IP addresses, timestamps, and any uniquely-identifying user-agent strings.
I do not remove or alter identifying information when sharing excerpts of bot traffic.
Web content and Gemini content may contain hyperlinks to other pages hosted by other parties whose privacy policies I do not govern.
My privacy policy ends here. Any information that follows is not part of a privacy policy.
Information I avoid
-------------------
The following describes information I _avoid receiving_ when serving Web content, as well as information I prevent users from _accidentally transmitting_ to third parties.
No Web content governed by these policies makes any connections to parties that are not governed by this Privacy Policy, when rendered in a standards-compliant browser.
By default, web browsers may share pages a user visits with third parties by loading third-party content (e.g. hotlinked images, third-party frames, etc). I have disabled this behavior with a `Content-Security-Policy` HTTP header that forbids all third-party content.
By default, web browsers may share arbitrary information with a server through HTTP headers; these headers could include fingerprintable information unintentionally (client-hints, do-not-track) or intentionally (Chromium's upcoming advertising identifiers). I do not log any HTTP headers not explicitly mentioned in the "Web server logs" section, but I cannot prevent user agents from sending a header ahead of time.
By default, web browsers can share near-arbitrary identifying data with a server by executing near-arbitrary JavaScript, or store this information for future transmission. I have disabled this behavior with a `Content-Security-Policy` HTTP header. It contains explicit and implicit directives that forbid script loading (`script-src: none`), script execution (`sandbox`), and making connections for any purpose other than downloading a page a user navigated to (`connect-src`).
By default, user agents using HTTPS may contact a certificate authority to check the revocation status of an TLS certificate. I have disabled and replaced this behavior by including an "OCSP Must-Staple" directive in the TLS certificates used by my Web servers.
By default, user agents using HTTP or HTTPS may share a "referring" location with the destination website when following a link. I have disabled this by sending a `Referrer-Policy: no-referrer` header.
By default, Web browsers may share characteristics about the user's hardware, connection type, and personalizations using Client Hints and media queries. Browsers may request Web content according conditionally, in response to a `media` attribute in HTML or XHTML documents. Browsers may leverage stylesheets that use media queries to select varying `background-image` files. No Web content on seirdy.one will send network traffic in response to media queries except <code>prefers-color-<wbr />scheme</code>, assuming the use of a standards-compliant browser. Media queries and client hints will have no impact on HTTP responses except for dark image variants. This is a single binary piece of information that isn't enough to let me realistically identify anyone.
By default, many networks and Internet service providers often alter requests by redirecting them or injecting content. I have prevented this behavior by using a secure TLS cipher suite.

View file

@ -53,7 +53,7 @@ I also go further than WCAG in many aspects:
I test each WCAG success criterion myself using the mainstream browser engines (Blink, Gecko, WebKit). I test using multiple screen readers: Orca (primary, with Firefox and Epiphany), NVDA (with Firefox and Chromium), Windows Narrator (with Microsoft Edge), Apple VoiceOver (with desktop and mobile Safari), and Android TalkBack (with Chromium).
I also accept user feedback. Users are free to contact me through any means linked on my [About page](../../about/).
I also accept user feedback. Users are free to contact me through any means linked on my [About page](../about/).
Finally, I supplement manual testing with the following automated tools:

View file

@ -1,37 +0,0 @@
{{ define "main" -}}
{{- $canonicalRelPermalink := .RelPermalink | replaceRE "^/~seirdy/" "/" }}
<main id="main" tabindex="-1">
{{- $articleTag := printf `<article class="h-entry hentry" itemprop="mainEntity" itemscope="" itemtype="https://schema.org/Article" itemid="%s%s">` .Site.Params.CanonicalBaseURL $canonicalRelPermalink -}}
{{ partial "full-article.html" . | replaceRE `<article class="h-entry hentry">` $articleTag | safeHTML }}
<hr />
<section itemprop="hasPart" class="h-feed hfeed" itemscope="" itemtype="https://schema.org/DataFeed">
<h2>More about this site</h2>
<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>. Sorted newest to oldest.
</p>
<ol>
{{- $pages := (where site.RegularPages "Section" .Section) -}}
{{- range $pages -}}
{{- $canonicalRelPermalink := .RelPermalink | replaceRE "^/~seirdy/" "/" -}}
<li itemprop="dataFeedElement" itemscope="" itemtype="https://schema.org/DataFeedItem">
<article class="h-entry hentry" itemprop="item" itemscope="" itemtype="https://schema.org/Article" itemid="{{ .Site.Params.CanonicalBaseURL }}{{ $canonicalRelPermalink }}">
<h3 itemprop="name headline" class="p-name entry-title">
<a href="{{ .Permalink }}" itemprop="url" class="u-url url" rel="bookmark">
{{ .Title }}
</a>
</h3>
<p>
Posted <time itemprop="datePublished" class="dt-published published" datetime="{{ .Date.Format "2006-01-02 15:04:05Z07:00" }}">{{ .Date.Format "2006-01-02 15:04" }}</time>
{{- if gt (sub .Lastmod.Unix .Date.Unix) 3600 -}}
, updated <time{{ if not (.Params.evergreen) }} itemprop="dateModified" class="dt-updated updated"{{ end }} datetime="{{ .Lastmod.Format "2006-01-02 15:04:05Z07:00" }}">{{ .Lastmod.Format "2006-01-02 15:04" }}</time>
{{- end }}
</p>
<p class="p-summary entry-summary" itemprop="description">{{ .Description }}</p>
<p>{{- partial "wordcount.html" . -}}</p>
</article>
</li>
{{- end }}
</ol>
</section>
</main>
{{ end }}

View file

@ -18,10 +18,10 @@
<a rel="alternate" href="http://wgq3bd2kqoybhstp77i3wrzbfnsyd27wt34psaja4grqiezqircorkyd.onion{{ .RelPermalink }}">Tor mirror</a>
</li>
<li>
<a href="{{ site.BaseURL }}meta/privacy/">Privacy</a>
<a href="{{ site.BaseURL }}privacy/">Privacy</a>
</li>
<li>
<a href="{{ site.BaseURL }}meta/site-design/">Site design standards</a>
<a href="{{ site.BaseURL }}site-design/">Site design standards</a>
</li>
<li>
<a href="{{ site.BaseURL }}about/#location-seirdy-online">Contact</a>

View file

@ -27,7 +27,6 @@ bad_option() {
}
reply='0'
url=''
while getopts "hr" flags; do
case ${flags} in
@ -38,8 +37,6 @@ while getopts "hr" flags; do
r)
reply='1'
shift
url="$1"
shift
;;
*)
bad_option "${flags}" 'invalid option'
@ -56,10 +53,6 @@ else
hugo new "$filename"
fi
if [ "$url" != '' ]; then
sd -s 'replyURI: ""' "replyURI: \"$url\"" "content/$filename"
fi
"${EDITOR-nvim}" "content/$filename"
# vi:ft=sh