1<meta charset="utf-8">
2<meta name="viewport" content="width=device-width, initial-scale=1">
3<meta name="color-scheme" content="dark light">
4<meta name="theme-color" media="(prefers-color-scheme: light)" content="#f8f4e9">
5<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0d0b09">
6<link rel="icon" type="image/svg+xml" href="/favicon.svg">
7<link rel="icon" href="/favicon.ico" sizes="32x32">
8<link rel="apple-touch-icon" href="/apple-touch-icon.png">
9<link rel="manifest" href="/site.webmanifest">
10<link rel="canonical" href="{{ .Permalink }}">
11{{- if .IsTranslated }}
12{{- range .AllTranslations }}
13<link rel="alternate" hreflang="{{ .Language.Lang }}" href="{{ .Permalink }}">
14{{- end }}
15{{- range .AllTranslations }}{{- if eq .Language.Lang "en" }}
16<link rel="alternate" hreflang="x-default" href="{{ .Permalink }}">
17{{- end }}{{- end }}
18{{- end }}
19{{ range .AlternativeOutputFormats -}}
20<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink }}" title="{{ site.Title }}">
21{{ end -}}
22<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title>
23{{- $desc := "" -}}
24{{- with .Description }}{{ $desc = . }}{{ end -}}
25{{- if not $desc }}{{ with .Params.description }}{{ $desc = . }}{{ end }}{{ end -}}
26{{- if not $desc }}{{ with site.Params.description }}{{ $desc = . }}{{ end }}{{ end -}}
27{{- if not $desc }}{{ $desc = site.Title }}{{ end -}}
28{{- $desc = $desc | plainify | truncate 160 -}}
29{{- /* card desc: home → site tagline; other pages → their OWN description, no site fallback. */ -}}
30{{- $ownDesc := "" -}}
31{{- with .Description }}{{ $ownDesc = . }}{{ end -}}
32{{- if not $ownDesc }}{{ with .Params.description }}{{ $ownDesc = . }}{{ end }}{{ end -}}
33{{- $cardDesc := cond .IsHome $desc ($ownDesc | plainify | truncate 160) -}}
34{{- $ogTitle := cond .IsHome (printf "%s — Engineering, writing, and collaborations" site.Title) (printf "%s | %s" .Title site.Title) -}}
35{{- /* og:image — dynamic card per page (title/type/date); real image only when a page sets `cover`. */ -}}
36{{- $ogImageURL := "" -}}
37{{- $hasCustom := false -}}
38{{- if .IsPage -}}
39 {{- with .Params.cover -}}
40 {{- if hasPrefix . "http" -}}
41 {{- $ogImageURL = . -}}
42 {{- $hasCustom = true -}}
43 {{- else -}}
44 {{- $path := printf "images/posts/%s" . -}}
45 {{- with resources.Get $path -}}
46 {{- $raw := .Permalink | absURL -}}
47 {{- $ogImageURL = cond site.Params.r2Transforms (printf "%s/cdn-cgi/image/width=1200,height=630,fit=cover,format=webp,quality=80/%s" site.Params.r2BaseURL $.Params.cover) $raw -}}
48 {{- $hasCustom = true -}}
49 {{- end -}}
50 {{- end -}}
51 {{- end -}}
52{{- end -}}
53{{- if not $hasCustom -}}
54 {{- $imgTitle := cond .IsHome site.Title .Title -}}
55 {{- $q := slice (printf "title=%s" ($imgTitle | urlquery)) -}}
56 {{- if eq .Kind "section" }}{{- $q = $q | append "section=1" -}}{{- end -}}
57 {{- with .Section }}{{- $q = $q | append (printf "type=%s" (. | urlquery)) -}}{{- end -}}
58 {{- if .IsPage }}{{- with .Date }}{{- if not .IsZero }}{{- $q = $q | append (printf "date=%s" (.Format "Jan 2006" | urlquery)) -}}{{- end -}}{{- end -}}{{- end -}}
59 {{- with $cardDesc }}{{- $q = $q | append (printf "desc=%s" (. | urlquery)) -}}{{- end -}}
60 {{- $ogImageURL = printf "%sog-image?%s" site.BaseURL (delimit $q "&") -}}
61{{- end -}}
62<meta name="description" content="{{ $desc }}">
63<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
64<meta property="og:title" content="{{ $ogTitle }}">
65<meta property="og:description" content="{{ $desc }}">
66<meta property="og:url" content="{{ .Permalink }}">
67{{ printf `<meta property="og:image" content="%s">` $ogImageURL | safeHTML }}
68<meta name="twitter:card" content="summary_large_image">
69{{- if .IsHome }}
70{{- $sameAs := slice }}
71{{- range site.Params.media }}{{ $sameAs = $sameAs | append .url }}{{ end }}
72<script type="application/ld+json">{{ (dict "@context" "https://schema.org" "@type" "Person" "name" site.Title "url" site.BaseURL "sameAs" $sameAs) | jsonify }}</script>
73{{- end }}
74<script>
75 document.documentElement.classList.add('js');
76 (function () {
77 try {
78 var storedTheme = localStorage.getItem('preferred-theme');
79 var theme = storedTheme || (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
80 document.documentElement.dataset.theme = theme;
81 document.documentElement.style.background = theme === 'dark' ? '#0d0b09' : '#f8f4e9';
82 document.documentElement.style.color = theme === 'dark' ? '#ddd9d4' : '#2b2621';
83 document.documentElement.style.colorScheme = theme;
84 } catch (_) {}
85 })();
86</script>
87<link rel="preload" href="/fonts/Silkscreen-Regular.woff2" as="font" type="font/woff2" crossorigin>
88{{ partialCached "head/scss.html" . }}
89{{ partialCached "head/js.html" . }}
90{{ if and .IsPage (eq .Section "photos") }}{{ partial "head/gallery.html" . }}{{ end }}