Switching to pure org

This commit is contained in:
2024-10-02 18:25:09 -04:00
parent d6bd7d3359
commit 46e9d9712c
9 changed files with 61 additions and 258 deletions

9
.gitmodules vendored
View File

@@ -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

View File

@@ -1,5 +0,0 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

View File

@@ -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
<!--listend-->
```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.

View File

@@ -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"

View File

@@ -1,15 +1,23 @@
#+HUGO_BASE_DIR: ../
#+HUGO_SECTION: posts
:PROPERTIES: :PROPERTIES:
:EXPORT_OPTIONS: author:nil #+author: James Brechtel
#+email: me@jamesbrechtel.com
#+html_head: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/holiday.css@0.11.2" />
#+html_head_holiday: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/holiday.css@0.11.2" />
#+html_head_mvp: <link rel="stylesheet" href="https://unpkg.com/mvp.css">
#+html_head_pico: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
#+html_head_tacit: <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/yegor256/tacit@gh-pages/tacit-css-1.8.1.min.css"/>
#+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: :END:
* Homelab :homelab: * Homelab :homelab:
** DONE HTTPS @ Home ** HTTPS @ Home
:PROPERTIES: :PROPERTIES:
:EXPORT_FILE_NAME: https-at-home #+keywords: homelab
:EXPORT_DATE: 2022-11-08 #+export_file_name: https-at-home
:EXPORT_HUGO_MENU: :menu "main" #+subtitle:
:EXPORT_AUTHOR:
:END: :END:
I run a lot of services at home. 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. Then tell Caddy to reload the config and I'm done.
+++ title = "My multiroom audio setup" date = "2022-11-08" +++ ** My multiroom audio setup
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
:PROPERTIES: :PROPERTIES:
:EXPORT_FILE_NAME: snapcast #+keywords: homelab snapcast audio
:EXPORT_DATE: 2022-11-08 #+export_file_name: home-multiroom-audio
:EXPORT_HUGO_MENU: :menu "main" #+subtitle:
:END: :END:
I've put my home audio solution together out of the following I've put my home audio solution together out of the following
@@ -147,9 +114,9 @@ speakers over AirPlay.
* Tooling :tooling: * Tooling :tooling:
** vi modal editing in most places ** vi modal editing in most places
:PROPERTIES: :PROPERTIES:
:EXPORT_FILE_NAME: vi-mode-everywhere #+keywords: vim
:EXPORT_DATE: 2022-11-13 #+export_file_name: vi-editing-everywhere
:EXPORT_HUGO_MENU: :menu "main" #+subtitle:
:END: :END:
For my sake, I prefer to have Vim bindings in as many places as For my sake, I prefer to have Vim bindings in as many places as
possible. possible.
@@ -183,9 +150,11 @@ $endif
* AWS :aws: * AWS :aws:
** Structed and passively collected metrics via AWS CloudWatch ** Structed and passively collected metrics via AWS CloudWatch
:EXPORT_FILE_NAME: cloudwatch-metric-filters :PROPERTIES:
:EXPORT_DATE: 2022-11-12 #+keywords: aws
:EXPORT_HUGO_MENU: :menu "main" #+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 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. hidden gems like this one so I wanted to point this one out.
@@ -248,9 +217,11 @@ effort.
** TODO My job description ** TODO My job description
** TODO Managing expectations ** TODO Managing expectations
** TODO Just let people be wrong ** TODO Just let people be wrong
:EXPORT_FILE_NAME: trust-through-failure :PROPERTIES:
:EXPORT_DATE: 2024-10-01 #+keywords: advice relationships people
:EXPORT_HUGO_MENU: :menu "main" #+export_file_name: let-people-fail
#+subtitle:
:END:
Warning: This, like most things, will involve a fair bit of projection. 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. 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. 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
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css">
#+END_SRC
#+BEGIN_SRC haskell
doThings :: String -> IO ()
doThings name = do
putStrLn name
#+END_SRC

View File

@@ -1,4 +0,0 @@
#!/bin/sh
./scripts/hugo
rsync --delete-after -avzr public/ verin.brechtel:/nas/www/willfullyobtuse.com

View File

@@ -1,3 +0,0 @@
#!/bin/sh
docker run -p 1313:1313 --rm --workdir=/site -v .:/site hugomods/hugo:base hugo $@

Submodule themes/typo deleted from 4fe47ad315