From bddb2afef4ac0163c0dbef10abf31218344efaba Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Mon, 27 May 2024 20:09:32 -0500
Subject: [PATCH 46/75] add /save, minor tweaks to other slashpages
---
config/_default/params.toml | 5 +++++
content/changelog.md | 4 ++--
content/colophon.md | 2 +-
content/homelab.md | 3 +--
content/save.md | 19 +++++++++++++++++++
5 files changed, 28 insertions(+), 5 deletions(-)
create mode 100644 content/save.md
diff --git a/config/_default/params.toml b/config/_default/params.toml
index 7d2a656..17b8837 100644
--- a/config/_default/params.toml
+++ b/config/_default/params.toml
@@ -199,6 +199,11 @@ title = "/homelab"
url = "/homelab"
label = "my homelab setup"
+[[slashPages]]
+title = "/save"
+url = "/save"
+label = "referral links"
+
[[verifyLinks]]
title = "omg.lol"
url = "https://proven.lol/cd10d3"
diff --git a/content/changelog.md b/content/changelog.md
index 4ba862f..c8a7264 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -1,7 +1,7 @@
---
-title: "Changelog"
+title: "/changelog"
date: "2024-05-26T21:19:08Z"
-lastmod: "2024-05-26T21:28:25Z"
+lastmod: "2024-05-28T01:02:49Z"
description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
diff --git a/content/colophon.md b/content/colophon.md
index ab6a2fb..66a372d 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -1,5 +1,5 @@
---
-title: "Colophon"
+title: "/colophon"
date: "2024-05-26T22:30:58Z"
# lastmod: 2024-05-24
description: "There's a lot that goes into this site. Let me tell you how it works."
diff --git a/content/homelab.md b/content/homelab.md
index 762e732..c6b50f8 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -1,9 +1,8 @@
---
-title: "My Playground"
+title: "/homelab"
date: "2024-05-26T21:30:51Z"
# lastmod: 2024-05-24
aliases:
- - homelab
- playground
description: "I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my playground."
featured: false
diff --git a/content/save.md b/content/save.md
new file mode 100644
index 0000000..78c52bb
--- /dev/null
+++ b/content/save.md
@@ -0,0 +1,19 @@
+---
+title: "/save"
+date: "2024-05-28T00:25:51Z"
+# lastmod: 2024-05-24
+description: "Referral links for services I use and heartily recommend."
+featured: false
+toc: true
+timeless: true
+---
+
+### I use and recommend:
+- **[Bunny.net](https://bunny.net?ref=0eh23p45xs)** DNS and CDN service that really hops
+- **[Cloaked](https://join.cloaked.app/?utm_source=referral&utm_campaign=Ee83SGN8OR)** Protect your personal information by generating unique identities
+- **[Fastmail](https://app.fastmail.com/signup/?STKI=/u29803368)** Fast, private email
+- **[NextDNS](https://nextdns.io/?from=2jujzdcc)** Cloud-based DNS filtering
+- **[omg.lol](https://home.omg.lol/referred-by/jbowdre)** The best web address you'll ever have
+- **[Privacy.com](https://app.privacy.com/join/JMMQ7)** Unique merchant-locked cards for every online purchase
+- **[Vultr](https://www.vultr.com/?ref=9488431)** Cost-effective cloud infrastructure
+
From a650ff0720ac0daa6abb558791972e3728ab5d81 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 16:13:55 -0500
Subject: [PATCH 47/75] slashpage tweaks
---
content/changelog.md | 8 ++++++--
content/colophon.md | 11 ++++++-----
content/homelab.md | 6 ++++--
content/save.md | 4 +++-
4 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/content/changelog.md b/content/changelog.md
index c8a7264..00906ca 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -1,16 +1,20 @@
---
title: "/changelog"
date: "2024-05-26T21:19:08Z"
-lastmod: "2024-05-28T01:02:49Z"
+lastmod: "2024-05-28"
description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
---
+High-level list of config/layout changes to the site:
+
**2024-05-27:**
- Replace "powered by" links with slashpages
**2024-05-26:**
- Begin changelog
- Simplify logic for displaying kudos and post reply buttons
-- Reduce gap for paragraphs followed by lists
\ No newline at end of file
+- Reduce gap for paragraphs followed by lists
+
+The full changelog is of course [on GitHub](https://github.com/jbowdre/runtimeterror/commits/main/).
\ No newline at end of file
diff --git a/content/colophon.md b/content/colophon.md
index 66a372d..6bae834 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -1,21 +1,22 @@
---
title: "/colophon"
date: "2024-05-26T22:30:58Z"
-# lastmod: 2024-05-24
+lastmod: "2024-05-28"
description: "There's a lot that goes into this site. Let me tell you how it works."
featured: false
toc: true
timeless: true
---
+I don't consider myself to be a web developer, but I've learned a *ton* through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.
### This site...
-- is built with [Hugo](https://gohugo.io/) using the [risotto](https://github.com/joeroe/risotto) theme with many, many customizations.
+- is built with [Hugo](https://gohugo.io/) using the [risotto](https://github.com/joeroe/risotto) theme with many, many tweaks and customizations.
- uses the font face [Berkeley Mono](https://berkeleygraphics.com/typefaces/berkeley-mono/) ([details](/using-custom-font-hugo/)).
- performs syntax highlighting with [Torchlight](https://torchlight.dev) ([details](/spotlight-on-torchlight/)).
- provides site search with [lunr](https://lunrjs.com/) based on an implementation detailed by [Victoria Drake](https://victoria.dev/blog/add-search-to-hugo-static-sites-with-lunr/).
-- leverages [tinylytics](https://tinylytics.app/) for privacy-friendly analytics.
-- is published to and hosted by [Neocities](https://neocities.org) with a GitHub Actions workflow ([details](/deploy-hugo-neocities-github-actions/)).
+- leverages [tinylytics](https://tinylytics.app/) for privacy-friendly analytics and cute kudos buttons.
+- is published to / hosted by [Neocities](https://neocities.org) with a GitHub Actions workflow ([details](/deploy-hugo-neocities-github-actions/)).
- has a [Gemini](https://geminiprotocol.net) mirror at `gemini://gmi.runtimeterror.dev`, which is deployed to a [Vultr](https://www.vultr.com/) VPS through a GitHub Actions workflow and served with [Agate](https://github.com/mbrubeck/agate).
- uses [bunny.net](https://bunny.net) for DNS and CDN services.
-Look behind the scenes at [github.com/jbowdre/runtimeterror](https://github.com/jbowdre/runtimeterror).
\ No newline at end of file
+Look behind the scenes at [github.com/jbowdre/runtimeterror](https://github.com/jbowdre/runtimeterror).
diff --git a/content/homelab.md b/content/homelab.md
index c6b50f8..22b8673 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -1,14 +1,16 @@
---
title: "/homelab"
date: "2024-05-26T21:30:51Z"
-# lastmod: 2024-05-24
+lastmod: "2024-05-28"
aliases:
- playground
-description: "I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my playground."
+description: "The systems I use for fun."
featured: false
toc: true
timeless: true
---
+I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my playground.
+
### Connectivity
*Everything* is connected to my Tailscale tailnet, with a GitOps-managed ACL to allow access as needed. This lets me access and manage systems without really caring if they're local or remote. [Tailscale is magic](/secure-networking-made-simple-with-tailscale/).
diff --git a/content/save.md b/content/save.md
index 78c52bb..d45ac36 100644
--- a/content/save.md
+++ b/content/save.md
@@ -1,13 +1,15 @@
---
title: "/save"
date: "2024-05-28T00:25:51Z"
-# lastmod: 2024-05-24
+lastmod: "2024-05-28"
description: "Referral links for services I use and heartily recommend."
featured: false
toc: true
timeless: true
---
+I pay for a lot of quality services that I recommend non-stop. This `/saves` page lists few referral links which might save you and/or me some money if you check them out.
+
### I use and recommend:
- **[Bunny.net](https://bunny.net?ref=0eh23p45xs)** DNS and CDN service that really hops
- **[Cloaked](https://join.cloaked.app/?utm_source=referral&utm_campaign=Ee83SGN8OR)** Protect your personal information by generating unique identities
From 96e66472025148a9040b688eb7b3f11b26f7ee9f Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 16:20:43 -0500
Subject: [PATCH 48/75] homelab: add tailscale link
---
content/homelab.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/content/homelab.md b/content/homelab.md
index 22b8673..3f2b12a 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -12,7 +12,7 @@ timeless: true
I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my playground.
### Connectivity
-*Everything* is connected to my Tailscale tailnet, with a GitOps-managed ACL to allow access as needed. This lets me access and manage systems without really caring if they're local or remote. [Tailscale is magic](/secure-networking-made-simple-with-tailscale/).
+*Everything* is connected to my [Tailscale](https://tailscale.com) tailnet, with a GitOps-managed ACL to allow access as needed. This lets me access and manage systems without really caring if they're local or remote. [Tailscale is magic](/secure-networking-made-simple-with-tailscale/).
### On Premise
#### Proxmox VE 8 Cluster
From edba207fe9ce63e5b26c595ff74ed26e211df2b6 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 22:39:43 -0500
Subject: [PATCH 49/75] add /uses
---
config/_default/params.toml | 5 +++
content/uses.md | 77 +++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+)
create mode 100644 content/uses.md
diff --git a/config/_default/params.toml b/config/_default/params.toml
index 17b8837..f1375d7 100644
--- a/config/_default/params.toml
+++ b/config/_default/params.toml
@@ -204,6 +204,11 @@ title = "/save"
url = "/save"
label = "referral links"
+[[slashPages]]
+title = "/uses"
+url = "/uses"
+label = "stuff i use"
+
[[verifyLinks]]
title = "omg.lol"
url = "https://proven.lol/cd10d3"
diff --git a/content/uses.md b/content/uses.md
new file mode 100644
index 0000000..3471218
--- /dev/null
+++ b/content/uses.md
@@ -0,0 +1,77 @@
+---
+title: "/uses"
+date: "2024-05-29"
+# lastmod: {{ .Date | time.Format "2006-01-02" }}
+description: "The hardware, software, and services which keep me going."
+toc: true
+timeless: true
+categories:
+ - slashes
+---
+*Here's some of the stuff I use and how I use it.*
+
+### Hardware
+*Not counting my [homelab](/homelab).*
+- **[Framework Laptop Chromebook Edition](https://frame.work/products/laptop-chromebook-12-gen-intel)** (i5-1240P | 32GB RAM | 1TB NVMe). Yep, it's an overpowered Chromebook, and my primary computing device. I make full use of the [ChromeOS Linux Development Environment](https://www.chromium.org/chromium-os/developer-library/guides/containers/containers-and-vms/), with [Nix](https://nixos.org/) for package management.
+- **[Pixelbook](https://blog.google/products/pixelbook/introducing-pixelbook/)** running [NixOS](https://nixos.org/) for when I need a "real" Linux computer.
+- **[BOOX Note Air3 C](https://shop.boox.com/products/noteair3) e-ink tablet** for reading and (hand)writing notes (more on this [here](https://scribbles.jbowdre.lol/post/boox-note-air-3-c-e-ink-writing-tablet)).
+- **[Creality Ender 3 Pro 3D Printer](https://www.creality.com/products/ender-3-pro-3d-printer)**, or at least that's how it started. It's got a direct-drive conversion, a "silent" board running Klipper firmware, and more printed part upgrades than I can remember.
+- **[Weatherflow Tempest Weather Station](https://shop.tempest.earth/products/tempest)** to help me get my Wx nerd on.
+
+### Everyday Carry
+*What has it got in its pockets/backpack?*
+- **[Flipper Zero](https://flipperzero.one/)** running [Momentum Firmware](https://momentum-fw.dev/) in my pocket or bag for on-the-go hacking and exploration.
+- **[Leatherman FREE K4](https://www.leatherman.com/free-k4-590.html)** knife/multitool in my pocket for cutting and tinkering.
+- **[Milky lactase tablets](https://shopmilky.com/)** in my wallet so I can enjoy dairy without consequences.
+- **[Oura Ring](https://ouraring.com/product/rings/heritage)** (3rd generation, Heritage Black) on my middle finger for sleep and readiness/recovery tracking.
+- **[Pixel 8 Pro](https://store.google.com/product/pixel_8_pro)** in my pocket, running [GrapheneOS](https://grapheneos.org/) as my daily-driver (more on how I use that [here](https://scribbles.jbowdre.lol/post/daily-driving-grapheneos)).
+- **[Pixel Buds Pro](https://store.google.com/product/pixel_buds_pro)** in my ears, with noise cancelling so I don't have to acknowledge the world around me.
+- **[Pixel Watch 2](https://store.google.com/product/pixel_watch_2)** on my wrist, for notifications and fitness tracking.
+- **[ProxGrind RF Field Detector Card](https://www.redteamtools.com/RFID_LF_HF_Field_Detector_Card)** on my keychain to quickly learn about RFID/NFC readers.
+- **[Ridge Wallet](https://ridge.com/products/aluminum-gunmetal)** in my pocket for keeping my cards handy.
+- **[Ti EDC Backpack](https://bigidesign.com/pages/ti-edc-backpack-landing-page)** for carrying my stuff.
+- **[Yubico Yubikey 5C NFC](https://www.yubico.com/product/yubikey-5c-nfc/)** on my keychain for hardware token things.
+
+### Software
+*Computer and web apps.*
+- **[Calibre](https://calibre-ebook.com/)** for collecting, converting, and managing my eBooks.
+- **[Fish shell](https://fishshell.com/)**, a really smart, modern, heavily configurable shell.
+- **[Home Assistant](https://www.home-assistant.io/)** for controlling my "smart" home.
+- **[Home Manager](https://github.com/nix-community/home-manager)** for managing packages and configurations across multiple systems ([dotfiles](https://github.com/jbowdre/dotfiles)).
+- **[Immich](https://immich.app/)**, a self-hosted photo and video management solution.
+- **[Linkding](https://github.com/sissbruecker/linkding)** as a self-hosted bookmark manager.
+- **[Miniflux](https://miniflux.app/)**, a self-hosted minimalist feed reader.
+- **[Obsidian](https://obsidian.md/)** for collecting/organizing notes. You can see some of them [here](https://notes.runtimeterror.dev/).
+- **[Phanpy](https://phanpy.social/#/)**, a minimal and opinionated Mastodon web client.
+- **[Tabby](https://tabby.sh/)**, a beautiful cross-platform terminal app.
+- **[tmux](https://github.com/tmux/tmux)** because *I heard you like terminals so I put a terminal in your terminal so you can terminal while you terminal*.
+- **[Vim](https://www.vim.org/)** for coding and development without a GUI.
+- **[VSCode](https://code.visualstudio.com/)** for most coding and development.
+
+### Android Apps
+*Skipping the obvious ones for services mentioned elsewhere on this page...*
+- **[Cheogram](https://play.google.com/store/apps/details?id=com.cheogram.android.playstore)** ([F-Droid](https://f-droid.org/packages/com.cheogram.android/)) XMPP client, with great integration to [jmp.chat](https://jmp.chat/).
+- **[Element](https://play.google.com/store/apps/details?id=im.vector.app)** ([F-Droid](https://f-droid.org/en/packages/im.vector.app/)) Matrix chat client.
+- **[Firefox Focus](https://play.google.com/store/apps/details?id=org.mozilla.focus)** Fast and private web browser for throw-away browsing sessions.
+- **[Firefox](https://play.google.com/store/apps/details?id=org.mozilla.firefox)** for general web browsing.
+- **[JBV1](https://play.google.com/store/apps/details?id=com.johnboysoftware.jbv1)** gives super powers to my Valentine One radar detector.
+- **[Lagrange](https://skyjake.github.io/fdroid/repo/)** browser for [Gemini](https://geminiprotocol.net/).
+- **[RaceBox](https://play.google.com/store/apps/details?id=pro.RaceBox.androidapp)** / **[RaceChrono](https://play.google.com/store/apps/details?id=com.racechrono.app)** for recording GPS/acceleration data during my [autocross runs](https://www.youtube.com/playlist?list=PLwzr4uKY-x-EwCv-rWNGefdikuW6Oy9O_).
+- **[RadarScope](https://play.google.com/store/apps/details?id=com.basevelocity.radarscope)** weather radar and information.
+- **[SimpleX Chat](https://play.google.com/store/apps/details?id=chat.simplex.app)** ([F-Droid](https://f-droid.org/en/packages/chat.simplex.app/)) for end-to-end encrypted chats without any user identifiers.
+- **[Squoosh](https://squoosh.app/)** for compressing and EXIF-stripping photos before sharing.
+- **[Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm)** for automated profiles on my phone.
+- **[WiFiman](https://play.google.com/store/apps/details?id=com.ubnt.usurvey)** for scanning a testing wireless networks.
+- **[Yubico Authenticator](https://play.google.com/store/apps/details?id=com.yubico.yubioath)** for storing TOTP secrets on a hardware token.
+
+### Services
+*These may include affiliate links.*
+- **[Cloaked](https://join.cloaked.app/?utm_source=referral&utm_campaign=Ee83SGN8OR)** for generating unique identies (email addresses + phone numbers) for every web sign-up.
+- **[Fastmail](https://app.fastmail.com/signup/?STKI=/u29803368)** for fast, private email service with a ton of nice bonus features.
+- **[Forward Email](https://forwardemail.net/)** for routing email to/from my various project domains.
+- **[JMP.chat](https://jmp.chat/)** for a phone number backed by XMPP.
+- **[NextDNS](https://nextdns.io/?from=2jujzdcc)** for privacy-protecting ad-blocking DNS filtering in the cloud.
+- **[Obico](https://www.obico.io/)** for controlling and monitoring 3D prints.
+- **[omg.lol](https://home.omg.lol/referred-by/jbowdre)** for some really handy web tools and one of the best communities of interesting people.
+- **[Privacy.com](https://app.privacy.com/join/JMMQ7)** for creating virtual merchant-locked credit cards to keep me safe when shopping online.
+- **[Tailscale](https://tailscale.com)** for connecting all my various systems and making them think that they're on the same LAN.
From 3066da13d62b6459a12cbe2c664a6fc31473c6ca Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 22:40:10 -0500
Subject: [PATCH 50/75] minor slash tweaks
---
content/changelog.md | 2 ++
content/colophon.md | 9 ++++++---
content/homelab.md | 23 ++++++++++++-----------
content/save.md | 8 +++++---
4 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/content/changelog.md b/content/changelog.md
index 00906ca..b387bf4 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -6,6 +6,8 @@ description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
+categories:
+ - slashes
---
High-level list of config/layout changes to the site:
diff --git a/content/colophon.md b/content/colophon.md
index 6bae834..9b247c5 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -6,8 +6,10 @@ description: "There's a lot that goes into this site. Let me tell you how it wor
featured: false
toc: true
timeless: true
+categories:
+ - slashes
---
-I don't consider myself to be a web developer, but I've learned a *ton* through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.
+*I don't consider myself to be a web developer, but I've learned a *ton* through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.*
### This site...
- is built with [Hugo](https://gohugo.io/) using the [risotto](https://github.com/joeroe/risotto) theme with many, many tweaks and customizations.
@@ -15,8 +17,9 @@ I don't consider myself to be a web developer, but I've learned a *ton* through
- performs syntax highlighting with [Torchlight](https://torchlight.dev) ([details](/spotlight-on-torchlight/)).
- provides site search with [lunr](https://lunrjs.com/) based on an implementation detailed by [Victoria Drake](https://victoria.dev/blog/add-search-to-hugo-static-sites-with-lunr/).
- leverages [tinylytics](https://tinylytics.app/) for privacy-friendly analytics and cute kudos buttons.
-- is published to / hosted by [Neocities](https://neocities.org) with a GitHub Actions workflow ([details](/deploy-hugo-neocities-github-actions/)).
-- has a [Gemini](https://geminiprotocol.net) mirror at `gemini://gmi.runtimeterror.dev`, which is deployed to a [Vultr](https://www.vultr.com/) VPS through a GitHub Actions workflow and served with [Agate](https://github.com/mbrubeck/agate).
- uses [bunny.net](https://bunny.net) for DNS and CDN services.
+- is published to / hosted by [Neocities](https://neocities.org) with a GitHub Actions workflow ([details](/deploy-hugo-neocities-github-actions/)).
+- has a [Gemini](https://geminiprotocol.net) mirror at `gemini://gmi.runtimeterror.dev`. This is generated from a [Hugo gemtext post layout](https://github.com/jbowdre/runtimeterror/blob/main/layouts/_default/single.gmi), deployed to a [Vultr](https://www.vultr.com/) VPS through a GitHub Actions workflow, and served with [Agate](https://github.com/mbrubeck/agate).
+
Look behind the scenes at [github.com/jbowdre/runtimeterror](https://github.com/jbowdre/runtimeterror).
diff --git a/content/homelab.md b/content/homelab.md
index 3f2b12a..d973c40 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -8,14 +8,16 @@ description: "The systems I use for fun."
featured: false
toc: true
timeless: true
+categories:
+ - slashes
---
-I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my playground.
+*I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my technical playground.*
-### Connectivity
-*Everything* is connected to my [Tailscale](https://tailscale.com) tailnet, with a GitOps-managed ACL to allow access as needed. This lets me access and manage systems without really caring if they're local or remote. [Tailscale is magic](/secure-networking-made-simple-with-tailscale/).
+Everything is connected to my [Tailscale](https://tailscale.com) tailnet, with a GitOps-managed ACL to allow access as needed. This lets me access and manage systems without really caring if they're local or remote. [Tailscale is magic](/secure-networking-made-simple-with-tailscale/).
### On Premise
-#### Proxmox VE 8 Cluster
+
+**Proxmox VE 8 Cluster**
- 1x [Intel NUC 9 Extreme (NUC9i9QNX)](https://www.amazon.com/Intel-Extreme-NUC9i9QNX-Single-Model/dp/B0851JV4R8)
- 9th Gen Intel® Core™ i9-9980HK (8 cores @ 2.40GHz)
- 64GB RAM
@@ -43,7 +45,7 @@ The Proxmox cluster hosts a number of VMs and LXC containers:
- `salt`: Ubuntu 20.04 [Salt](https://saltproject.io/) Master server for configuration management
- `unifi`: UniFi Network Application. Manages the Unifi switch.
-#### Hashicorp Nomad Cluster (WIP)
+**Hashicorp Nomad Cluster (WIP)**
- 3x [Zima Blade 7700](https://shop.zimaboard.com/products/zimablade-single-board-server-for-cyber-native)
- Intel® Celeron® N3450 (4 cores @ 1.10GHz)
- 16GB RAM
@@ -53,9 +55,7 @@ The Proxmox cluster hosts a number of VMs and LXC containers:
This triad of cute little single-board computers will *eventually* be a combination Nomad + Consul + Vault cluster, fully managed with Salt.
-Also here's some more about it.
-
-#### [PiAware](https://www.flightaware.com/adsb/piaware/build) ADS-B/MLAT Receiver
+**[PiAware](https://www.flightaware.com/adsb/piaware/build) ADS-B/MLAT Receiver**
- Raspberry Pi 2 Model B
- 2x [RTL-SDR Blog V3 R860 RTL2832U 1PPM TCXO SMA Dongle](https://www.amazon.com/gp/product/B0129EBDS2)
- [SIGNALPLUS 1090MHz 12dBi 1.1m ADS-B Antenna](https://www.amazon.com/gp/product/B08XYRMG3V/)
@@ -63,15 +63,16 @@ Also here's some more about it.
I like to know what's flying overhead, and I'm also feeding flight data to [flightaware.com](https://flightaware.com) and [adsb.fi](https://adsb.fi).
### Cloud
-#### [Oracle Cloud Infrastructure](https://www.oracle.com/cloud/free/)
+
+**[Oracle Cloud Infrastructure](https://www.oracle.com/cloud/free/)**
- `git`: Ubuntu 22.04 [Forgejo](https://forgejo.org/) server for [git.bowdre.net](https://git.bowdre.net/explore/repos)
- `smp2`: Ubuntu 22.04 [SimpleX](/simplex/) server
-#### [Google Cloud Platform](https://cloud.google.com/free/docs/free-cloud-features)
+**[Google Cloud Platform](https://cloud.google.com/free/docs/free-cloud-features)**
- `smp`: Ubuntu 22.04 [SimpleX](/simplex/) server
- `smp1`: Ubuntu 22.04 [SimpleX](/simplex/) server
-#### [Vultr](https://www.vultr.com)
+**[Vultr](https://www.vultr.com)**
- `volly`: Ubuntu 22.04 Docker host for various workloads, served either through [Caddy](https://caddyserver.com/) or [Cloudflare Tunnel](/publish-services-cloudflare-tunnel/):
- [Agate](https://github.com/mbrubeck/agate) Gemini server ([post](/gemini-capsule-gempost-github-actions/))
- [Crowdsec](https://www.crowdsec.net) security engine
diff --git a/content/save.md b/content/save.md
index d45ac36..100a516 100644
--- a/content/save.md
+++ b/content/save.md
@@ -2,13 +2,14 @@
title: "/save"
date: "2024-05-28T00:25:51Z"
lastmod: "2024-05-28"
-description: "Referral links for services I use and heartily recommend."
+description: "Referral links for products and services I use and heartily recommend."
featured: false
toc: true
timeless: true
+categories:
+ - slashes
---
-
-I pay for a lot of quality services that I recommend non-stop. This `/saves` page lists few referral links which might save you and/or me some money if you check them out.
+*This `/saves` page lists my referral/affiliate links for high-quality products and services that I use on a daily basis. These are things I frequently recommend to others anyway, but signing up with these links might save one or both of us some money.*
### I use and recommend:
- **[Bunny.net](https://bunny.net?ref=0eh23p45xs)** DNS and CDN service that really hops
@@ -16,6 +17,7 @@ I pay for a lot of quality services that I recommend non-stop. This `/saves` pag
- **[Fastmail](https://app.fastmail.com/signup/?STKI=/u29803368)** Fast, private email
- **[NextDNS](https://nextdns.io/?from=2jujzdcc)** Cloud-based DNS filtering
- **[omg.lol](https://home.omg.lol/referred-by/jbowdre)** The best web address you'll ever have
+- **[Oura](https://ouraring.com/raf/e3b03b82b5)** A stylish ring to track your sleep and recovery
- **[Privacy.com](https://app.privacy.com/join/JMMQ7)** Unique merchant-locked cards for every online purchase
- **[Vultr](https://www.vultr.com/?ref=9488431)** Cost-effective cloud infrastructure
From 439c929ceaaab311cd14a915194fcdf74b001800 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 22:40:24 -0500
Subject: [PATCH 51/75] create slashes category page
---
content/categories/slashes/_index.md | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 content/categories/slashes/_index.md
diff --git a/content/categories/slashes/_index.md b/content/categories/slashes/_index.md
new file mode 100644
index 0000000..6cd7eb4
--- /dev/null
+++ b/content/categories/slashes/_index.md
@@ -0,0 +1,7 @@
+---
+title: Slashes
+aliases:
+ - slashes
+description: >
+ The indieweb seems to be all about these "slashpages". Here are mine.
+---
\ No newline at end of file
From 110fb888e9de20d8f2391883741ef7a292283345 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 28 May 2024 22:45:49 -0500
Subject: [PATCH 52/75] remove slashes category until i figure out how best to
present it
---
content/categories/slashes/_index.md | 7 -------
content/changelog.md | 2 --
content/colophon.md | 2 --
content/homelab.md | 2 --
content/save.md | 2 --
content/uses.md | 2 --
6 files changed, 17 deletions(-)
delete mode 100644 content/categories/slashes/_index.md
diff --git a/content/categories/slashes/_index.md b/content/categories/slashes/_index.md
deleted file mode 100644
index 6cd7eb4..0000000
--- a/content/categories/slashes/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Slashes
-aliases:
- - slashes
-description: >
- The indieweb seems to be all about these "slashpages". Here are mine.
----
\ No newline at end of file
diff --git a/content/changelog.md b/content/changelog.md
index b387bf4..00906ca 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -6,8 +6,6 @@ description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
-categories:
- - slashes
---
High-level list of config/layout changes to the site:
diff --git a/content/colophon.md b/content/colophon.md
index 9b247c5..cc21d2d 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -6,8 +6,6 @@ description: "There's a lot that goes into this site. Let me tell you how it wor
featured: false
toc: true
timeless: true
-categories:
- - slashes
---
*I don't consider myself to be a web developer, but I've learned a *ton* through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.*
diff --git a/content/homelab.md b/content/homelab.md
index d973c40..8be61eb 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -8,8 +8,6 @@ description: "The systems I use for fun."
featured: false
toc: true
timeless: true
-categories:
- - slashes
---
*I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my technical playground.*
diff --git a/content/save.md b/content/save.md
index 100a516..941f93f 100644
--- a/content/save.md
+++ b/content/save.md
@@ -6,8 +6,6 @@ description: "Referral links for products and services I use and heartily recomm
featured: false
toc: true
timeless: true
-categories:
- - slashes
---
*This `/saves` page lists my referral/affiliate links for high-quality products and services that I use on a daily basis. These are things I frequently recommend to others anyway, but signing up with these links might save one or both of us some money.*
diff --git a/content/uses.md b/content/uses.md
index 3471218..7341f73 100644
--- a/content/uses.md
+++ b/content/uses.md
@@ -5,8 +5,6 @@ date: "2024-05-29"
description: "The hardware, software, and services which keep me going."
toc: true
timeless: true
-categories:
- - slashes
---
*Here's some of the stuff I use and how I use it.*
From 7dd1259a143173a1413d27d65bf711e6b791b712 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Wed, 29 May 2024 15:06:16 -0500
Subject: [PATCH 53/75] display post descriptions (if set) on archive pages,
otherwise summaries
---
content/changelog.md | 7 +++++--
layouts/partials/archive.html | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/content/changelog.md b/content/changelog.md
index 00906ca..f81d545 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -1,13 +1,16 @@
---
title: "/changelog"
date: "2024-05-26T21:19:08Z"
-lastmod: "2024-05-28"
+lastmod: "2024-05-29"
description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
---
-High-level list of config/layout changes to the site:
+*High-level list of config/layout changes to the site:*
+
+**2024-05-29:**
+- Display post descriptions (if set) on archive pages; otherwise fall back to summaries
**2024-05-27:**
- Replace "powered by" links with slashpages
diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html
index b6d6ee0..9fb235f 100644
--- a/layouts/partials/archive.html
+++ b/layouts/partials/archive.html
@@ -54,7 +54,7 @@
- {{ .Summary }}
+ {{if .Description }}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}
From d29f86f2824d4903b3bb8e85d01a0be5c4323780 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Wed, 29 May 2024 15:21:45 -0500
Subject: [PATCH 54/75] add /slashes archive page
---
content/changelog.md | 2 ++
content/colophon.md | 3 ++-
content/homelab.md | 3 ++-
content/save.md | 1 +
content/uses.md | 3 ++-
layouts/partials/archive.html | 26 +++++++++++++++++++++++---
layouts/partials/aside.html | 20 ++++++++++++++++----
layouts/partials/footer.html | 2 +-
8 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/content/changelog.md b/content/changelog.md
index f81d545..1d9d44a 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -6,11 +6,13 @@ description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
+categories: /slashes
---
*High-level list of config/layout changes to the site:*
**2024-05-29:**
- Display post descriptions (if set) on archive pages; otherwise fall back to summaries
+- Add /slashes archive page
**2024-05-27:**
- Replace "powered by" links with slashpages
diff --git a/content/colophon.md b/content/colophon.md
index cc21d2d..9179cfb 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -6,8 +6,9 @@ description: "There's a lot that goes into this site. Let me tell you how it wor
featured: false
toc: true
timeless: true
+categories: /slashes
---
-*I don't consider myself to be a web developer, but I've learned a *ton* through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.*
+*I don't consider myself to be a web developer, but I've learned a **ton** through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.*
### This site...
- is built with [Hugo](https://gohugo.io/) using the [risotto](https://github.com/joeroe/risotto) theme with many, many tweaks and customizations.
diff --git a/content/homelab.md b/content/homelab.md
index 8be61eb..3400f2f 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -4,10 +4,11 @@ date: "2024-05-26T21:30:51Z"
lastmod: "2024-05-28"
aliases:
- playground
-description: "The systems I use for fun."
+description: "The systems I use for fun and enrichment."
featured: false
toc: true
timeless: true
+categories: /slashes
---
*I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my technical playground.*
diff --git a/content/save.md b/content/save.md
index 941f93f..2a33a6f 100644
--- a/content/save.md
+++ b/content/save.md
@@ -6,6 +6,7 @@ description: "Referral links for products and services I use and heartily recomm
featured: false
toc: true
timeless: true
+categories: /slashes
---
*This `/saves` page lists my referral/affiliate links for high-quality products and services that I use on a daily basis. These are things I frequently recommend to others anyway, but signing up with these links might save one or both of us some money.*
diff --git a/content/uses.md b/content/uses.md
index 7341f73..f9ddc8a 100644
--- a/content/uses.md
+++ b/content/uses.md
@@ -2,9 +2,10 @@
title: "/uses"
date: "2024-05-29"
# lastmod: {{ .Date | time.Format "2006-01-02" }}
-description: "The hardware, software, and services which keep me going."
+description: "The hardware, software, services, and gear which I use (almost) daily."
toc: true
timeless: true
+categories: /slashes
---
*Here's some of the stuff I use and how I use it.*
diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html
index 9fb235f..7b8b8d3 100644
--- a/layouts/partials/archive.html
+++ b/layouts/partials/archive.html
@@ -7,7 +7,7 @@
{{ site.Params.indexTitle | markdownify }}
{{ else }}
{{ .Title | markdownify }}{{ if eq .Kind "term" }}
- {{ with .Description }}{{ . }}{{ else }} {{ end }}
+ {{ if eq .Title "/Slashes" }}My collection of slashpages.{{ else }}{{ with .Description }}{{ . }}{{ else }} {{ end }}{{ end }}
{{ end }}{{ end }}
{{ .Content }}
@@ -43,7 +43,26 @@
{{ end }}
{{- end }}
{{- else }}
- {{- range (.Paginate $pages).Pages }}
+ {{- if eq .Title "/Slashes" }}
+ {{- $sortedSlashes := sort $pages "Title" }}
+ {{- range $sortedSlashes }}
+ {{- $postDate := .Date.Format "2006-01-02" }}
+ {{- $updateDate := .Lastmod.Format "2006-01-02" }}
+
+
+
From 2f42341117f154af3c1edc268b34ded779ae1316 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Thu, 30 May 2024 08:36:25 -0500
Subject: [PATCH 58/75] fix broken taxo feed styling
---
content/posts/prettify-hugo-rss-feed-xslt/index.md | 3 ++-
layouts/_default/rss.xml | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/content/posts/prettify-hugo-rss-feed-xslt/index.md b/content/posts/prettify-hugo-rss-feed-xslt/index.md
index b9e36f6..3667692 100644
--- a/content/posts/prettify-hugo-rss-feed-xslt/index.md
+++ b/content/posts/prettify-hugo-rss-feed-xslt/index.md
@@ -1,6 +1,7 @@
---
title: "Prettify Hugo RSS Feeds with XSLT"
date: 2024-04-30
+lastmod: "2024-05-30"
description: "Making my Hugo-generated RSS XML look as good to human visitors as it does to feed readers."
featured: false
thumbnail: pretty-feed.png
@@ -95,7 +96,7 @@ All I really need to do to get this XML ready to be styled is just link in a sty
{{- $pages = $pages | first $limit -}}
{{- end -}}
{{- printf "" | safeHTML }}
-{{ printf "" | safeHTML }}
+{{ printf "" | safeHTML }}
" | safeHTML }}
-{{ printf "" | safeHTML }}
+{{ printf "" | safeHTML }}
Date: Thu, 30 May 2024 09:16:24 -0500
Subject: [PATCH 59/75] open 'notes' header link in a new tab since it goes to
an external site
---
config/_default/menu.toml | 14 +++++++++++++-
layouts/partials/header.html | 10 ++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
create mode 100644 layouts/partials/header.html
diff --git a/config/_default/menu.toml b/config/_default/menu.toml
index 2db8f2a..b95637b 100644
--- a/config/_default/menu.toml
+++ b/config/_default/menu.toml
@@ -9,33 +9,45 @@
name = "self-hosting"
url = "/categories/self-hosting/"
weight = 1
+ [[main.params]]
+ target = "_self"
[[main]]
identifier = "tips"
name = "tips"
url = "/categories/tips/"
weight = 1
+ [[main.params]]
+ target = "_self"
[[main]]
identifier = "code"
name = "code"
url = "/categories/code/"
weight = 1
+ [[main.params]]
+ target = "_self"
[[main]]
identifier = "backstage"
name = "backstage"
url = "/categories/backstage/"
weight = 1
+ [[main.params]]
+ target = "_self"
[[main]]
identifier = "slashes"
name = "slashes"
- url = "/categories/slashes/"
+ url = "/slashes/"
weight = 10
+ [[main.params]]
+ target = "_self"
[[main]]
identifier = "notes"
name = "notes"
url = "https://notes.runtimeterror.dev"
weight = 100
+ [[main.params]]
+ target = "_blank"
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
new file mode 100644
index 0000000..7bf4fcf
--- /dev/null
+++ b/layouts/partials/header.html
@@ -0,0 +1,10 @@
+
+
From b1cc74ed3aae16369cd9830e827955aa0ce78218 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Thu, 30 May 2024 09:18:09 -0500
Subject: [PATCH 60/75] general improvements for handling 'slashes' category
---
content/about.md | 2 +-
content/categories/slashes/_index.md | 8 ++++++++
content/changelog.md | 2 +-
content/colophon.md | 2 +-
content/homelab.md | 2 +-
content/save.md | 2 +-
content/uses.md | 2 +-
layouts/partials/archive.html | 11 ++++++++---
layouts/partials/aside.html | 4 ++--
layouts/partials/footer.html | 2 +-
10 files changed, 25 insertions(+), 12 deletions(-)
create mode 100644 content/categories/slashes/_index.md
diff --git a/content/about.md b/content/about.md
index 9fc360c..c5dda2a 100644
--- a/content/about.md
+++ b/content/about.md
@@ -5,7 +5,7 @@ lastmod: "2024-05-29"
description: "A brief introduction to me, this blog, and what you're likely to see here."
timeless: true
toc: false
-categories: "/slashes"
+categories: slashes
---
**Hi, I'm John.**
diff --git a/content/categories/slashes/_index.md b/content/categories/slashes/_index.md
new file mode 100644
index 0000000..ab09aa0
--- /dev/null
+++ b/content/categories/slashes/_index.md
@@ -0,0 +1,8 @@
+---
+title: slashes
+url: /slashes
+aliases:
+ - categories/slashes
+description: >
+ My collection of slashpages.
+---
\ No newline at end of file
diff --git a/content/changelog.md b/content/changelog.md
index f119f68..be569b9 100644
--- a/content/changelog.md
+++ b/content/changelog.md
@@ -6,7 +6,7 @@ description: "Maybe I should keep a log of all my site-related tinkering?"
featured: false
toc: false
timeless: true
-categories: /slashes
+categories: slashes
---
*High-level list of config/layout changes to the site.*
diff --git a/content/colophon.md b/content/colophon.md
index 9179cfb..15c6c4b 100644
--- a/content/colophon.md
+++ b/content/colophon.md
@@ -6,7 +6,7 @@ description: "There's a lot that goes into this site. Let me tell you how it wor
featured: false
toc: true
timeless: true
-categories: /slashes
+categories: slashes
---
*I don't consider myself to be a web developer, but I've learned a **ton** through the process of building/tweaking/maintaining this site. The [colophon](https://indieweb.org/colophon) provides a quick overview of what powers `runtimeterror.dev`.*
diff --git a/content/homelab.md b/content/homelab.md
index 3400f2f..f98c015 100644
--- a/content/homelab.md
+++ b/content/homelab.md
@@ -8,7 +8,7 @@ description: "The systems I use for fun and enrichment."
featured: false
toc: true
timeless: true
-categories: /slashes
+categories: slashes
---
*I enjoy tinkering with small technology projects, and I learn a ton from these experiments. I also self-host a number of apps/services from my home as well as various cloud environments. This page describes some of my technical playground.*
diff --git a/content/save.md b/content/save.md
index 2a33a6f..819e9ae 100644
--- a/content/save.md
+++ b/content/save.md
@@ -6,7 +6,7 @@ description: "Referral links for products and services I use and heartily recomm
featured: false
toc: true
timeless: true
-categories: /slashes
+categories: slashes
---
*This `/saves` page lists my referral/affiliate links for high-quality products and services that I use on a daily basis. These are things I frequently recommend to others anyway, but signing up with these links might save one or both of us some money.*
diff --git a/content/uses.md b/content/uses.md
index f9ddc8a..5286f9d 100644
--- a/content/uses.md
+++ b/content/uses.md
@@ -5,7 +5,7 @@ date: "2024-05-29"
description: "The hardware, software, services, and gear which I use (almost) daily."
toc: true
timeless: true
-categories: /slashes
+categories: slashes
---
*Here's some of the stuff I use and how I use it.*
diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html
index a4f283a..a62dc97 100644
--- a/layouts/partials/archive.html
+++ b/layouts/partials/archive.html
@@ -6,8 +6,13 @@
{{ if .IsHome }}
{{ site.Params.indexTitle | markdownify }}
{{ else }}
-
{{ .Title | markdownify }}{{ if eq .Kind "term" }}
- {{ if eq .Title "/slashes" }}My collection of slashpages.{{ else }}{{ with .Description }}{{ . }}{{ else }} {{ end }}{{ end }}
+ {{ if eq .Title "slashes" }}
+
- ["{{ with $updateDate }}{{ . }}{{ else }}{{ .Date }}{{ end }}"]
+ ["{{ with $updateDate }}{{ . }}{{ else }}{{ $postDate }}{{ end }}"]
From b1625931bee7cab91552b7bff9f0dd6b4dafae45 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Sat, 1 Jun 2024 22:00:46 -0500
Subject: [PATCH 72/75] archive: improve templating logic
---
layouts/partials/archive.html | 100 +++++++++++++---------------------
1 file changed, 39 insertions(+), 61 deletions(-)
diff --git a/layouts/partials/archive.html b/layouts/partials/archive.html
index b408930..52ef31b 100644
--- a/layouts/partials/archive.html
+++ b/layouts/partials/archive.html
@@ -11,82 +11,60 @@
My collection of slash pages.
{{ else }}
{{ .Title | markdownify }}{{ if eq .Kind "term" }}
- {{ with .Description }}{{ . }}{{ else }} {{ end }}
+ {{ with .Description }}{{ . }}{{ end }}
{{ end }}
+
{{ end }}{{ end }}
{{ .Content }}
-
-{{- if eq .Kind "taxonomy" }}
- {{- if eq .Title "Tags" }}
- {{/* list of all tags */}}
-
- {{- range $key, $value := .Site.Taxonomies }}
- {{- $slicedTags := ($value.ByCount) }}
- {{- range $slicedTags }}
- {{- if eq $key "tags"}}
-
+ ["{{- $postDate }}"{{- if ne $postDate $updateDate }}, "{{ $updateDate }}"{{ end }}]
+
+
+
+ {{if .Description }}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}
- {{- end }}
- {{- template "_internal/pagination.html" . }}
{{- end }}
+ {{- template "_internal/pagination.html" . }}
{{- end }}
\ No newline at end of file
From 48e9c19ee41ec9764573b2d835944f4704de3ce1 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Sun, 2 Jun 2024 21:20:22 -0500
Subject: [PATCH 73/75] new post: the-slash-page-scoop
---
content/posts/the-slash-page-scoop/index.md | 321 ++++++++++++++++++++
1 file changed, 321 insertions(+)
create mode 100644 content/posts/the-slash-page-scoop/index.md
diff --git a/content/posts/the-slash-page-scoop/index.md b/content/posts/the-slash-page-scoop/index.md
new file mode 100644
index 0000000..4f124bc
--- /dev/null
+++ b/content/posts/the-slash-page-scoop/index.md
@@ -0,0 +1,321 @@
+---
+title: "The Slash Page Scoop"
+date: 2024-06-02
+# lastmod: 2024-05-30
+description: "I've added new slash pages to the site to share some background info on who I am, what I use, and how this site works."
+featured: false
+toc: true
+reply: true
+categories: Backstage
+tags:
+ - hugo
+ - meta
+---
+Inspired by [Robb Knight](https://rknight.me/)'s recent [slash pages](https://slashpages.net/) site, I spent some time over the past week or two drafting some slash pages of my own.
+
+> Slash pages are common pages you can add to your website, usually with a standard, root-level slug like `/now`, `/about`, or `/uses`. They tend to describe the individual behind the site and are distinguishing characteristics of the IndieWeb.
+
+On a blog that is otherwise organized in a fairly chronological manner, slash pages provide a way share information out-of-band. I think they're great for more static content (like an about page that says who I am) as well as for content that may be regularly updated (like a changelog).
+
+The pages that I've implemented (so far) include:
+- [/about](/about) tells a bit about me and my background
+- [/changelog](/changelog) is just *starting* to record some of visual/functional changes I make here
+- [/colophon](/colophon) describes the technology and services used in producing/hosting this site
+- [/homelab](/homelab) isn't a canonical slash page but it provides a lot of details about my homelab setup
+- [/save](/save) shamelessly hosts referral links for things I love and think you'll love too
+- [/uses](/uses) shares the stuff I use on a regular basis
+
+And, of course, these are collected in one place at [/slashes](/slashes).
+
+Feel free to stop here if you just want to check out the slash pages, or keep on reading for some nerd stuff about how I implemented them on my Hugo site.
+
+---
+
+### Implementation
+All of my typical blog posts get created within the site's Hugo directory under `content/posts/`, like this one at `content/posts/the-slash-page-scoop/index.md`. They get indexed, automatically added to the list of posts on the home page, and show up in the RSS feed. I don't want my slash pages to get that treatment so I made them directly inside the `content` directory:
+
+```
+content
+├── categories
+├── posts
+├── search
+├── 404.md
+├── _index.md
+├── about.md [tl! ~~]
+├── changelog.md [tl! ~~]
+├── colophon.md [tl! ~~]
+├── homelab.md [tl! ~~]
+├── save.md [tl! ~~]
+├── simplex.md
+└── uses.md [tl! ~~]
+```
+
+Easy enough, but I didn't then want to have to worry about manually updating a list of slash pages so I used [Hugo's Taxonomies](https://gohugo.io/content-management/taxonomies/) feature for that. I simply tagged each page with a new `slashes` category by adding it to the post's front matter:
+
+```yaml
+# torchlight! {"lineNumbers":true}
+---
+title: "/changelog"
+date: "2024-05-26"
+lastmod: "2024-05-30"
+description: "Maybe I should keep a log of all my site-related tinkering?"
+categories: slashes # [tl! ~~]
+---
+```
+
+{{% notice note "Category Names" %}}
+I really wanted to name the category `/slashes`, but that seems to trip up Hugo a bit when it comes to creating an archive of category posts. So I settled for `slashes` and came up with some workarounds to make it present the way I wanted.
+{{% /notice %}}
+
+Hugo will automatically generate an archive page for a given taxonomy term (so a post tagged with the category `slashes` would be listed at `$BASE_URL/category/slashes/`), but I like to have a bit of control over how those archive pages are actually presented. So I create a new file at `content/categories/slashes/_index.md` and drop in this front matter:
+
+```yaml
+# torchlight! {"lineNumbers":true}
+---
+title: /slashes
+url: /slashes
+aliases:
+ - /categories/slashes
+description: >
+ My collection of slash pages.
+---
+```
+
+The `slashes` in the file path tells Hugo which taxonomy it belongs to and so it can match the appropriately-categorized posts.
+
+Just like with normal posts, the `title` field defines the title (duh) of the post; this way I can label the archive page as `/slashes` instead of just `slashes`.
+
+The `url` field lets me override where the page will be served, and I added `/categories/slashes` as an alias so that anyone who hits that canonical URL will be automatically redirected.
+
+Setting a `description` lets me choose what introductory text will be displayed at the top of the index page, as well as when it's shown at the next higher level archive (like `/categories/`).
+
+Of course, I'd like to include a link to [slashpages.net](https://slashpages.net) to provide a bit more info about what these pages are, and I can't add hyperlinks to the description text. What I *can* do is edit the template which is used for rendering the archive page. In my case, that's at `layouts/partials/archive.html`, and it starts out like this:
+
+```jinja-html
+# torchlight! {"lineNumbers":true}
+{{ $pages := .Pages }}
+{{ if .IsHome }}
+ {{ $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
+{{ end }}
+
+{{ if .IsHome }}
+
{{ site.Params.indexTitle | markdownify }}
+{{ else }}
+
{{ .Title | markdownify }}{{ if eq .Kind "term" }}
+ {{ with .Description }}{{ . }}{{ else }} {{ end }}
+{{ end }}{{ end }}
+ {{ .Content }}
+
+```
+
+Line 9 is where I had already modified the template to conditionally add an RSS link for category archive pages. I'm going to tweak the setup a bit to conditionally render designated text when the page `.Title` matches `/slashes`:
+
+```jinja-html
+# torchlight! {"lineNumbers":true}
+{{ $pages := .Pages }}
+{{ if .IsHome }}
+ {{ $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
+{{ end }}
+
+{{ if .IsHome }}
+
{{ .Title | markdownify }}{{ if eq .Kind "term" }}
+ {{ with .Description }}{{ . }}{{ else }} {{ end }}
+ {{ end }}
+{{ end }}{{ end }}
+ {{ .Content }}
+
+```
+
+So instead of rendering the `description` I defined in the front matter the archive page will show:
+
+> *My collection of [slash pages](https://slashpages.net).*
+
+While I'm at it, I'd like for the slash pages themselves to be listed in alphabetical order rather than sorted by date (like everything else on the site). The remainder of my `layouts/partials/archive.html` already handles a few different ways of displaying lists of content:
+
+```jinja-html
+# torchlight! {"lineNumbers":true}
+{{- if and (eq .Kind "taxonomy") (eq .Title "Tags") }}
+ {{/* /tags/ */}}
+
+ {{- range $key, $value := .Site.Taxonomies }}
+ {{- $slicedTags := ($value.ByCount) }}
+ {{- range $slicedTags }}
+ {{- if eq $key "tags"}}
+
+ ["{{- $postDate }}"{{- if ne $postDate $updateDate }}, "{{ $updateDate }}"{{ end }}]
+
+
+
+ {{if .Description }}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}
+
+
+
+ {{- end }}
+ {{- template "_internal/pagination.html" . }}
+{{- end }}
+```
+
+1. The [/tags/](/tags/) archive uses a condensed display format which simply shows the tag name and the number of posts with that tag.
+2. Other taxonomy archives (like [/categories](/categories)) are sorted by title, displayed with a brief description, and the date that a post in the categories was published or updated.
+3. Archives of posts are sorted by date (most recent first) and include the post description (or summary if it doesn't have one), and both the publish and updated dates.
+
+I'll just tweak the second condition there to check for either a taxonomy archive or a page with the title `/slashes`:
+
+```jinja-html
+# torchlight! {"lineNumbers":true}
+{{- if and (eq .Kind "taxonomy") (eq .Title "Tags") }}
+ {{/* /tags/ */}}
+
+ {{- range $key, $value := .Site.Taxonomies }}
+ {{- $slicedTags := ($value.ByCount) }}
+ {{- range $slicedTags }}
+ {{- if eq $key "tags"}}
+
+ ["{{- $postDate }}"{{- if ne $postDate $updateDate }}, "{{ $updateDate }}"{{ end }}]
+
+
+
+ {{if .Description }}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}
+
+
+
+ {{- end }}
+ {{- template "_internal/pagination.html" . }}
+{{- end }}
+```
+
+So that's got the [/slashes](/slashes/) page looking the way I want it to. The last tweak will be to the template I use for displaying related (ie, in the same category) posts in the sidebar. The magic for that happens in `layouts/partials/aside.html`:
+
+```jinja-html
+# torchlight! {"lineNumbers":true}
+{{ if .Params.description }}
{{ .Params.description }}
{{ end }}
+{{ if and (gt .WordCount 400 ) (gt (len .TableOfContents) 180) }}
+
+
On this page
+ {{ .TableOfContents }}
+
+
+{{ end }}
+
+{{ if isset .Params "categories" }}
+{{$related := where .Site.RegularPages ".Params.categories" "eq" .Params.categories }}
+{{- $relatedLimit := default 8 .Site.Params.numberOfRelatedPosts }}
+{{ if eq .Params.categories "slashes" }}
+
+{{- end }}
+```
+
+So now if you visit any of my slash pages (like, say, [/colophon](/colophon/)) you'll see the alphabetized list of other slash pages in the side bar.
+
+### Closing
+I'll probably keep tweaking these slash pages in the coming days, but for now I'm really glad to finally have them posted. I've only thinking about doing this for the past six months.
\ No newline at end of file
From 93b017ee71d86896a73848f8a0077cb8e86bb2b6 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Sun, 2 Jun 2024 21:35:48 -0500
Subject: [PATCH 74/75] update /uses
---
content/uses.md | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/content/uses.md b/content/uses.md
index 5286f9d..f277bd0 100644
--- a/content/uses.md
+++ b/content/uses.md
@@ -1,7 +1,7 @@
---
title: "/uses"
date: "2024-05-29"
-# lastmod: {{ .Date | time.Format "2006-01-02" }}
+lastmod: "2024-06-02"
description: "The hardware, software, services, and gear which I use (almost) daily."
toc: true
timeless: true
@@ -18,7 +18,7 @@ categories: slashes
- **[Weatherflow Tempest Weather Station](https://shop.tempest.earth/products/tempest)** to help me get my Wx nerd on.
### Everyday Carry
-*What has it got in its pockets/backpack?*
+*What has it got in its pocketses?*
- **[Flipper Zero](https://flipperzero.one/)** running [Momentum Firmware](https://momentum-fw.dev/) in my pocket or bag for on-the-go hacking and exploration.
- **[Leatherman FREE K4](https://www.leatherman.com/free-k4-590.html)** knife/multitool in my pocket for cutting and tinkering.
- **[Milky lactase tablets](https://shopmilky.com/)** in my wallet so I can enjoy dairy without consequences.
@@ -28,7 +28,8 @@ categories: slashes
- **[Pixel Watch 2](https://store.google.com/product/pixel_watch_2)** on my wrist, for notifications and fitness tracking.
- **[ProxGrind RF Field Detector Card](https://www.redteamtools.com/RFID_LF_HF_Field_Detector_Card)** on my keychain to quickly learn about RFID/NFC readers.
- **[Ridge Wallet](https://ridge.com/products/aluminum-gunmetal)** in my pocket for keeping my cards handy.
-- **[Ti EDC Backpack](https://bigidesign.com/pages/ti-edc-backpack-landing-page)** for carrying my stuff.
+- **[RovyVon Aurora A7 EDC Flashlight](https://www.rovyvon.com/collections/aurora-keychain-flashlights/products/aurora-a7-usb-c-gitd-sky-blue-keychain-flashlight-4th-generation)** in my pocket for keeping the darkness at bay.
+- **[Ti EDC Backpack](https://bigidesign.com/pages/ti-edc-backpack-landing-page)** for carrying my stuff, and keeping it organized while in transit.
- **[Yubico Yubikey 5C NFC](https://www.yubico.com/product/yubikey-5c-nfc/)** on my keychain for hardware token things.
### Software
From a06c3312878b6cc95abc92bf9c104ea06bcf6b94 Mon Sep 17 00:00:00 2001
From: John Bowdre
Date: Tue, 4 Jun 2024 20:49:01 -0500
Subject: [PATCH 75/75] update search link to use mojeek
---
content/posts/prettify-hugo-rss-feed-xslt/index.md | 6 +++---
static/xml/feed.xsl | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/content/posts/prettify-hugo-rss-feed-xslt/index.md b/content/posts/prettify-hugo-rss-feed-xslt/index.md
index 3667692..3bb42b8 100644
--- a/content/posts/prettify-hugo-rss-feed-xslt/index.md
+++ b/content/posts/prettify-hugo-rss-feed-xslt/index.md
@@ -1,7 +1,7 @@
---
title: "Prettify Hugo RSS Feeds with XSLT"
date: 2024-04-30
-lastmod: "2024-05-30"
+lastmod: "2024-06-05"
description: "Making my Hugo-generated RSS XML look as good to human visitors as it does to feed readers."
featured: false
thumbnail: pretty-feed.png
@@ -180,7 +180,7 @@ That's getting there:
![A darker styled RSS page](getting-there-feed.png)
-Including those CSS styles means that the rendered page now uses my color palette and the [font I worked so hard to integrate](/using-custom-font-hugo/). I'm just going to make a few more tweaks to change some of the formatting, put the `New to feeds?` bit on its own line, and point to my [self-hosted instance of the SearXNG metasearch engine](https://scribbles.jbowdre.lol/post/self-hosting-a-search-engine-iyjdlk6y) instead of DDG.
+Including those CSS styles means that the rendered page now uses my color palette and the [font I worked so hard to integrate](/using-custom-font-hugo/). I'm just going to make a few more tweaks to change some of the formatting, put the `New to feeds?` bit on its own line, and point to [Mojeek](https://mojeek.com) instead of DDG ([why?](https://scribbles.jbowdre.lol/post/a-comprehensive-evaluation-of-various-search-engines-i-ve-used)).
Here's my final (for now) `static/xml/feed.xsl` file:
@@ -210,7 +210,7 @@ Here's my final (for now) `static/xml/feed.xsl` file:
(RSS)
This is an RSS feed. To subscribe to it, copy its address and paste it when your feed reader asks for it. It will be updated periodically in your reader.
This is an RSS feed. To subscribe to it, copy its address and paste it when your feed reader asks for it. It will be updated periodically in your reader.