diff --git a/about/index.html b/about/index.html
index 33ab385..a14852c 100644
--- a/about/index.html
+++ b/about/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/books/index.html b/books/index.html
index 9e1b19e..730f6c7 100644
--- a/books/index.html
+++ b/books/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/index.html b/index.html
index 88cd661..d1fcd51 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/music/index.html b/music/index.html
index 1714980..90d9f38 100644
--- a/music/index.html
+++ b/music/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/now/index.html b/now/index.html
index 72c1c50..4fbef67 100644
--- a/now/index.html
+++ b/now/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/authority-consents-blind-spot/index.html b/posts/authority-consents-blind-spot/index.html
index e659712..90fb5ac 100644
--- a/posts/authority-consents-blind-spot/index.html
+++ b/posts/authority-consents-blind-spot/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/embracing-mysticism/index.html b/posts/embracing-mysticism/index.html
index 54aa22b..47ff571 100644
--- a/posts/embracing-mysticism/index.html
+++ b/posts/embracing-mysticism/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/finally-a-coherent-worldview/index.html b/posts/finally-a-coherent-worldview/index.html
index d5cd717..d8cfad2 100644
--- a/posts/finally-a-coherent-worldview/index.html
+++ b/posts/finally-a-coherent-worldview/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/index.html b/posts/index.html
index 3e937f9..d3eb914 100644
--- a/posts/index.html
+++ b/posts/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/my-very-own-github-pages/index.html b/posts/my-very-own-github-pages/index.html
index be4a865..19be9f7 100644
--- a/posts/my-very-own-github-pages/index.html
+++ b/posts/my-very-own-github-pages/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/needs-based-communication/index.html b/posts/needs-based-communication/index.html
index 82b7b87..050730e 100644
--- a/posts/needs-based-communication/index.html
+++ b/posts/needs-based-communication/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/site-design-updated/index.html b/posts/site-design-updated/index.html
index 9e4eaa8..1788a13 100644
--- a/posts/site-design-updated/index.html
+++ b/posts/site-design-updated/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/the-trivium-a-tool-for-learning-anything/index.html b/posts/the-trivium-a-tool-for-learning-anything/index.html
index 357a7ad..051b8a3 100644
--- a/posts/the-trivium-a-tool-for-learning-anything/index.html
+++ b/posts/the-trivium-a-tool-for-learning-anything/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/thinking-machines/index.html b/posts/thinking-machines/index.html
index 477590e..3461193 100644
--- a/posts/thinking-machines/index.html
+++ b/posts/thinking-machines/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/posts/tools-of-the-trade/index.html b/posts/tools-of-the-trade/index.html
index c51a8c4..4b03c9a 100644
--- a/posts/tools-of-the-trade/index.html
+++ b/posts/tools-of-the-trade/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/amish-egg-noodles/index.html b/recipes/amish-egg-noodles/index.html
index 9e49291..0cfc416 100644
--- a/recipes/amish-egg-noodles/index.html
+++ b/recipes/amish-egg-noodles/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/corn-casserole/index.html b/recipes/corn-casserole/index.html
index 89c1b14..3867bf8 100644
--- a/recipes/corn-casserole/index.html
+++ b/recipes/corn-casserole/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/creamy-chicken-orzo/index.html b/recipes/creamy-chicken-orzo/index.html
index 6b049e8..6435f2d 100644
--- a/recipes/creamy-chicken-orzo/index.html
+++ b/recipes/creamy-chicken-orzo/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/index.html b/recipes/index.html
index c7f12dc..e02cd6d 100644
--- a/recipes/index.html
+++ b/recipes/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/luther-salad/index.html b/recipes/luther-salad/index.html
index 2ca4ddf..fd2a0ff 100644
--- a/recipes/luther-salad/index.html
+++ b/recipes/luther-salad/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/pasta-rosatella/index.html b/recipes/pasta-rosatella/index.html
index 003a6f6..d668b4e 100644
--- a/recipes/pasta-rosatella/index.html
+++ b/recipes/pasta-rosatella/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/perfect-homemade-brownies/index.html b/recipes/perfect-homemade-brownies/index.html
index 19d51cf..7ac4f17 100644
--- a/recipes/perfect-homemade-brownies/index.html
+++ b/recipes/perfect-homemade-brownies/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/sloppy-joes/index.html b/recipes/sloppy-joes/index.html
index 67507bf..372e2d8 100644
--- a/recipes/sloppy-joes/index.html
+++ b/recipes/sloppy-joes/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/recipes/spanish-style-rice/index.html b/recipes/spanish-style-rice/index.html
index f7b5591..8e3c65c 100644
--- a/recipes/spanish-style-rice/index.html
+++ b/recipes/spanish-style-rice/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/scripts/effects.js b/scripts/effects.js
index 4e9d6d7..b1f639f 100644
--- a/scripts/effects.js
+++ b/scripts/effects.js
@@ -5,12 +5,87 @@ const defaultPrefs = {
language: "english",
theme: "auto",
};
-window.addEventListener('load', () => {
- document.querySelector('script[data-website-id]').addEventListener('load', () => {
- try {
- umami.identify({ deviceTheme: darkModeMediaQuery ? "dark" : "light" });
- } catch {}
+
+document.querySelector('script[data-website-id]').addEventListener('load', () => {
+ try {
+ umami.identify({ deviceTheme: darkModeMediaQuery ? "dark" : "light" });
+ } catch {}
+});
+
+function applyPreference(key, value, shouldSave) {
+ if (umami !== null) {
+ umami.identify({
+ [`pref-${key}`]: value,
+ });
+ if (shouldSave) {
+ umami.track(`Set ${key} to ${value}`);
+ }
+ }
+ document.body.setAttribute(`data-${key}`, value);
+ document.querySelectorAll(`input[name=${key}]`).forEach((input) => {
+ if (input.value === value) {
+ input.checked = true;
+ }
});
+ if (shouldSave) {
+ localStorage.setItem(key, value);
+ }
+}
+
+/** @param {Event} evt */
+function removeEffect({ target }) {
+ const effectsLayer = document.querySelector("#effects");
+ const effects = Array.from(effectsLayer.children).filter(
+ (e) => e.__effectParent === target,
+ );
+ effects.forEach((e) => {
+ e.getAnimations().forEach((anim) => {
+ if (anim.currentTime < 100) {
+ anim.pause();
+ effectsLayer.removeChild(e);
+ return;
+ }
+ anim.pause();
+ anim.updatePlaybackRate(-0.25);
+ anim.play();
+ anim.addEventListener("finish", () => {
+ if (effectsLayer.contains(e)) {
+ effectsLayer.removeChild(e);
+ }
+ });
+ });
+ });
+}
+
+/** @param {Event} evt */
+function addEffect({ target }) {
+ const effectsLayer = document.querySelector("#effects");
+ if (
+ target == null ||
+ !target["matches"] ||
+ !target.matches("a[href],.nav-toggle-button,button,input[type='radio']")
+ ) {
+ return;
+ }
+ const rects = Array.from(target.getClientRects());
+ Array.from(target.children).forEach((child) => {
+ rects.push(...Array.from(child.getClientRects()));
+ });
+ rects.forEach((rect) => {
+ const { top, left, width, height } = rect;
+ const newEffect = document.createElement("div");
+ newEffect.__effectParent = target;
+ newEffect.classList.add("effect-instance");
+ const padding = "10rem";
+ newEffect.style.top = `calc(${top + window.scrollY}px - ${padding})`;
+ newEffect.style.left = `calc(${left + window.scrollX}px - ${padding})`;
+ newEffect.style.width = `calc(${width}px + 2 * ${padding})`;
+ newEffect.style.height = `calc(${height}px + 2 * ${padding})`;
+ effectsLayer.appendChild(newEffect);
+ });
+}
+
+document.addEventListener('DOMContentLoaded', () => {
Object.entries(defaultPrefs).forEach(([key, defaultPref]) => {
const currentPref = localStorage.getItem(key) ?? defaultPref;
applyPreference(key, currentPref, false);
@@ -20,80 +95,9 @@ window.addEventListener('load', () => {
});
});
});
- function applyPreference(key, value, shouldSave) {
- if (umami !== null) {
- umami.identify({
- [`pref-${key}`]: value,
- });
- if (shouldSave) {
- umami.track(`Set ${key} to ${value}`);
- }
- }
- document.body.setAttribute(`data-${key}`, value);
- document.querySelectorAll(`input[name=${key}]`).forEach((input) => {
- if (input.value === value) {
- input.checked = true;
- }
- });
- if (shouldSave) {
- localStorage.setItem(key, value);
- }
- }
-
- /** @param {Event} evt */
- function addEffect({ target }) {
- const effectsLayer = document.querySelector("#effects");
- if (
- target == null ||
- !target["matches"] ||
- !target.matches("a[href],.nav-toggle-button,button,input[type='radio']")
- ) {
- return;
- }
- const rects = Array.from(target.getClientRects());
- Array.from(target.children).forEach((child) => {
- rects.push(...Array.from(child.getClientRects()));
- });
- rects.forEach((rect) => {
- const { top, left, width, height } = rect;
- const newEffect = document.createElement("div");
- newEffect.__effectParent = target;
- newEffect.classList.add("effect-instance");
- const padding = "10rem";
- newEffect.style.top = `calc(${top + window.scrollY}px - ${padding})`;
- newEffect.style.left = `calc(${left + window.scrollX}px - ${padding})`;
- newEffect.style.width = `calc(${width}px + 2 * ${padding})`;
- newEffect.style.height = `calc(${height}px + 2 * ${padding})`;
- effectsLayer.appendChild(newEffect);
- });
- }
document.addEventListener("mouseenter", addEffect, true);
document.addEventListener("focus", addEffect, true);
- /** @param {Event} evt */
- function removeEffect({ target }) {
- const effectsLayer = document.querySelector("#effects");
- const effects = Array.from(effectsLayer.children).filter(
- (e) => e.__effectParent === target,
- );
- effects.forEach((e) => {
- e.getAnimations().forEach((anim) => {
- if (anim.currentTime < 100) {
- anim.pause();
- effectsLayer.removeChild(e);
- return;
- }
- anim.pause();
- anim.updatePlaybackRate(-0.25);
- anim.play();
- anim.addEventListener("finish", () => {
- if (effectsLayer.contains(e)) {
- effectsLayer.removeChild(e);
- }
- });
- });
- });
- }
document.addEventListener("mouseleave", removeEffect, true);
document.addEventListener("blur", removeEffect, true);
});
diff --git a/search/index.html b/search/index.html
index 0395750..1e0b4b2 100644
--- a/search/index.html
+++ b/search/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/sitemap.xml b/sitemap.xml
index 9ea5fb4..bcaae80 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -228,7 +228,7 @@
/feed.xml
- 2025-06-19T06:18:37.782Z
+ 2025-06-19T06:22:09.788Z
diff --git a/unoffice-hours/index.html b/unoffice-hours/index.html
index 2d9d8b2..bbf3031 100644
--- a/unoffice-hours/index.html
+++ b/unoffice-hours/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+
diff --git a/uses/index.html b/uses/index.html
index 69658fa..57830a7 100644
--- a/uses/index.html
+++ b/uses/index.html
@@ -13,7 +13,7 @@
src="https://stats.apps.seigler.net/script.js"
data-website-id="ccb4bd94-2a71-47fe-8eea-d85bf75b7f6d"
>
-
+