diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 787ea16..0000000 --- a/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "themes/ananke"] - path = themes/ananke - url = https://github.com/theNewDynamic/gohugo-theme-ananke.git -[submodule "themes/dark-theme-editor"] - path = themes/dark-theme-editor - url = https://github.com/JingWangTW/dark-theme-editor.git -[submodule "themes/typo"] - path = themes/typo - url = https://github.com/tomfran/typo.git diff --git a/archetypes/default.md b/archetypes/default.md deleted file mode 100644 index c6f3fce..0000000 --- a/archetypes/default.md +++ /dev/null @@ -1,5 +0,0 @@ -+++ -title = '{{ replace .File.ContentBaseName "-" " " | title }}' -date = {{ .Date }} -draft = true -+++ diff --git a/content/posts/https-at-home.md b/content/posts/https-at-home.md deleted file mode 100644 index 30acee6..0000000 --- a/content/posts/https-at-home.md +++ /dev/null @@ -1,99 +0,0 @@ -+++ -title = "HTTPS @ Home" -date = 2022-11-08 -tags = ["homelab"] -draft = false -[menu] - [menu.main] - weight = 2001 - identifier = "https-home" -+++ - -I run a lot of services at home. - -This includes, but isn't limited to - -- [ArchiveBox](https://archivebox.io/) -- [VaultWarden](https://github.com/dani-garcia/vaultwarden) -- [Navidrome](https://github.com/navidrome/navidrome) -- [Plex](https://plex.tv) -- [LibrePhotos](https://github.com/LibrePhotos/librephotos) -- This blog - -and a lot more. - -Pretty much anything that's served up over HTTP is always nice if not -necessary to have behind TLS. - -[LetsEncrypt](https://letsencrypt.org/) long ago brought free certs to -the masses and there are a lot of tools for automating that nowadays. - -My preferred approach for getting all the unnecessary nonsense I -self-host at home behind TLS is [Caddy](https://caddyserver.com). - -I have a super straight forward setup, generally: - -- Run Caddy in a docker container -- Create a wildcard CNAME record in my DNS pointing at my home's - (effectively) static IP -- Add an entry in my Caddyfile for each services I'm running at home on - its own subdomain -- If it's a service then I add it with a `reverse_proxy` block -- If it's a static site (like this) then there's a block for -- If it's something I want only accessible on my home network then I put - a block like - - - -```text -@local_network { - path * - remote_ip -} -``` - -in the directive. And voila. - -Then tell Caddy to reload the config and I'm done. - -~~+~~ title = "My multiroom audio setup" date = "2022-11-08" ~~+~~ - -I've put my home audio solution together out of the following -components. - -- [Snapcast](https://github.com/badaix/snapcast) - -- [MPD](https://www.musicpd.org/) - -- [Librespot](https://github.com/librespot-org/librespot) - -- [Shairport-sync](https://github.com/mikebrady/shairport-sync) - -- A mini-PC in my closet running the above software - -- Two Raspberry Pi 4s - -- Four Raspberry Pi Zero Ws - -- Some desktop speakers and some Bluetooth speakers (wired to the Pis) - -Each of the Raspberry Pis is in a room or porch attached to a speaker. - -Snapcast lets me take an audio source and synchronize it across multiple -clients. Each of the Raspberry Pis are running a `snapclient` instance -and play whatever the `snapserver` instance tells them to. - -Snapcast is setup to send whichever of the streams (MPD, Spotify, -Shairport-sync/AirPlay) is playing audio to each of the clients that are -connected to it. - -This lets me or anyone else on my WiFi network play directly on one or -more of the speakers - each named for the room that they're in using -either Spotify, AirPlay, picking from my own music collection or by -pointing at a URL (like to a podcast episode). - -This works out great and we've used it at home for the past year. - -I'd like to get the podcast experience to a more seamless place but it's -pretty OK right now using AirMusic on my phone to play audio to the -speakers over AirPlay. diff --git a/hugo.toml b/hugo.toml deleted file mode 100755 index 2df05ed..0000000 --- a/hugo.toml +++ /dev/null @@ -1,74 +0,0 @@ -baseURL = 'https://willfullyobtuse.com/' -languageCode = 'en-us' -title = 'circumlocution' -theme = 'typo' - -[taxonomies] -tag = 'tags' - -# Google analytics code -googleAnalytics = "" - -[params] -# Meta description -description = "point free notes" - -# Appearance settings -theme = 'light' -colorPalette = 'default' -hideHeader = false - -# Intro on main page, content is markdown -homeIntroTitle = 'Hi!' -homeIntroContent = """ -Notes, journal, details, rants, clarifications -""" - -# Collection to display on home -homeCollectionTitle = 'Posts' -homeCollection = 'posts' - -# Lists parameters -paginationSize = 100 -listSummaries = true -listDateFormat = '2 Jan 2006' - -# Breadcrumbs -breadcrumbs = true - -# Social icons -[[params.social]] -name = "Mastodon" -url = "https://hachyderm.io/@eightball" - -[[params.social]] -name = "github" -url = "https://github.com/jbrechtel" - -# Main menu pages -[[params.menu]] -name = "home" -url = "/" - -[[params.menu]] -name = "posts" -url = "/posts" - -[[params.menu]] -name = "about" -url = "/about" - -# Syntax highligth on code blocks -[markup] -[markup.highlight] -style = 'algol' - -# Giscus comments -[params.giscus] -enable = false -repo = "user/repo" -repoid = "repoId" -category = "General" -categoryid = "categoryId" -mapping = "pathname" -theme = "preferred_color_scheme" diff --git a/content-org/posts.org b/posts.org similarity index 77% rename from content-org/posts.org rename to posts.org index fec5493..ba44a5a 100644 --- a/content-org/posts.org +++ b/posts.org @@ -1,15 +1,23 @@ -#+HUGO_BASE_DIR: ../ -#+HUGO_SECTION: posts :PROPERTIES: -:EXPORT_OPTIONS: author:nil +#+author: James Brechtel +#+email: me@jamesbrechtel.com +#+html_head: +#+html_head_holiday: +#+html_head_mvp: +#+html_head_pico: +#+html_head_tacit: +#+options: html-link-use-abs-url:nil html-postamble:nil +#+options: html-preamble:t html-scripts:nil html-style:t +#+options: html5-fancy:t tex:t +#+options: author:t broken-links:mark c:nil creator:nil f:t tasks:t toc:nil todo:t +#+language: en :END: * Homelab :homelab: -** DONE HTTPS @ Home +** HTTPS @ Home :PROPERTIES: -:EXPORT_FILE_NAME: https-at-home -:EXPORT_DATE: 2022-11-08 -:EXPORT_HUGO_MENU: :menu "main" -:EXPORT_AUTHOR: +#+keywords: homelab +#+export_file_name: https-at-home +#+subtitle: :END: I run a lot of services at home. @@ -57,52 +65,11 @@ in the directive. And voila. Then tell Caddy to reload the config and I'm done. -+++ title = "My multiroom audio setup" date = "2022-11-08" +++ - -I've put my home audio solution together out of the following -components. - -- [[https://github.com/badaix/snapcast][Snapcast]] - -- [[https://www.musicpd.org/][MPD]] - -- [[https://github.com/librespot-org/librespot][Librespot]] - -- [[https://github.com/mikebrady/shairport-sync][Shairport-sync]] - -- A mini-PC in my closet running the above software - -- Two Raspberry Pi 4s - -- Four Raspberry Pi Zero Ws - -- Some desktop speakers and some Bluetooth speakers (wired to the Pis) - -Each of the Raspberry Pis is in a room or porch attached to a speaker. - -Snapcast lets me take an audio source and synchronize it across multiple -clients. Each of the Raspberry Pis are running a =snapclient= instance -and play whatever the =snapserver= instance tells them to. - -Snapcast is setup to send whichever of the streams (MPD, Spotify, -Shairport-sync/AirPlay) is playing audio to each of the clients that are -connected to it. - -This lets me or anyone else on my WiFi network play directly on one or -more of the speakers - each named for the room that they're in using -either Spotify, AirPlay, picking from my own music collection or by -pointing at a URL (like to a podcast episode). - -This works out great and we've used it at home for the past year. - -I'd like to get the podcast experience to a more seamless place but it's -pretty OK right now using AirMusic on my phone to play audio to the -speakers over AirPlay. -** TODO My multiroom audio setup +** My multiroom audio setup :PROPERTIES: -:EXPORT_FILE_NAME: snapcast -:EXPORT_DATE: 2022-11-08 -:EXPORT_HUGO_MENU: :menu "main" +#+keywords: homelab snapcast audio +#+export_file_name: home-multiroom-audio +#+subtitle: :END: I've put my home audio solution together out of the following @@ -147,9 +114,9 @@ speakers over AirPlay. * Tooling :tooling: ** vi modal editing in most places :PROPERTIES: -:EXPORT_FILE_NAME: vi-mode-everywhere -:EXPORT_DATE: 2022-11-13 -:EXPORT_HUGO_MENU: :menu "main" +#+keywords: vim +#+export_file_name: vi-editing-everywhere +#+subtitle: :END: For my sake, I prefer to have Vim bindings in as many places as possible. @@ -183,9 +150,11 @@ $endif * AWS :aws: ** Structed and passively collected metrics via AWS CloudWatch -:EXPORT_FILE_NAME: cloudwatch-metric-filters -:EXPORT_DATE: 2022-11-12 -:EXPORT_HUGO_MENU: :menu "main" +:PROPERTIES: +#+keywords: aws +#+export_file_name: aws-cloudwatch-metric-filters +#+subtitle: +:END: AWS is a vast and sprawling set of services. It can be hard to find the hidden gems like this one so I wanted to point this one out. @@ -248,9 +217,11 @@ effort. ** TODO My job description ** TODO Managing expectations ** TODO Just let people be wrong -:EXPORT_FILE_NAME: trust-through-failure -:EXPORT_DATE: 2024-10-01 -:EXPORT_HUGO_MENU: :menu "main" +:PROPERTIES: +#+keywords: advice relationships people +#+export_file_name: let-people-fail +#+subtitle: +:END: Warning: This, like most things, will involve a fair bit of projection. @@ -269,3 +240,31 @@ If that demonstrates distrust then It's not enough that you simply _do_ trust someone else to get the benefits, you need to show it. I think this is the part that many people skip or ignore. This is, of course, true in general. + +** Very simple CSS frameworks +:PROPERTIES: +#+keywords: CSS +#+export_file_name: css-frameworks +#+subtitle: +:END: + +*** Minimal CSS / fancy resets +I really like simple drop-in CSS resets like the one I use for this site. + +At the time of writing, I'm using [[https://picocss.com/][Pico]] but I also considered [[https://yegor256.github.io/tacit/][tacit]] + +The idea is that they provide nice default styling of HTML elements out of the box without the need to reference any specific classes. + +The idea works well for sites that are much more content than layout - like this one. + +Using tacit is a matter of incluing this link tag in the page's HEAD element: + +#+BEGIN_SRC html + +#+END_SRC + +#+BEGIN_SRC haskell + doThings :: String -> IO () + doThings name = do + putStrLn name +#+END_SRC diff --git a/scripts/deploy b/scripts/deploy deleted file mode 100755 index 5fc0ea4..0000000 --- a/scripts/deploy +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -./scripts/hugo -rsync --delete-after -avzr public/ verin.brechtel:/nas/www/willfullyobtuse.com diff --git a/scripts/hugo b/scripts/hugo deleted file mode 100755 index 587c6a2..0000000 --- a/scripts/hugo +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -docker run -p 1313:1313 --rm --workdir=/site -v .:/site hugomods/hugo:base hugo $@ \ No newline at end of file diff --git a/themes/dark-theme-editor b/themes/dark-theme-editor deleted file mode 160000 index c1e4ccc..0000000 --- a/themes/dark-theme-editor +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c1e4ccc366f4f2b2e6b77db681f6e0c7a3301907 diff --git a/themes/typo b/themes/typo deleted file mode 160000 index 4fe47ad..0000000 --- a/themes/typo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4fe47ad31564bccf06f0038feb288313df5a6845