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