More work - revert 11ty cfg to JS, implement go-links, humans.txt, robots.txt, and footnotes

This commit is contained in:
2025-06-03 21:29:37 -04:00
parent d6f44ba93b
commit 244b934be7
14 changed files with 238 additions and 308 deletions

7
TODO.md Normal file
View File

@@ -0,0 +1,7 @@
- favicon
- world plate blog (separate site)
- snippets
- blog comments
- notes
- technical page content
- markmark (+ bookmarks formatting)

View File

@@ -4,6 +4,7 @@ import rssPlugin from "@11ty/eleventy-plugin-rss";
import brokenLinksPlugin from "eleventy-plugin-broken-links";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
import syntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
import footnote from "markdown-it-footnote";
import { EleventyRenderPlugin, IdAttributePlugin } from '@11ty/eleventy';
import * as fs from 'fs';
import * as opml from 'opml';
@@ -30,7 +31,7 @@ export default function (eleventyConfig) {
eleventyConfig.addPlugin(IdAttributePlugin);
eleventyConfig.addPlugin(EleventyRenderPlugin);
eleventyConfig.addPassthroughCopy("src/assets/**")
eleventyConfig.amendLibrary("md", md => md.use(footnote))
eleventyConfig.addCollection("markmark", async api => {
const response = await fetch(`${OUTLINE.url}/documents.info`, {
method: 'POST',

View File

@@ -4,7 +4,7 @@
"description": "",
"main": "index.js",
"scripts": {
"build": "tsx ./node_modules/.bin/eleventy --config eleventy.config.ts --formats 11ty.tsx"
"build": "eleventy --config eleventy.config.js"
},
"keywords": [],
"author": "",
@@ -17,11 +17,9 @@
"@11ty/eleventy-plugin-rss": "^2.0.3",
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"eleventy-plugin-broken-links": "^2.2.1",
"markdown-it-footnote": "^4.0.0",
"node-fetch": "^3.3.2",
"opml": "^0.5.7"
},
"type": "module",
"devDependencies": {
"tsx": "^4.19.3"
}
"type": "module"
}

294
pnpm-lock.yaml generated
View File

@@ -26,16 +26,15 @@ importers:
eleventy-plugin-broken-links:
specifier: ^2.2.1
version: 2.2.1
markdown-it-footnote:
specifier: ^4.0.0
version: 4.0.0
node-fetch:
specifier: ^3.3.2
version: 3.3.2
opml:
specifier: ^0.5.7
version: 0.5.7
devDependencies:
tsx:
specifier: ^4.19.3
version: 4.19.3
packages:
@@ -120,156 +119,6 @@ packages:
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
'@esbuild/aix-ppc64@0.25.2':
resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.2':
resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.25.2':
resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.25.2':
resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.25.2':
resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.25.2':
resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.25.2':
resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.25.2':
resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.25.2':
resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.25.2':
resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.25.2':
resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.25.2':
resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.25.2':
resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.25.2':
resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.25.2':
resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.25.2':
resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.25.2':
resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.25.2':
resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.2':
resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.25.2':
resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.2':
resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.25.2':
resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.25.2':
resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.25.2':
resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.25.2':
resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -738,11 +587,6 @@ packages:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
esbuild@0.25.2:
resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==}
engines: {node: '>=18'}
hasBin: true
escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
@@ -857,9 +701,6 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
get-tsconfig@4.10.0:
resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
getpass@0.1.7:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
@@ -1082,6 +923,9 @@ packages:
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
engines: {node: '>=12'}
markdown-it-footnote@4.0.0:
resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==}
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
@@ -1362,9 +1206,6 @@ packages:
engines: {node: '>= 6'}
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
@@ -1502,11 +1343,6 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsx@4.19.3:
resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
engines: {node: '>=18.0.0'}
hasBin: true
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
@@ -1775,81 +1611,6 @@ snapshots:
tslib: 2.8.1
optional: true
'@esbuild/aix-ppc64@0.25.2':
optional: true
'@esbuild/android-arm64@0.25.2':
optional: true
'@esbuild/android-arm@0.25.2':
optional: true
'@esbuild/android-x64@0.25.2':
optional: true
'@esbuild/darwin-arm64@0.25.2':
optional: true
'@esbuild/darwin-x64@0.25.2':
optional: true
'@esbuild/freebsd-arm64@0.25.2':
optional: true
'@esbuild/freebsd-x64@0.25.2':
optional: true
'@esbuild/linux-arm64@0.25.2':
optional: true
'@esbuild/linux-arm@0.25.2':
optional: true
'@esbuild/linux-ia32@0.25.2':
optional: true
'@esbuild/linux-loong64@0.25.2':
optional: true
'@esbuild/linux-mips64el@0.25.2':
optional: true
'@esbuild/linux-ppc64@0.25.2':
optional: true
'@esbuild/linux-riscv64@0.25.2':
optional: true
'@esbuild/linux-s390x@0.25.2':
optional: true
'@esbuild/linux-x64@0.25.2':
optional: true
'@esbuild/netbsd-arm64@0.25.2':
optional: true
'@esbuild/netbsd-x64@0.25.2':
optional: true
'@esbuild/openbsd-arm64@0.25.2':
optional: true
'@esbuild/openbsd-x64@0.25.2':
optional: true
'@esbuild/sunos-x64@0.25.2':
optional: true
'@esbuild/win32-arm64@0.25.2':
optional: true
'@esbuild/win32-ia32@0.25.2':
optional: true
'@esbuild/win32-x64@0.25.2':
optional: true
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
@@ -2268,34 +2029,6 @@ snapshots:
dependencies:
es-errors: 1.3.0
esbuild@0.25.2:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.2
'@esbuild/android-arm': 0.25.2
'@esbuild/android-arm64': 0.25.2
'@esbuild/android-x64': 0.25.2
'@esbuild/darwin-arm64': 0.25.2
'@esbuild/darwin-x64': 0.25.2
'@esbuild/freebsd-arm64': 0.25.2
'@esbuild/freebsd-x64': 0.25.2
'@esbuild/linux-arm': 0.25.2
'@esbuild/linux-arm64': 0.25.2
'@esbuild/linux-ia32': 0.25.2
'@esbuild/linux-loong64': 0.25.2
'@esbuild/linux-mips64el': 0.25.2
'@esbuild/linux-ppc64': 0.25.2
'@esbuild/linux-riscv64': 0.25.2
'@esbuild/linux-s390x': 0.25.2
'@esbuild/linux-x64': 0.25.2
'@esbuild/netbsd-arm64': 0.25.2
'@esbuild/netbsd-x64': 0.25.2
'@esbuild/openbsd-arm64': 0.25.2
'@esbuild/openbsd-x64': 0.25.2
'@esbuild/sunos-x64': 0.25.2
'@esbuild/win32-arm64': 0.25.2
'@esbuild/win32-ia32': 0.25.2
'@esbuild/win32-x64': 0.25.2
escape-html@1.0.3: {}
escape-string-regexp@5.0.0: {}
@@ -2417,10 +2150,6 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
get-tsconfig@4.10.0:
dependencies:
resolve-pkg-maps: 1.0.0
getpass@0.1.7:
dependencies:
assert-plus: 1.0.0
@@ -2637,6 +2366,8 @@ snapshots:
luxon@3.5.0: {}
markdown-it-footnote@4.0.0: {}
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
@@ -2935,8 +2666,6 @@ snapshots:
tunnel-agent: 0.6.0
uuid: 3.4.0
resolve-pkg-maps@1.0.0: {}
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
@@ -3095,13 +2824,6 @@ snapshots:
tslib@2.8.1:
optional: true
tsx@4.19.3:
dependencies:
esbuild: 0.25.2
get-tsconfig: 4.10.0
optionalDependencies:
fsevents: 2.3.3
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1

View File

@@ -37,6 +37,7 @@ html(lang="en")
meta(name='keywords' content='garrett mills glmdev developer speaker flitter extollo student')
meta(name='author' content='Garrett Mills')
meta(name='robots' content='index, follow')
link(rel='author' href='/humans.txt')
block title
if title

View File

@@ -0,0 +1,8 @@
extends ./obsidian
block content
div.content-wrapper
p You should be redirected shortly. If not, click <a href="!{redirect_to}">here</a>.
script.
window.location.href = "!{redirect_to}"

View File

@@ -313,6 +313,19 @@ footer p {
opacity: 0.75;
}
table, td, th {
border: 1px solid var(--color-2);
border-collapse: collapse;
}
td, th {
padding: 7px;
}
.ws-nowrap {
white-space: nowrap;
}
@media screen and (max-width: 500px) {
nav ul {
flex-direction: column;

View File

@@ -37,50 +37,50 @@ Some nomenclature:
<th>Okay?</th>
</tr>
<tr>
<td>Aug 9th, 2024</td>
<td>ORD to IND</td>
<td class="ws-nowrap">Aug 9th, 2024</td>
<td class="ws-nowrap">ORD to IND</td>
<td>(This was the flight that inspired this page. For context, ORD to IND is a 36-minute flight.) Boarding started 15 minutes late because of prep on the plane. Right before push-off, they discovered a hydraulic leak. This took an hour to fix. When we were finally pushed off, it took an additional 30 minutes to taxi and take off because of the line. That's almost 2 additional hours for a 36 minute flight.</td>
<td>❌</td>
</tr>
<tr>
<td>Aug 9th, 2024</td>
<td>MCI to ORD</td>
<td class="ws-nowrap">Aug 9th, 2024</td>
<td class="ws-nowrap">MCI to ORD</td>
<td>Flight left on time and landed pretty much on time.</td>
<td>✅</td>
</tr>
<tr>
<td>Aug 5th, 2024</td>
<td>ORD to MCI</td>
<td class="ws-nowrap">Aug 5th, 2024</td>
<td class="ws-nowrap">ORD to MCI</td>
<td>Luckily my connection was only 3 gates away (and was already boarding when I got there). This flight pushed off on time but was then delayed for 20 minutes due to lightning (admittedly, this isn't United's fault, so I'll count it).</td>
<td>✅</td>
</tr>
<tr>
<td>Aug 5th, 2024</td>
<td>IND to ORD</td>
<td class="ws-nowrap">Aug 5th, 2024</td>
<td class="ws-nowrap">IND to ORD</td>
<td>Flight left on time, and landed on time at ORD, but because of construction and traffic, we sat on the tarmac for 20 minutes after landing.</td>
<td>❌</td>
</tr>
<tr>
<td>July 12th, 2024</td>
<td>ORD to IND</td>
<td class="ws-nowrap">July 12th, 2024</td>
<td class="ws-nowrap">ORD to IND</td>
<td>I was worried I was going to miss this flight because of delays w/ the MCI to ORD flight, but luckily it was delayed by a couple of hours as well. I waited an hour at the gate.</td>
<td>❌</td>
</tr>
<tr>
<td>July 12th, 2024</td>
<td>MCI to ORD</td>
<td class="ws-nowrap">July 12th, 2024</td>
<td class="ws-nowrap">MCI to ORD</td>
<td>Flight was delayed by an hour and a half because our incoming flight crew was delayed.</td>
<td>❌</td>
</tr>
<tr>
<td>July 8th, 2024</td>
<td>ORD to MCI</td>
<td class="ws-nowrap">July 8th, 2024</td>
<td class="ws-nowrap">ORD to MCI</td>
<td>I had to sprint from concourse A to concourse C in 15 minutes because of my IND to ORD flight, but no issues other than that.</td>
<td>✅</td>
</tr>
<tr>
<td>July 8th, 2024</td>
<td>IND to ORD</td>
<td class="ws-nowrap">July 8th, 2024</td>
<td class="ws-nowrap">IND to ORD</td>
<td>Plane was delayed 40 minutes. We had to change gates at IND because our original 737 MAX had "broken seats." (Side note: I was talking with people boarding the flight who had to stay overnight in a hotel because of issues the prior day.)</td>
<td>❌</td>
</tr>

6
src/go/comp_pi.njk Normal file
View File

@@ -0,0 +1,6 @@
---
permalink: /go/comp_pi/
redirect_to: https://code.garrettmills.dev/garrettmills/k8s-hpc-demo/src/branch/master/demos/calculate_pi/calculate_pi.py#L15
layout: redirect
tags: go_link
---

6
src/go/csx.njk Normal file
View File

@@ -0,0 +1,6 @@
---
permalink: /go/csx/
redirect_to: https://docs.google.com/document/d/16DJhmO5Lbf1-4_gWwBF2gh0BhN1_6PGvkFAEUeSgncU/edit?usp=sharing
layout: redirect
tags: go_link
---

6
src/go/open-letter.njk Normal file
View File

@@ -0,0 +1,6 @@
---
permalink: /go/open-letter/
redirect_to: https://static.garrettmills.dev/assets/An_Open_Letter_to_Roger_Marshall_No_Address.pdf
layout: redirect
tags: go_link
---

6
src/go/resume.njk Normal file
View File

@@ -0,0 +1,6 @@
---
permalink: /go/resume/
redirect_to: https://static.garrettmills.dev/Resume.pdf
layout: redirect
tags: go_link
---

20
src/humans.njk Normal file
View File

@@ -0,0 +1,20 @@
---
permalink: humans.txt
---
/* PEOPLE */
Garrett Mills
E-Mail: shout@garrettmills.dev
From: Lawrence, Kansas, USA (Rock Chalk!)
/* SITE */
Updated: 2025-06-03
Language: English
Doctype: HTML5
IDE: IntelliJ IDEA Ultimate
This site was built using the Eleventy SSG.
Copyright (C) 2015-2025 Garrett Mills. See `/technical` for licensing.
/* OTHER */
Just a little something for the humans scraping the web... -GM
https://humanstxt.org/

136
src/robots.njk Normal file
View File

@@ -0,0 +1,136 @@
---
permalink: robots.txt
---
# __ ___ _ _
# \ \ / / |__ __ _| |_ (_)___ __ ___ __ ___ _ __ __ _
# \ \ /\ / /| '_ \ / _` | __| | / __| \ \ /\ / / '__/ _ \| '_ \ / _` |
# \ V V / | | | | (_| | |_ | \__ \ \ V V /| | | (_) | | | | (_| |
# \_/\_/ |_| |_|\__,_|\__| |_|___/ \_/\_/ |_| \___/|_| |_|\__, |
# |___/
# _ _ _
# __ _(_) |_| |__ __ _
# \ \ /\ / / | __| '_ \ / _` |
# \ V V /| | |_| | | | | (_| |
# \_/\_/ |_|\__|_| |_| \__,_|
#
# _ __ _ _ _ _
# ___ ___ _ _ _ __ | |_ ___ _ __ / _| ___(_) |_ (_)___ _ __ ___ | |_
# / __/ _ \| | | | '_ \| __/ _ \ '__| |_ / _ \ | __| | / __| | '_ \ / _ \| __|
# | (_| (_) | |_| | | | | || __/ | | _| __/ | |_ | \__ \ | | | | (_) | |_
# \___\___/ \__,_|_| |_|\__\___|_| |_| \___|_|\__| |_|___/ |_| |_|\___/ \__|
#
# _ _ _ _ _ _ _ _ _ _
# __ _| |__ __ _| |_ (_) |_ (_)___ | (_) | _____ | |__ _ _| |_
# \ \ /\ / / '_ \ / _` | __| | | __| | / __| | | | |/ / _ \ | '_ \| | | | __|
# \ V V /| | | | (_| | |_ | | |_ | \__ \ | | | < __/_ | |_) | |_| | |_
# \_/\_/ |_| |_|\__,_|\__| |_|\__| |_|___/ |_|_|_|\_\___( ) |_.__/ \__,_|\__|
# |/
# _ _ _ _
# | |__ _____ __ (_) |_ __ ____ _ ___ _ __ ___ __ _ __| | ___
# | '_ \ / _ \ \ /\ / / | | __| \ \ /\ / / _` / __| | '_ ` _ \ / _` |/ _` |/ _ \
# | | | | (_) \ V V / | | |_ \ V V / (_| \__ \ | | | | | | (_| | (_| | __/_
# |_| |_|\___/ \_/\_/ |_|\__| \_/\_/ \__,_|___/ |_| |_| |_|\__,_|\__,_|\___(_)
#
#
# Thanks to the excellent Tracy Durnell, from whom this file was lifted :)
# https://tracydurnell.com/robots.txt
# https://tracydurnell.com/2025/06/02/generative-ai-and-the-business-borg-aesthetic/
# Google AI
User-agent: Google-Extended
Disallow: /
User-agent: GoogleOther
Disallow: /
User-agent: Googlebot-Image
Disallow: /
User-agent: AdsBot-Google
Disallow: /
# Common Crawl
User-agent: CCBot
Disallow: /
# OpenAI
User-agent: ChatGPT-User
Disallow: /
User-agent: ChatGPT
Disallow: /
User-agent: GPTBot
Disallow: /
# Omgili
User-agent: Omgilibot
Disallow: /
User-agent: Omgili
Disallow: /
# Facebook AI
User-agent: FacebookBot
Disallow: /
User-agent: Claude-Web
Disallow: /
User-agent: ClaudeBot
Disallow: /
# Apple AI
User-agent: Applebot-Extended
Disallow: /
# Other AI training known or suspected
User-agent: anthropic-ai
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: The Knowledge AI
Disallow: /
User-agent: aiHitBot
Disallow: /
User-agent: cohere-ai
Disallow: /
User-agent: Diffbot
Disallow: /
User-agent: YouBot
Disallow: /
User-agent: ImagesiftBot
Disallow: /
# Siri and Alexa yuck
User-agent: Amazonbot
Disallow: /
User-agent: Applebot
Disallow: /
# Miscellaneous
User-agent: TurnitinBot
Disallow: /
User-agent: NPBot
Disallow: /
User-agent: SlySearch
Disallow: /
User-agent: 360Spider
Disallow: /
User-agent: netEstate NE Crawler
Disallow: /