diff --git a/Makefile b/Makefile index 10e049f..0d7f1c4 100644 --- a/Makefile +++ b/Makefile @@ -99,7 +99,6 @@ deploy-html: .PHONY: deploy-gemini deploy-gemini: rsync $(RSYNCFLAGS) --exclude '*.html' --exclude '*.xml' --exclude '*.gz' --exclude '*.br' --exclude-from .rsyncignore $(OUTPUT_DIR)/gemini/ $(OUTPUT_DIR)/about $(OUTPUT_DIR)/posts $(OUTPUT_DIR)/publickey.* $(GEMINI_RSYNC_DEST)/ --delete - rsync $(RSYNCFLAGS) $(OUTPUT_DIR)/posts/gemini.xml $(GEMINI_RSYNC_DEST)/feed.xml .PHONY: deploy deploy: deploy-html deploy-gemini diff --git a/config.toml b/config.toml index 6b38004..eaaa682 100644 --- a/config.toml +++ b/config.toml @@ -7,150 +7,151 @@ summaryLength = 150 enableInlineShortcodes = true enableGitInfo = true disableHugoGeneratorInject = true # I inject it explicitly at the BOTTOM of -uglyurls = true -pygmentsCodeFences = true -pygmentsUseClasses = true +uglyurls = false +pygmentsCodeFences = false +pygmentsUseClasses = false disableKinds = ["taxonomy", "term"] [params] -description = "Seirdy's Home: personal website and blog for Rohan Kumar, A.K.A. Seirdy" -src = "https://sr.ht/~seirdy/seirdy.one/" -canonicalBaseURL = "https://seirdy.one" # I have mirrors with different baseURLs -webmentionEndpoint = "https://seirdy.one/webmentions/receive" -logUrlPrefix = "https://git.sr.ht/~seirdy/seirdy.one/log/master/item/" -copyright = "Copyright © 2021 Rohan Kumar" -dark = "auto" -highlight = false + description = "Seirdy's Home: personal website and blog for Rohan Kumar, A.K.A. Seirdy" + src = "https://sr.ht/~seirdy/seirdy.one/" + canonicalBaseURL = "https://seirdy.one" # I have mirrors with different baseURLs + webmentionEndpoint = "https://seirdy.one/webmentions/receive" + logUrlPrefix = "https://git.sr.ht/~seirdy/seirdy.one/log/master/item/" + copyright = "Copyright © 2021 Rohan Kumar" + dark = "auto" + highlight = false + icon = "/favicon.svg" [frontmatter] -lastmod = ['lastmod', ':git', 'date', 'publishDate'] + lastmod = ['lastmod', ':git', 'date', 'publishDate'] [author] -name = "Rohan Kumar" -first = "Rohan" -last = "Kumar" -nick = "Seirdy" + name = "Rohan Kumar" + url = "https://seirdy.one/" + first = "Rohan" + last = "Kumar" + nick = "Seirdy" [menu] - [[menu.main]] - identifier = "posts" - name = "Posts" - title = "posts" - url = "/posts.html" - weight = 10 + [[menu.main]] + identifier = "posts" + name = "Posts" + title = "posts" + url = "/posts/" + weight = 10 [[menu.main]] - identifier = "notes" - name = "Notes" - title = "notes" - url = "/notes.html" - weight = 15 + identifier = "notes" + name = "Notes" + title = "notes" + url = "/notes/" + weight = 15 - [[menu.main]] - identifier = "bookmarks" - name = "Bookmarks" - title = "bookmarks" - url = "/bookmarks.html" - weight = 20 + [[menu.main]] + identifier = "bookmarks" + name = "Bookmarks" + title = "bookmarks" + url = "/bookmarks/" + weight = 20 - [[menu.main]] - identifier = "about" - name = "About" - title = "about" - url = "/about.html" - weight = 30 + [[menu.main]] + identifier = "about" + name = "About" + title = "about" + url = "/about/" + weight = 30 - [[menu.main]] - identifier = "resume" - name = "Resume" - title = "resume" - url = "/resume.html" - weight = 40 + [[menu.main]] + identifier = "resume" + name = "Resume" + title = "resume" + url = "/resume/" + weight = 40 - [[menu.main]] - identifier = "rss" - name = "RSS feed" - title = "rss feed" - url = "/posts/index.xml" - weight = 50 + [[menu.main]] + identifier = "rss" + name = "RSS feed" + title = "rss feed" + url = "/posts/index.xml" + weight = 50 [permalinks] -posts = "/:year/:month/:day/:filename" -notes = "/notes/:year/:month/:day/:filename" + posts = "/posts/:year/:month/:day/:filename" + notes = "/notes/:year/:month/:day/:filename" [markup.goldmark.renderer] -# Allows HTML in Markdown -unsafe = true + unsafe = true [markup.tableOfContents] -ordered = true -startLevel = 2 -endLevel = 3 + ordered = true + startLevel = 2 + endLevel = 3 # lifted from https://git.sr.ht/~sircmpwn/drewdevault.com [mediaTypes] [mediaTypes."text/gemini"] -suffixes = ["gmi"] + suffixes = ["gmi"] [mediaTypes."application/manifest+json"] -suffixes = ["webmanifest"] + suffixes = ["webmanifest"] [outputFormats] -[outputFormats.Gemini] -name = "GEMTEXT" -isPlainText = true -isHTML = false -mediaType = "text/gemini" -protocol = "gemini://" -permalinkable = true -path = "gemini/" + [outputFormats.Gemini] + name = "GEMTEXT" + isPlainText = true + isHTML = false + mediaType = "text/gemini" + protocol = "gemini://" + permalinkable = true + path = "gemini/" -[outputFormats.GEMRSS] -name = "GEMRSS" -isHTML = false -mediaType = "application/rss+xml" -protocol = "gemini://" -path = "gemini/" + [outputFormats.atom] + baseName="atom" + isPlainText = true + mediaType = "application/xml" [outputs] -section = ["HTML", "RSS", "GEMRSS"] + home = ["HTML", "atom", "GEMTEXT", "RSS"] + section = ["HTML", "atom", "RSS"] + posts = ["HTML", "atom", "RSS"] + notes = ["HTML", "atom", "RSS"] # https://github.com/nekr0z/static-webmentions [webmentions] -newDir = "public" -oldDir = "old" -webmentionsFile = "mentions.json" -excludeSources = [ - "/tags/*", # only trailing * are supported at the moment - "/posts/*", # this only excludes /posts/index.html, not /posts/somepost/ - "/", # same as "/index.html" -] + newDir = "public" + oldDir = "old" + webmentionsFile = "mentions.json" + excludeSources = [ + "/tags/*", # only trailing * are supported at the moment + "/posts/*", # this only excludes /posts/index.html, not /posts/somepost/ + "/", # same as "/index.html" + ] -# addresses that we don't want to send webmentions to -# other schemes and stuff that I link to too often -excludeDestinations = [ - "mailto:", - "gemini:", - "https://web.archive.org", - "https://lists.sr.ht/~seirdy/seirdy.one-comments", - "https://useplaintext.email/", - "https://seirdy.one", -] + # addresses that we don't want to send webmentions to + # other schemes and stuff that I link to too often + excludeDestinations = [ + "mailto:", + "gemini:", + "https://web.archive.org", + "https://lists.sr.ht/~seirdy/seirdy.one-comments", + "https://seirdy.one", + ] [imaging.exif] - # Regexp matching the fields you want to Exclude from the (massive) set of Exif info -# available. As we cache this info to disk, this is for performance and -# disk space reasons more than anything. -# If you want it all, put ".*" in this config setting. -# Note that if neither this or ExcludeFields is set, Hugo will return a small -# default set: GPS|Exif|Exposure[M|P|B]|Contrast|Resolution|Sharp|JPEG|Metering|Sensing|Saturation|ColorSpace|Flash|WhiteBalance -includeFields = "" + # Regexp matching the fields you want to Exclude from the (massive) set of Exif info + # available. As we cache this info to disk, this is for performance and + # disk space reasons more than anything. + # If you want it all, put ".*" in this config setting. + # Note that if neither this or ExcludeFields is set, Hugo will return a small + # default set: GPS|Exif|Exposure[M|P|B]|Contrast|Resolution|Sharp|JPEG|Metering|Sensing|Saturation|ColorSpace|Flash|WhiteBalance + includeFields = "" -# Regexp matching the Exif fields you want to exclude. This may be easier to use -# than IncludeFields above, depending on what you want. -excludeFields = ".*" + # Regexp matching the Exif fields you want to exclude. This may be easier to use + # than IncludeFields above, depending on what you want. + excludeFields = ".*" -# don't minify html but minify other resources, esp the fulltext rss feed +# don't minify html but minify other resources, esp the fulltext rss/atom feeds [minify] -minifyOutput = true -disableXML = false -disableHTML = true + minifyOutput = false + disableXML = false + disableHTML = true diff --git a/content/_index.gmi b/content/_index.gmi index 72aa6ec..132caa9 100644 --- a/content/_index.gmi +++ b/content/_index.gmi @@ -5,8 +5,8 @@ It me! I'm Rohan Kumar, a.k.a. Seirdy (online handle). ## Other versions of this site Canonical versions: -=> gemini://seirdy.one Canonical Gemini capsule -=> https://seirdy.one Canonical Web site +=> gemini://seirdy.one/ Canonical Gemini capsule +=> https://seirdy.one/ Canonical Web site Staging/rough-draft Tildeverse mirror: => gemini://envs.net/~seirdy/ Tildeverse Gemini capsule @@ -60,5 +60,5 @@ Orbits (Gemini equivalent of webrings): I don't collect anything except default server logs, purged regularly. More detail on a dedicated page: -=> gemini://seirdy.one/privacy.gmi +=> gemini://seirdy.one/privacy/ diff --git a/content/about/index.gmi b/content/about/index.gmi index 65106ee..f333d2a 100644 --- a/content/about/index.gmi +++ b/content/about/index.gmi @@ -68,7 +68,7 @@ Analyze WeeChat logs to quantify, graph, forecast, and perform anomaly-detection Generate passwords and analyze password strength given physical limits to computing. Based on a weblog/gemlog entry: -=> gemini://seirdy.one/2021/01/12/password-strength.gmi Becoming physically immune to brute-force attacks +=> ../posts//2021/01/12/password-strength/ Becoming physically immune to brute-force attacks Written in Go. @@ -80,7 +80,7 @@ I ought to come up with more interests than these, but that sounds hard. I care a lot about accessibility, resource usage, and compatibility. My Web site may seem simple, but I put almost 20 thousand words of thought into its design in an effort to maximize its inclusivity: -=> gemini://seirdy.one/2020/11/23/website-best-practices.gmi Best practices for inclusive textual websites +=> ../posts/2020/11/23/website-best-practices/ Best practices for inclusive textual websites This site should work well whether you're using Lynx, NetSurf, the Tor Browser with a screen reader, or a printout @@ -94,7 +94,7 @@ While I care very much about "free software" (the name is confusing, it refers t I think that simply meeting GNU's definition of free software isn't enough: it's one of multiple requirements for software to avoid the possibility of user domestication: -=> gemini://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.gmi Whatsapp and the domestication of users +=> ../posts/2021/01/27/whatsapp-and-the-domestication-of-users/ Whatsapp and the domestication of users I lean towards simplicity; I usually prefer line-mode command-line interfaces that follow the UNIX philosophy. If a piece of software is complex enough to require a funding round, I would rather avoid it. My reasons for preferring simplicity also relate to user autonomy: extremely complex software can't be forked easily, creating dependence on the vendor. It's also because I'm a bit paranoid and want to know everything that happens on my system. diff --git a/content/about/index.md b/content/about/index.md index 3912bfc..b828c52 100644 --- a/content/about/index.md +++ b/content/about/index.md @@ -18,7 +18,7 @@ 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 my Gemini capsule. My Web and Gemini content may be slightly different: I often phrase things differently to accommodate the strengths and weaknesses of each medium. +Content on this site also appears on my Gemini capsule. 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/) which mirrors this site's contents, except for the fact that it replaces some SVGs with PNGs. @@ -40,7 +40,7 @@ My handle is "Seirdy" on all the platforms I use. - Social (non-federated): I'm Seirdy on [Hacker News](https://news.ycombinator.com/user?id=Seirdy), [Lobsters](https://lobste.rs/u/Seirdy), [Reddit](https://www.reddit.com/user/Seirdy/), [Tildes.net](https://tildes.net/user/Seirdy), and Linux Weekly News. -- Email: my address is [seirdy@seirdy.one](mailto:seirdy@seirdy.one). I typically sign my emails with my public PGP key: [`1E892DB2A5F84479`](./publickey.asc). My key is also available via WKD. +- Email: my address is [seirdy@seirdy.one](mailto:seirdy@seirdy.one). I typically sign my emails with my public PGP key: [`1E892DB2A5F84479`](../publickey.asc). My key is also available via WKD. - Chat: for IRC, my nick is Seirdy on Libera.chat, Snoonet, OFTC, Tilde.Chat, and a few smaller networks. I'm also [@seirdy:seirdy.one](https://matrix.to/#/@seirdy:seirdy.one) on Matrix. @@ -59,7 +59,7 @@ Analyze WeeChat logs to quantify, graph, forecast, and perform anomaly-detection ### [MOAC](https://sr.ht/~seirdy/MOAC/) -Generate passwords and analyze password strength given physical limits to computing. Based on a weblog/gemlog entry: [Becoming physically immune to brute-force attacks](https://seirdy.one/2021/01/12/password-strength.html). Written in Go. +Generate passwords and analyze password strength given physical limits to computing. Based on a weblog/gemlog entry: [Becoming physically immune to brute-force attacks](../posts/2021/01/12/password-strength/). Written in Go. Interests, preferences, et cetera --------------------------------- @@ -68,7 +68,7 @@ I ought to come up with more interests than these, but that sounds hard. ### Inclusive design -I care a lot about accessibility, resource usage, and compatibility. My Web site may seem simple, but I put [almost 20 thousand words of thought into its design](https://seirdy.one/~seirdy/2020/11/23/website-best-practices.html) in an effort to maximize its inclusivity. This site should work well whether you're using Lynx, NetSurf, the Tor Browser with a screen reader, or a printout. +I care a lot about accessibility, resource usage, and compatibility. My Web site may seem simple, but I put [almost 20 thousand words of thought into its design](../posts/2020/11/23/website-best-practices/) in an effort to maximize its inclusivity. This site should work well whether you're using Lynx, NetSurf, the Tor Browser with a screen reader, or a printout. Many people frame accessibility and compatibility in terms of "percentage of users impacted" to justify ignoring certain demographics. I find that this mindset somewhat discriminatory. I prefer framing concerns in terms of "populations excluded". @@ -78,7 +78,7 @@ I have some skin in the game: I rely on forced colors and use often use screen r While I care very much about "free software" (the name is confusing, it refers to freedom rather than price), I don't share the same perspective as most "fossbros" and organizations like the FSF. Software freedom is important because it gives people agency instead of delegating control to an authority; it's not valuable in and of itself, and promoting a "FOSS" alternative that has vulnerabilities and accessibility issues is sometimes counterproductive. -I think that simply meeting GNU's definition of free software isn't enough: it's one of multiple requirements for software to avoid the possibility of [user domestication](https://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.html). +I think that simply meeting GNU's definition of free software isn't enough: it's one of multiple requirements for software to avoid the possibility of [user domestication](../posts/2021/01/27/whatsapp-and-the-domestication-of-users/). I lean towards simplicity; I usually prefer line-mode command-line interfaces that follow the UNIX philosophy. If a piece of software is complex enough to require a funding round, I would rather avoid it. My reasons for preferring simplicity also relate to user autonomy: extremely complex software can't be forked easily, creating dependence on the vendor. It's also because I'm a bit paranoid and want to know everything that happens on my system. @@ -106,4 +106,4 @@ I think that at least one entry in that list has some problematic messages, but ### Music -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. +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. diff --git a/content/notes/_index.md b/content/notes/_index.md new file mode 100644 index 0000000..05496eb --- /dev/null +++ b/content/notes/_index.md @@ -0,0 +1,8 @@ +--- +template: "notes.html" +description: "All the notes on Seirdy's Home" +title: "Notes" +sitemap: + ChangeFreq: daily + Priority: 0.8 +--- diff --git a/content/notes/answer-engines.md b/content/notes/answer-engines.md index 0751f31..241040c 100644 --- a/content/notes/answer-engines.md +++ b/content/notes/answer-engines.md @@ -12,7 +12,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 {{}}{{}}{{}}, and there are many alternatives that don't have this conflict of interest. +I've catalogued some other engines in my post {{}}{{}}{{}}, 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". diff --git a/content/notes/signal-security.md b/content/notes/signal-security.md index 66fbd04..d9d2709 100644 --- a/content/notes/signal-security.md +++ b/content/notes/signal-security.md @@ -9,4 +9,4 @@ Reply to {{< mention-work itemprop="about" itemtype="SocialMediaPosting" reply=t 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](https://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.html), 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](../../../../../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. diff --git a/content/posts/_index.md b/content/posts/_index.md new file mode 100644 index 0000000..dc0549c --- /dev/null +++ b/content/posts/_index.md @@ -0,0 +1,8 @@ +--- +template: "posts.html" +description: "All the posts on Seirdy's Home" +title: "Posts" +sitemap: + ChangeFreq: weekly + Priority: 0.7 +--- diff --git a/content/posts/floss-security.gmi b/content/posts/floss-security.gmi index a161e55..cc45fa0 100644 --- a/content/posts/floss-security.gmi +++ b/content/posts/floss-security.gmi @@ -4,8 +4,8 @@ I find it easy to handle views different from my own. I feel more troubled when It's no secret that I'm a passionate supporter of software freedom: I've written two posts about how Free, Libre, and Open-Source Software (FLOSS) is necessary but insufficient to preserve user autonomy: -=> ./../../../2021/01/27/whatsapp-and-the-domestication-of-users.gmi Whatsapp and the domestication of users -=> ./../../../2021/02/23/keeping-platforms-open.gmi Keeping platforms open +=> ../../../../2021/01/27/whatsapp-and-the-domestication-of-users/ Whatsapp and the domestication of users +=> ../../../../2021/02/23/keeping-platforms-open/ Keeping platforms open After two posts spanning over 5000 words, I need to add some nuance. diff --git a/content/posts/floss-security.md b/content/posts/floss-security.md index 8000330..4a22c65 100644 --- a/content/posts/floss-security.md +++ b/content/posts/floss-security.md @@ -18,11 +18,12 @@ I find it quite easy to handle views different from my own. I feel more troubled It's no secret that I'm a passionate supporter of software freedom: I've written two posts about how Free, Libre, and Open-Source software (FLOSS) is necessary but insufficient to preserve user autonomy: -[Whatsapp and the domestication of users](./../../../2021/01/27/whatsapp-and-the-domestication-of-users.html "{itemprop='mentions'}") -: The phenomenon of a class of predatory businesses models I call "user domestication" and defense measures: FLOSS, open platforms, and simplicity. - -[Keeping platforms open](./../../../2021/02/23/keeping-platforms-open.html "{itemprop='mentions'}") -: How open platforms can lose their openness, and what measures can prevent this. The Web, XMPP, email, and Matrix are examples that highlight both sides of the issue. +
+
Whatsapp and the domestication of users
+
The phenomenon of a class of predatory businesses models I call “user domestication” and defense measures: FLOSS, open platforms, and simplicity.
+
Keeping platforms open
+
How open platforms can lose their openness, and what measures can prevent this. The Web, XMPP, email, and Matrix are examples that highlight both sides of the issue.
+
After two posts spanning over 5000 words, I need to add some nuance. @@ -199,7 +200,7 @@ I readily concede to several points in favor of source availability from a secur - Source code can make analysis _easier_ by _supplementing_ source-independent approaches. The lines between the steps I mentioned in the [four-step vulnerability-fixing process](#how-security-fixes-work) are blurry. -- Patching vulnerabilities is important. Source availability makes it possible for the community, package maintainers, or reporters of a vulnerability to patch software. Package maintainers often blur the line between "packager" and "contributor" by helping projects migrate away from abandoned/insecure dependencies. One example that comes to mind is the Python 2 to Python 3 transition for projects like Calibre.[^12] Being able to fix issues independent of upstream support is an important mitigation against [user domestication](./../../../2021/01/27/whatsapp-and-the-domestication-of-users.html). +- Patching vulnerabilities is important. Source availability makes it possible for the community, package maintainers, or reporters of a vulnerability to patch software. Package maintainers often blur the line between "packager" and "contributor" by helping projects migrate away from abandoned/insecure dependencies. One example that comes to mind is the Python 2 to Python 3 transition for projects like Calibre.[^12] Being able to fix issues independent of upstream support is an important mitigation against [user domestication](../../../../2021/01/27/whatsapp-and-the-domestication-of-users/). - Some developers/vendors don't distribute binaries that make use of modern toolchain-level exploit mitigations (e.g. PIE, RELRO, stack canaries, automatic variable initialization, [CFI](https://clang.llvm.org/docs/ControlFlowIntegrity.html), etc.[^13]). In these cases, building software yourself with these mitigations (or delegating it to a distro that enforces them) requires source code availability (or at least some sort of intermediate representation). diff --git a/content/posts/git-workflow-0.gmi b/content/posts/git-workflow-0.gmi index 2313f14..f2e805b 100644 --- a/content/posts/git-workflow-0.gmi +++ b/content/posts/git-workflow-0.gmi @@ -10,7 +10,7 @@ I'll update this post as I add articles to the series. Articles in this series: -=> ../../../2020/11/18/git-workflow-1.gmi 1. Hydra Hosting +=> ../../../../2020/11/18/git-workflow-1/ 1. Hydra Hosting Articles yet to be written: @@ -42,4 +42,4 @@ Q: I'm not interested in trying anything new, no matter what the benefits are. A: First of all, that wasn't a question. Second, this series isn't for you. You should not read this. I recommend doing literally anything else. -=> ../../../2020/11/18/git-workflow-1.gmi Next: Resilient Git, Part 1: Hydra Hosting +=> ../../../../2020/11/18/git-workflow-1/ Next: Resilient Git, Part 1: Hydra Hosting diff --git a/content/posts/git-workflow-0.md b/content/posts/git-workflow-0.md index 6a3c1cd..0d9aa2a 100644 --- a/content/posts/git-workflow-0.md +++ b/content/posts/git-workflow-0.md @@ -22,7 +22,7 @@ Following the drama, I'm putting together a multi-part guide on how to leverage I'll update this post as I add articles to the series. At the moment, I've planned to write the following articles: -1. [Hydra Hosting](/2020/11/18/git-workflow-1.html): repository hosting. +1. [Hydra Hosting](../../../../2020/11/18/git-workflow-1/): repository hosting. 2. Community feedback (issues, support, etc.) @@ -55,5 +55,5 @@ Q: I'm not interested in trying anything new, no matter what the benefits are. A: First of all, that wasn't a question. Second, this series isn't for you. You should not read this. I recommend doing literally anything else. -Next: Resilient Git, Part 1: [Hydra Hosting](/2020/11/18/git-workflow-1.html) +Next: Resilient Git, Part 1: [Hydra Hosting](../../../../2020/11/18/git-workflow-1/) diff --git a/content/posts/git-workflow-1.gmi b/content/posts/git-workflow-1.gmi index 73dcaef..c180f0d 100644 --- a/content/posts/git-workflow-1.gmi +++ b/content/posts/git-workflow-1.gmi @@ -1,6 +1,6 @@ This is Part 1 of a series called Resilient Git: -=> ../../../2020/11/17/git-workflow-0.gmi Resilient Git +=> ../../../../2020/11/17/git-workflow-0/ Resilient Git The most important part of a project is its code. Resilient projects should have their code in multiple places of equal weight so that work continues normally if a single remote goes down. diff --git a/content/posts/git-workflow-1.md b/content/posts/git-workflow-1.md index 82cd3c4..5ca815e 100644 --- a/content/posts/git-workflow-1.md +++ b/content/posts/git-workflow-1.md @@ -13,7 +13,7 @@ title: "Resilient Git, Part 1: Hydra Hosting" ---
-This is Part 1 of a series called [Resilient Git](/2020/11/17/git-workflow-0.html "{itemprop='relatedLink'}"). +This is Part 1 of a series called Resilient Git
diff --git a/content/posts/keeping-platforms-open.gmi b/content/posts/keeping-platforms-open.gmi index ef1c0d3..9601352 100644 --- a/content/posts/keeping-platforms-open.gmi +++ b/content/posts/keeping-platforms-open.gmi @@ -2,7 +2,7 @@ This article is the second entry of series of posts exploring situations in whic My previous article, Whatsapp and the domestication of users, got more attention than I was expecting. Some responses gave me a lot to think about,¹ especially regarding *actions* we can take. I suggest reading that article first; it explained what "user domestication" is and why it's a problem. It enumerated three countermeasures: FLOSS, simplicity, and open platforms. -=> ./../../../2021/01/27/whatsapp-and-the-domestication-of-users.gmi Whatsapp and the Domestication of Users +=> ../../../../2021/01/27/whatsapp-and-the-domestication-of-users/ Whatsapp and the Domestication of Users Hard problems, by definition, lack easy solutions. Simply choosing (or creating) a platform that avoids user domestication isn't enough if that platform can change. The price of freedom is eternal vigilance; in addition to settling on the right platform, we must ensure that it honors its users in both the present *and the future*. Keeping a platform FLOSS and simple is more straightforward² than keeping a platform "open". @@ -56,7 +56,7 @@ Matrix is an open and federated instant-messaging platform similar to XMPP, with Since there aren't any third-party clients and servers that can replace the official ones, one vendor is close to controlling all parts of the platform. The growing complexity required of clients and servers can also further entrench these dominant implementations, as I explained in the previous article's "Simplicity" section: -=> gemini://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.gmi +=> ../../../../2021/01/27/whatsapp-and-the-domestication-of-users/ Matrix is close to being a boxed platform because the official client and server can iterate independently of the greater ecosystem. diff --git a/content/posts/keeping-platforms-open.md b/content/posts/keeping-platforms-open.md index 15125f3..51049b1 100644 --- a/content/posts/keeping-platforms-open.md +++ b/content/posts/keeping-platforms-open.md @@ -19,7 +19,7 @@ This article is the second entry of series of posts exploring situations in whic Intro­duction {#introduction} ----------------- -My previous article, [Whatsapp and the domestication of users](/2021/01/27/whatsapp-and-the-domestication-of-users.html), got more attention than I was expecting. Some responses gave me a lot to think about,[^1] especially regarding _actions_ we can take. I suggest reading that article first; it explained what "user domestication" is and why it's a problem. It enumerated three countermeasures: FLOSS, simplicity, and open platforms. +My previous article, [Whatsapp and the domestication of users](../../../../2021/01/27/whatsapp-and-the-domestication-of-users/), got more attention than I was expecting. Some responses gave me a lot to think about,[^1] especially regarding _actions_ we can take. I suggest reading that article first; it explained what "user domestication" is and why it's a problem. It enumerated three countermeasures: FLOSS, simplicity, and open platforms. Hard problems, by definition, lack easy solutions. Simply choosing (or creating) a platform that avoids user domestication isn't enough if that platform can change. The price of freedom is eternal vigilance; in addition to settling on the right platform, we must ensure that it honors its users in both the present _and the future_. Keeping a platform FLOSS and simple is more straightforward[^2] than keeping a platform "open". @@ -66,7 +66,7 @@ With enough leverage, a dominant implementation can serve as a reference impleme One example of this phenomenon is [Matrix](https://matrix.org/). Matrix is an open and federated instant-messaging platform similar to XMPP, with a very large spec boasting many features: server-side history, replies, rich text, reactions, room versions, E2EE, avatars, display names, typing indicators, read receipts, device verification...the list goes on and grows every month.[^3] The only client that implements all the necessary features is Element. In addition to being the most popular client, Element practically serves as the reference client implementation: it's developed by the same company that builds the dominant servers and most of the spec. The tight coupling between Element and the Matrix spec allow it to add features at a rate too fast for other clients too keep up; pretty much every Matrix user has to open up Element at some point to perform an action that isn't supported in any other client. On the server side, Synapse is the only server that implements enough of the spec to be usable, with Dendrite coming in second. Both are made by the same company that develops Element. -Since there aren't any third-party clients and servers that can replace the official ones, one vendor is close to controlling all parts of the platform. The growing complexity required of clients and servers can also further entrench these dominant implementations, as I [previously explained](https://seirdy.one/2021/01/27/whatsapp-and-the-domestication-of-users.html#simplicity). Matrix is close to being a boxed platform because the official client and server can iterate independently of the greater ecosystem. +Since there aren't any third-party clients and servers that can replace the official ones, one vendor is close to controlling all parts of the platform. The growing complexity required of clients and servers can also further entrench these dominant implementations, as I [previously explained](../../../../2021/01/27/whatsapp-and-the-domestication-of-users/#simplicity). Matrix is close to being a boxed platform because the official client and server can iterate independently of the greater ecosystem. I don't think that Matrix is going to become a fully closed platform anytime soon; the blog post ["On Privacy versus Freedom"](https://matrix.org/blog/2020/01/02/on-privacy-versus-freedom/) seems to put it on the right side of the closed/open spectrum. Clients like [gomuks](https://github.com/tulir/gomuks) and [FluffyChat](https://fluffychat.im/) seem to keep up with Element well enough to serve as partial replacements. I do, however, find its current state problematic and much closer to "closed" on the closed/open spectrum than XMPP, IRC, and email. diff --git a/content/posts/website-best-practices.gmi b/content/posts/website-best-practices.gmi index 7fc84b1..f5249bb 100644 --- a/content/posts/website-best-practices.gmi +++ b/content/posts/website-best-practices.gmi @@ -34,7 +34,7 @@ Our goal: make a textual website maximally inclusive, using restricted enhanceme One of the defining differences between textual websites and advanced Web 2.0 sites/apps is safety. Most browser vulnerabilities are related to modern Web features like JavaScript and WebGL. If that isn't reason enough, most non-mainstream search indexes have little to no support for JavaScript: -=> ./../../../2021/03/10/search-engines-with-own-indexes.gmi A look at search engines with their own indexes +=> ../../../../2021/03/10/search-engines-with-own-indexes/ A look at search engines with their own indexes The simplicity of basic textual websites should guarantee some extra safety; however, webmasters need to take additional measures to ensure limited use of "modern" risky features. @@ -604,7 +604,7 @@ Even if you set custom colors, ensure that the page is compatible with color ove The Web version of this page is an example application of Technique C25 and the similar G148: -=> https://seirdy.one/2020/11/23/website-best-practices.html The Web mirror of this Gemlog post +=> https://seirdy.one/posts/2020/11/23/website-best-practices/ The Web mirror of this Gemlog post => https://www.w3.org/WAI/WCAG22/Techniques/general/G148 Technique G148: Not specifying background color, not specifying text color, and not using technology features that change those defaults The Web version of this page only uses non-default colors when a user agent requests a dark color scheme (using the "prefers-color-scheme" CSS media query; see the next subsection) and for lightening borders. Any image with a solid background may match the page background; to ensure that their dimensions are clear, I surrounded them with borders. Most browsers will render these borders with the default foreground color, which should be visually distinct from the background. I included borders and/or horizontal rules to break up some sections, since heading-based delineation is either unavailable or insufficient for them. When overriding color schemes or disabling CSS altogether, the page layout remains clear. @@ -1082,7 +1082,7 @@ Excessive indentation makes reading difficult on narrow viewports, but preservin For now, I've decided to keep some indentation on list elements (
    ,
    , diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 9f1fef5..ae73712 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -13,11 +13,11 @@ {{- $isNotes := false -}} {{- if or (eq .Section "notes") (eq .Title "Notes") -}} {{- $isNotes = true -}} - + {{- end }} - + {{ if not $isNotes -}} - + {{- end }} {{ .Title }}{{ if and (lt (len .Title) 54) (ne $canonicalRelPermalink "/") }} - Seirdy{{ end }} {{ $description := .Site.Params.Description -}} @@ -25,8 +25,6 @@ {{- $description = .Params.Description -}} {{- else if .Summary -}} {{- $description = .Summary | replaceRE `\n` ` ` | safeHTML -}} -{{- else if eq $canonicalRelPermalink "/posts.html" -}} - {{- $description = "All the posts on Seirdy's Home" -}} {{- end -}} @@ -63,7 +61,7 @@ -{{- if not (or (ne "page" .Kind) (eq $canonicalRelPermalink "/bookmarks.html") (eq $canonicalRelPermalink "/posts.html")) }} +{{- if not (or (ne "page" .Kind) (eq $canonicalRelPermalink "/bookmarks/") (eq $canonicalRelPermalink "/posts/")) }} {{- end -}} diff --git a/layouts/partials/posts.html b/layouts/partials/posts.html index f5f80ea..fdd2403 100644 --- a/layouts/partials/posts.html +++ b/layouts/partials/posts.html @@ -6,11 +6,11 @@

    Posts

    These are all of my posts, sorted by date (newest first).

    -

    An RSS feed for these posts is available.

    +

    An Atom and RSS feed is availabe, containing the full text of all my posts.

    {{- else -}}

    Posts

    -

    Here’s a selection of my best posts, in featured order. To see the rest, visit my Posts page.

    +

    Here’s a selection of my best posts, in featured order. To see the rest, visit my Posts page.

    {{- end }}

    I edit some of these posts quite often; some are updated indefinitely. Check the “updated” timestamps.

    diff --git a/layouts/shortcodes/indieweb-author.html b/layouts/shortcodes/indieweb-author.html index fdb5572..ba40d43 100644 --- a/layouts/shortcodes/indieweb-author.html +++ b/layouts/shortcodes/indieweb-author.html @@ -24,7 +24,7 @@ (btw this is all made of cuz it is supposed to be inline) --> -