new post on eleventy

This commit is contained in:
2026-02-19 22:19:39 -08:00
parent fc71c05327
commit 25f5d5897b
264 changed files with 3896 additions and 551 deletions

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/comparing-text-editors/">
<img src="/img/horsetail.jpg" alt="Image unrelated to post. Close up on a horsetail plant&#39;s stem, with many small needle-like leaves emerging from all sides of the circular stem at each segmented joint." loading="lazy" decoding="async" width="1000" height="666">
<h2 id="comparing-text-editors">comparing text editors</h2>
<ul class="postlist-tags">
<li>software</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/an-intro-to-git/">
@ -1132,22 +1146,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/dragon-mask/">
<img src="/img/dragon-mask.jpg" alt="lee (a white person with glasses and a side shave) holds up a leather dragon mask in black and dark green. ze sticks hir tongue out at it." loading="lazy" decoding="async" width="1000" height="746">
<h2 id="dragon-mask">dragon mask</h2>
<ul class="postlist-tags">
<li>leather</li>
<li>highlight</li>
</ul>
</a>
</li>
</ol>
@ -1203,6 +1201,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/1/` was built on 2026-02-20T01:52:50.472Z -->
<!-- This page `/1/` was built on 2026-02-20T06:18:27.067Z -->
<body>
</body></body>

View File

@ -964,6 +964,24 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/foxgloves/">
<img src="/img/foxgloves-print.jpg" alt="A print of a cluster of foxgloves. The background is inked in green, with negative space and pink details making up the foxgloves." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="foxgloves">foxgloves</h2>
<ul class="postlist-tags">
<li>print</li>
<li>card</li>
<li>shirt</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/artisans-cooperative-cards/">
@ -1150,20 +1168,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/baseball-journal/">
<img src="/img/baseball-journal.jpg" alt="A 3-part collage of a leather-covered book with baseball-style stitching across the spine." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="baseball-journal">baseball journal</h2>
<ul class="postlist-tags">
<li>book</li>
</ul>
</a>
</li>
</ol>
@ -1219,6 +1223,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/10/` was built on 2026-02-20T01:52:54.328Z -->
<!-- This page `/10/` was built on 2026-02-20T06:18:30.751Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/baseball-journal/">
<img src="/img/baseball-journal.jpg" alt="A 3-part collage of a leather-covered book with baseball-style stitching across the spine." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="baseball-journal">baseball journal</h2>
<ul class="postlist-tags">
<li>book</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/trans-wrongs-skull/">
@ -1166,22 +1180,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/hair/">
<img src="/img/hair-print.jpg" alt="A print in black ink of belly hair." loading="lazy" decoding="async" width="1000" height="710">
<h2 id="hair">hair</h2>
<ul class="postlist-tags">
<li>print</li>
<li>gender</li>
</ul>
</a>
</li>
</ol>
@ -1237,6 +1235,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/11/` was built on 2026-02-20T01:52:54.553Z -->
<!-- This page `/11/` was built on 2026-02-20T06:18:31.061Z -->
<body>
</body></body>

View File

@ -964,6 +964,22 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/hair/">
<img src="/img/hair-print.jpg" alt="A print in black ink of belly hair." loading="lazy" decoding="async" width="1000" height="710">
<h2 id="hair">hair</h2>
<ul class="postlist-tags">
<li>print</li>
<li>gender</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/flicker/">
@ -1158,24 +1174,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/congrats-on-the-gay/">
<img src="/img/congrats-on-the-gay.jpg" alt="A greeting card reading, in black. &#39;Congrats on the,&#39; and then, in rainbow, &#39;Gay!&#39;" loading="lazy" decoding="async" width="1000" height="750">
<h2 id="congrats-on-the-gay">congrats on the gay</h2>
<ul class="postlist-tags">
<li>print</li>
<li>card</li>
<li>gender</li>
</ul>
</a>
</li>
</ol>
@ -1231,6 +1229,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/12/` was built on 2026-02-20T01:52:54.683Z -->
<!-- This page `/12/` was built on 2026-02-20T06:18:31.250Z -->
<body>
</body></body>

View File

@ -964,6 +964,24 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/congrats-on-the-gay/">
<img src="/img/congrats-on-the-gay.jpg" alt="A greeting card reading, in black. &#39;Congrats on the,&#39; and then, in rainbow, &#39;Gay!&#39;" loading="lazy" decoding="async" width="1000" height="750">
<h2 id="congrats-on-the-gay">congrats on the gay</h2>
<ul class="postlist-tags">
<li>print</li>
<li>card</li>
<li>gender</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/lined-notebook/">
@ -1136,20 +1154,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/green-memo-pad/">
<img src="/img/green-memo-pad.jpg" alt="A three panel collage showcasing a small green memo pad." loading="lazy" decoding="async" width="1000" height="1776">
<h2 id="green-memo-pad">green memo pad</h2>
<ul class="postlist-tags">
<li>book</li>
</ul>
</a>
</li>
</ol>
@ -1205,6 +1209,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/13/` was built on 2026-02-20T01:52:54.928Z -->
<!-- This page `/13/` was built on 2026-02-20T06:18:31.407Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/green-memo-pad/">
<img src="/img/green-memo-pad.jpg" alt="A three panel collage showcasing a small green memo pad." loading="lazy" decoding="async" width="1000" height="1776">
<h2 id="green-memo-pad">green memo pad</h2>
<ul class="postlist-tags">
<li>book</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/blue-and-brown-leather-journal/">
@ -1103,6 +1117,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/14/` was built on 2026-02-20T01:52:55.116Z -->
<!-- This page `/14/` was built on 2026-02-20T06:18:31.534Z -->
<body>
</body></body>

View File

@ -964,6 +964,22 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/dragon-mask/">
<img src="/img/dragon-mask.jpg" alt="lee (a white person with glasses and a side shave) holds up a leather dragon mask in black and dark green. ze sticks hir tongue out at it." loading="lazy" decoding="async" width="1000" height="746">
<h2 id="dragon-mask">dragon mask</h2>
<ul class="postlist-tags">
<li>leather</li>
<li>highlight</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/intro-to-wireframing/">
@ -1136,22 +1152,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/azure-locations-and-file-crawling/">
<img src="/img/azure-locations.jpg" alt="A Linux terminal. There is a fun rainbow flag in ascii art at the top, and then the user has called a command asking Azure for a list of resources applicable to a specific resource type" loading="lazy" decoding="async" width="1000" height="827">
<h2 id="azure-locations-and-file-crawling">azure locations and file crawling</h2>
<ul class="postlist-tags">
<li>software</li>
<li>highlight</li>
</ul>
</a>
</li>
</ol>
@ -1207,6 +1207,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/2/` was built on 2026-02-20T01:52:52.022Z -->
<!-- This page `/2/` was built on 2026-02-20T06:18:28.580Z -->
<body>
</body></body>

View File

@ -964,6 +964,22 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/azure-locations-and-file-crawling/">
<img src="/img/azure-locations.jpg" alt="A Linux terminal. There is a fun rainbow flag in ascii art at the top, and then the user has called a command asking Azure for a list of resources applicable to a specific resource type" loading="lazy" decoding="async" width="1000" height="827">
<h2 id="azure-locations-and-file-crawling">azure locations and file crawling</h2>
<ul class="postlist-tags">
<li>software</li>
<li>highlight</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/fix-your-hearts/">
@ -1144,20 +1160,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/lobstah/">
<img src="/img/lobstah.jpg" alt="Two red leather lobster ornaments, about 4-5 in long each." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="lobstah">lobstah</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
</ol>
@ -1213,6 +1215,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/3/` was built on 2026-02-20T01:52:52.399Z -->
<!-- This page `/3/` was built on 2026-02-20T06:18:28.943Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/lobstah/">
<img src="/img/lobstah.jpg" alt="Two red leather lobster ornaments, about 4-5 in long each." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="lobstah">lobstah</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/greeting-quorbs/">
@ -1134,20 +1148,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/tiny-portraits/">
<img src="/img/tiny-portrait-stamps.jpg" alt="A collage showing various small (around an inch) stamps that depict people or animals." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="tiny-portraits">tiny portraits</h2>
<ul class="postlist-tags">
<li>print</li>
</ul>
</a>
</li>
</ol>
@ -1203,6 +1203,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/4/` was built on 2026-02-20T01:52:52.732Z -->
<!-- This page `/4/` was built on 2026-02-20T06:18:29.245Z -->
<body>
</body></body>

View File

@ -1004,6 +1004,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/404.html` was built on 2026-02-20T01:52:49.431Z -->
<!-- This page `/404.html` was built on 2026-02-20T06:18:26.029Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/tiny-portraits/">
<img src="/img/tiny-portrait-stamps.jpg" alt="A collage showing various small (around an inch) stamps that depict people or animals." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="tiny-portraits">tiny portraits</h2>
<ul class="postlist-tags">
<li>print</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/snap-pouch/">
@ -1136,20 +1150,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/foldy-wallet-with-thumb-slide/">
<img src="/img/foldy-thumb-slide.jpg" alt="A card wallet with one main pocket and one quick access slot with a thumb slide. The cover of the main pocket curves around the thumb slide." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="foldy-wallet-with-thumb-slide">foldy wallet with thumb slide</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
</ol>
@ -1205,6 +1205,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/5/` was built on 2026-02-20T01:52:53.010Z -->
<!-- This page `/5/` was built on 2026-02-20T06:18:29.439Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/foldy-wallet-with-thumb-slide/">
<img src="/img/foldy-thumb-slide.jpg" alt="A card wallet with one main pocket and one quick access slot with a thumb slide. The cover of the main pocket curves around the thumb slide." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="foldy-wallet-with-thumb-slide">foldy wallet with thumb slide</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/brookes-cuff-bracelets/">
@ -1142,20 +1156,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/pins/">
<img src="/img/trans-rights-and-wrongs-pins.jpg" alt="Two hard enamel pins in my trans rights and trans wrongs skulls designs." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="pins">pins!</h2>
<ul class="postlist-tags">
<li>pin</li>
</ul>
</a>
</li>
</ol>
@ -1211,6 +1211,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/6/` was built on 2026-02-20T01:52:53.283Z -->
<!-- This page `/6/` was built on 2026-02-20T06:18:29.756Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/pins/">
<img src="/img/trans-rights-and-wrongs-pins.jpg" alt="Two hard enamel pins in my trans rights and trans wrongs skulls designs." loading="lazy" decoding="async" width="1000" height="1000">
<h2 id="pins">pins!</h2>
<ul class="postlist-tags">
<li>pin</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/mousie/">
@ -1136,20 +1150,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/bag-strap/">
<img src="/img/bag-strap.jpg" alt="A nylon webbing shoulder strap in bright teal with clips on each end." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="bag-strap">bag strap</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
</ol>
@ -1205,6 +1205,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/7/` was built on 2026-02-20T01:52:53.616Z -->
<!-- This page `/7/` was built on 2026-02-20T06:18:30.059Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/bag-strap/">
<img src="/img/bag-strap.jpg" alt="A nylon webbing shoulder strap in bright teal with clips on each end." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="bag-strap">bag strap</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/artists-conk/">
@ -1132,20 +1146,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/leather-chest-harness/">
<img src="/img/leather-chest-harness.jpg" alt="Someone from chin to mid-torso, wearing a dark teal leather chest harness with matte black fittings over a t shirt." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="leather-chest-harness">leather chest harness</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
</ol>
@ -1201,6 +1201,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/8/` was built on 2026-02-20T01:52:53.823Z -->
<!-- This page `/8/` was built on 2026-02-20T06:18:30.289Z -->
<body>
</body></body>

View File

@ -964,6 +964,20 @@ footer a:focus-visible {
<ol id="postlist">
<li class="post">
<a class="postlink" href="/leather-chest-harness/">
<img src="/img/leather-chest-harness.jpg" alt="Someone from chin to mid-torso, wearing a dark teal leather chest harness with matte black fittings over a t shirt." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="leather-chest-harness">leather chest harness</h2>
<ul class="postlist-tags">
<li>leather</li>
</ul>
</a>
</li>
<li class="post">
<a class="postlink" href="/leatherworking-favorites/">
@ -1176,24 +1190,6 @@ footer a:focus-visible {
</a>
</li>
<li class="post">
<a class="postlink" href="/foxgloves/">
<img src="/img/foxgloves-print.jpg" alt="A print of a cluster of foxgloves. The background is inked in green, with negative space and pink details making up the foxgloves." loading="lazy" decoding="async" width="1000" height="750">
<h2 id="foxgloves">foxgloves</h2>
<ul class="postlist-tags">
<li>print</li>
<li>card</li>
<li>shirt</li>
</ul>
</a>
</li>
</ol>
@ -1249,6 +1245,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/9/` was built on 2026-02-20T01:52:54.020Z -->
<!-- This page `/9/` was built on 2026-02-20T06:18:30.443Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/aarons-mask/` was built on 2026-02-20T01:52:49.455Z -->
<!-- This page `/aarons-mask/` was built on 2026-02-20T06:18:26.058Z -->
<body>
</body></body>

View File

@ -1121,6 +1121,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/about/` was built on 2026-02-20T01:52:49.431Z -->
<!-- This page `/about/` was built on 2026-02-20T06:18:26.029Z -->
<body>
</body></body>

View File

@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/acadia-coloring-journal/` was built on 2026-02-20T01:52:49.433Z -->
<!-- This page `/acadia-coloring-journal/` was built on 2026-02-20T06:18:26.031Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/acadia-mitts/` was built on 2026-02-20T01:52:49.462Z -->
<!-- This page `/acadia-mitts/` was built on 2026-02-20T06:18:26.066Z -->
<body>
</body></body>

View File

@ -1677,6 +1677,6 @@ codeberg https://codeberg.org/inherentlee/git-intro.git (push)</code></pre>
</footer>
<!-- This page `/an-intro-to-git/` was built on 2026-02-20T01:52:49.465Z -->
<!-- This page `/an-intro-to-git/` was built on 2026-02-20T06:18:26.069Z -->
<body>
</body></body>

View File

@ -1284,6 +1284,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/anarchy-autism/` was built on 2026-02-20T01:52:49.447Z -->
<!-- This page `/anarchy-autism/` was built on 2026-02-20T06:18:26.046Z -->
<body>
</body></body>

View File

@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/art-shows-and-events/` was built on 2026-02-20T01:52:49.462Z -->
<!-- This page `/art-shows-and-events/` was built on 2026-02-20T06:18:26.065Z -->
<body>
</body></body>

View File

@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/artisans-cooperative-cards/` was built on 2026-02-20T01:52:49.445Z -->
<!-- This page `/artisans-cooperative-cards/` was built on 2026-02-20T06:18:26.044Z -->
<body>
</body></body>

View File

@ -1270,6 +1270,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/artisans-cooperative-shirts/` was built on 2026-02-20T01:52:49.447Z -->
<!-- This page `/artisans-cooperative-shirts/` was built on 2026-02-20T06:18:26.045Z -->
<body>
</body></body>

View File

@ -1253,6 +1253,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/artists-conk/` was built on 2026-02-20T01:52:49.450Z -->
<!-- This page `/artists-conk/` was built on 2026-02-20T06:18:26.050Z -->
<body>
</body></body>

View File

@ -1493,6 +1493,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/azure-locations-and-file-crawling/` was built on 2026-02-20T01:52:49.461Z -->
<!-- This page `/azure-locations-and-file-crawling/` was built on 2026-02-20T06:18:26.065Z -->
<body>
</body></body>

View File

@ -1323,6 +1323,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/backend-accessibility/` was built on 2026-02-20T01:52:49.440Z -->
<!-- This page `/backend-accessibility/` was built on 2026-02-20T06:18:26.039Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/bag-strap/` was built on 2026-02-20T01:52:49.450Z -->
<!-- This page `/bag-strap/` was built on 2026-02-20T06:18:26.050Z -->
<body>
</body></body>

View File

@ -1272,6 +1272,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/baseball-journal/` was built on 2026-02-20T01:52:49.442Z -->
<!-- This page `/baseball-journal/` was built on 2026-02-20T06:18:26.041Z -->
<body>
</body></body>

View File

@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/become-unbutterable/` was built on 2026-02-20T01:52:49.432Z -->
<!-- This page `/become-unbutterable/` was built on 2026-02-20T06:18:26.031Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/bfl-silk-handspun/` was built on 2026-02-20T01:52:49.465Z -->
<!-- This page `/bfl-silk-handspun/` was built on 2026-02-20T06:18:26.069Z -->
<body>
</body></body>

View File

@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/big-pidge/` was built on 2026-02-20T01:52:49.441Z -->
<!-- This page `/big-pidge/` was built on 2026-02-20T06:18:26.040Z -->
<body>
</body></body>

View File

@ -1293,6 +1293,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/block-printing-transfer-method/` was built on 2026-02-20T01:52:49.440Z -->
<!-- This page `/block-printing-transfer-method/` was built on 2026-02-20T06:18:26.039Z -->
<body>
</body></body>

View File

@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/blue-and-brown-leather-journal/` was built on 2026-02-20T01:52:49.433Z -->
<!-- This page `/blue-and-brown-leather-journal/` was built on 2026-02-20T06:18:26.032Z -->
<body>
</body></body>

View File

@ -1272,6 +1272,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/booby-congrats-on-the-top-surgery/` was built on 2026-02-20T01:52:49.458Z -->
<!-- This page `/booby-congrats-on-the-top-surgery/` was built on 2026-02-20T06:18:26.062Z -->
<body>
</body></body>

View File

@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/bottom-growth/` was built on 2026-02-20T01:52:49.456Z -->
<!-- This page `/bottom-growth/` was built on 2026-02-20T06:18:26.059Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/bowtie/` was built on 2026-02-20T01:52:49.456Z -->
<!-- This page `/bowtie/` was built on 2026-02-20T06:18:26.060Z -->
<body>
</body></body>

View File

@ -1289,6 +1289,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/boypussy/` was built on 2026-02-20T01:52:49.446Z -->
<!-- This page `/boypussy/` was built on 2026-02-20T06:18:26.044Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-collar/` was built on 2026-02-20T01:52:49.450Z -->
<!-- This page `/brookes-collar/` was built on 2026-02-20T06:18:26.050Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-cuff-bracelets/` was built on 2026-02-20T01:52:49.455Z -->
<!-- This page `/brookes-cuff-bracelets/` was built on 2026-02-20T06:18:26.058Z -->
<body>
</body></body>

View File

@ -1277,6 +1277,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-notebook/` was built on 2026-02-20T01:52:49.435Z -->
<!-- This page `/brookes-notebook/` was built on 2026-02-20T06:18:26.034Z -->
<body>
</body></body>

View File

@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-scarf/` was built on 2026-02-20T01:52:49.463Z -->
<!-- This page `/brookes-scarf/` was built on 2026-02-20T06:18:26.067Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-socks/` was built on 2026-02-20T01:52:49.435Z -->
<!-- This page `/brookes-socks/` was built on 2026-02-20T06:18:26.033Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brookes-suspenders/` was built on 2026-02-20T01:52:49.463Z -->
<!-- This page `/brookes-suspenders/` was built on 2026-02-20T06:18:26.066Z -->
<body>
</body></body>

View File

@ -1263,6 +1263,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/brown-creeper/` was built on 2026-02-20T01:52:49.460Z -->
<!-- This page `/brown-creeper/` was built on 2026-02-20T06:18:26.064Z -->
<body>
</body></body>

View File

@ -1344,6 +1344,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/butch-hands-pattern/` was built on 2026-02-20T01:52:49.436Z -->
<!-- This page `/butch-hands-pattern/` was built on 2026-02-20T06:18:26.034Z -->
<body>
</body></body>

View File

@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/chanterelle/` was built on 2026-02-20T01:52:49.436Z -->
<!-- This page `/chanterelle/` was built on 2026-02-20T06:18:26.035Z -->
<body>
</body></body>

View File

@ -1225,8 +1225,8 @@ export { HeadingAnchors }</script>
<li class="newer">
<a href="/crow/">
crow <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
<a href="/screen-reader-optimizations/">
screen reader optimizations <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
</a>
</li>
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/charlie-the-alpaca-handspun/` was built on 2026-02-20T01:52:49.466Z -->
<!-- This page `/charlie-the-alpaca-handspun/` was built on 2026-02-20T06:18:26.070Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/circle-bag/` was built on 2026-02-20T01:52:49.452Z -->
<!-- This page `/circle-bag/` was built on 2026-02-20T06:18:26.053Z -->
<body>
</body></body>

View File

@ -1012,6 +1012,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/colophon/` was built on 2026-02-20T01:52:49.431Z -->
<!-- This page `/colophon/` was built on 2026-02-20T06:18:26.030Z -->
<body>
</body></body>

View File

@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/coming-out/` was built on 2026-02-20T01:52:49.446Z -->
<!-- This page `/coming-out/` was built on 2026-02-20T06:18:26.044Z -->
<body>
</body></body>

View File

@ -1484,6 +1484,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/comparing-text-editors/` was built on 2026-02-20T01:52:49.465Z -->
<!-- This page `/comparing-text-editors/` was built on 2026-02-20T06:18:26.069Z -->
<body>
</body></body>

View File

@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/congrats-on-the-autism-adhd/` was built on 2026-02-20T01:52:49.433Z -->
<!-- This page `/congrats-on-the-autism-adhd/` was built on 2026-02-20T06:18:26.031Z -->
<body>
</body></body>

View File

@ -1281,6 +1281,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/congrats-on-the-gay/` was built on 2026-02-20T01:52:49.436Z -->
<!-- This page `/congrats-on-the-gay/` was built on 2026-02-20T06:18:26.034Z -->
<body>
</body></body>

View File

@ -1095,6 +1095,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/contact/` was built on 2026-02-20T01:52:49.432Z -->
<!-- This page `/contact/` was built on 2026-02-20T06:18:26.030Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/coral-reef-handspun/` was built on 2026-02-20T01:52:49.465Z -->
<!-- This page `/coral-reef-handspun/` was built on 2026-02-20T06:18:26.069Z -->
<body>
</body></body>

View File

@ -1217,15 +1217,15 @@ export { HeadingAnchors }</script>
<ol class="pagination post-pagination">
<li class="older">
<a href="/charlie-the-alpaca-handspun/">
<i class="fa-solid fa-hand-point-left" aria-hidden="true"></i> charlie the alpaca handspun
<a href="/screen-reader-optimizations/">
<i class="fa-solid fa-hand-point-left" aria-hidden="true"></i> screen reader optimizations
</a>
</li>
<li class="newer">
<a href="/screen-reader-optimizations/">
screen reader optimizations <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
<a href="/eleventy-lessons/">
eleventy lessons <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
</a>
</li>
@ -1261,6 +1261,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/crow/` was built on 2026-02-20T01:52:49.467Z -->
<!-- This page `/crow/` was built on 2026-02-20T06:18:26.071Z -->
<body>
</body></body>

View File

@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/designing-a-bag/` was built on 2026-02-20T01:52:49.463Z -->
<!-- This page `/designing-a-bag/` was built on 2026-02-20T06:18:26.066Z -->
<body>
</body></body>

View File

@ -1313,6 +1313,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/domain-and-site-setup/` was built on 2026-02-20T01:52:49.450Z -->
<!-- This page `/domain-and-site-setup/` was built on 2026-02-20T06:18:26.049Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/double-bill-pocket-bifold/` was built on 2026-02-20T01:52:49.448Z -->
<!-- This page `/double-bill-pocket-bifold/` was built on 2026-02-20T06:18:26.047Z -->
<body>
</body></body>

View File

@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/dragon-mask/` was built on 2026-02-20T01:52:49.463Z -->
<!-- This page `/dragon-mask/` was built on 2026-02-20T06:18:26.067Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/dyeing-fiber/` was built on 2026-02-20T01:52:49.466Z -->
<!-- This page `/dyeing-fiber/` was built on 2026-02-20T06:18:26.069Z -->
<body>
</body></body>

View File

@ -1294,6 +1294,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/ecommerce-options/` was built on 2026-02-20T01:52:49.447Z -->
<!-- This page `/ecommerce-options/` was built on 2026-02-20T06:18:26.046Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/eight-pocket-bifold/` was built on 2026-02-20T01:52:49.448Z -->
<!-- This page `/eight-pocket-bifold/` was built on 2026-02-20T06:18:26.047Z -->
<body>
</body></body>

File diff suppressed because it is too large Load Diff

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/euphorbia/` was built on 2026-02-20T01:52:49.459Z -->
<!-- This page `/euphorbia/` was built on 2026-02-20T06:18:26.062Z -->
<body>
</body></body>

View File

@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fat-raccoon/` was built on 2026-02-20T01:52:49.441Z -->
<!-- This page `/fat-raccoon/` was built on 2026-02-20T06:18:26.040Z -->
<body>
</body></body>

View File

@ -1296,6 +1296,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fd-signifier-and-oppositional-sexism/` was built on 2026-02-20T01:52:49.458Z -->
<!-- This page `/fd-signifier-and-oppositional-sexism/` was built on 2026-02-20T06:18:26.061Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fedizinefest-2025/` was built on 2026-02-20T01:52:49.459Z -->
<!-- This page `/fedizinefest-2025/` was built on 2026-02-20T06:18:26.063Z -->
<body>
</body></body>

View File

@ -4,16 +4,317 @@
<subtitle>Lee Cattarin... on the internet!</subtitle>
<link href="https://leecat.art/feed.xml" rel="self" />
<link href="https://leecat.art/" />
<updated>2026-02-19T21:09:51Z</updated>
<updated>2026-02-19T00:00:00Z</updated>
<id>https://leecat.art/</id>
<author>
<name>Lee Cattarin</name>
<email>lee.cattarin@gmail.com</email>
</author>
<entry>
<title>eleventy lessons</title>
<link href="https://leecat.art/eleventy-lessons/" />
<updated>2026-02-19T00:00:00Z</updated>
<id>https://leecat.art/eleventy-lessons/</id>
<content type="html">&lt;p&gt;recently I wrote &lt;em&gt;several&lt;/em&gt; sites using &lt;a href=&quot;https://www.11ty.dev/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Eleventy&lt;/a&gt; (4? 5?). Including, over the past few days, this one! That&#39;s right, if you&#39;re reading this, we&#39;re now running on 11ty and hosted by &lt;a href=&quot;https://heckin.technology/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;heckin.technology&lt;/a&gt;. See ya, GitHub. Won&#39;t miss ya.&lt;/p&gt;
&lt;p&gt;I&#39;ve compiled some of the things I&#39;ve learned in a standalone site: &lt;a href=&quot;https://inherentlee.codeberg.page/lessons/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;11ty Lessons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;however, since I don&#39;t know how much I&#39;ll focus on that specific site - it is mostly a sample - I am re-publishing the most useful information here. I&#39;ll skip the intro to Markdown content. I&#39;m also going to update them where I&#39;ve learned more or to better match what&#39;s represented on this site.&lt;/p&gt;
&lt;p&gt;this will comprise of 4 parts: &lt;a href=&quot;https://leecat.art/eleventy-lessons/#related-posts&quot;&gt;related posts&lt;/a&gt;, &lt;a href=&quot;https://leecat.art/eleventy-lessons/#featured-images&quot;&gt;featured images&lt;/a&gt;, &lt;a href=&quot;https://leecat.art/eleventy-lessons/#pagination&quot;&gt;pagination&lt;/a&gt;, and &lt;a href=&quot;https://leecat.art/eleventy-lessons/#tag-image-preview&quot;&gt;tag image preview&lt;/a&gt;. Feel free to jump ahead, as none depend on the others.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;related-posts&quot;&gt;related posts&lt;/h2&gt;
&lt;p&gt;by default, the &lt;a href=&quot;https://leecat.art/eleventy-lessons/github.com/11ty/eleventy-base-blog&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Eleventy base blog&lt;/a&gt; comes with pagination between posts. Post 2 can take you to posts 1 and 3, etc.&lt;/p&gt;
&lt;p&gt;while that is useful for &lt;em&gt;this&lt;/em&gt; site, when building another site I wanted to see a couple randomly-suggested posts that shared 1 or more tags.&lt;/p&gt;
&lt;p&gt;I started by referring to &lt;a href=&quot;https://github.com/11ty/eleventy/discussions/2534&quot; target=&quot;_blank rel=external&amp;quot;&quot;&gt;this GitHub issue about related posts&lt;/a&gt;. I had to fix a few errors that arose from the suggested code.&lt;/p&gt;
&lt;p&gt;I also wanted to make two changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I didn&#39;t want to just see posts that shared &lt;em&gt;all&lt;/em&gt; tags, but rather posts that shared &lt;em&gt;any&lt;/em&gt; tag&lt;/li&gt;
&lt;li&gt;I wanted to randomly add a few posts instead of just getting whatever was first (with a shared tag) in the post order&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;filters-js&quot;&gt;filters.js&lt;/h3&gt;
&lt;p&gt;after adjusting for those needs, I had the following in &lt;code&gt;filters.js&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addNunjucksFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;excludeFromCollection&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;collection&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pageUrl&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ctx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;page&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;url&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;post&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; post&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;url &lt;span class=&quot;token operator&quot;&gt;!==&lt;/span&gt; pageUrl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;filterByTags&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;collection&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt;requiredTags&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;post&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; requiredTags&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;some&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; post&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tags&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;includes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;randomize&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Create a copy of the array to avoid modifying the original&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; shuffledArray &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; array&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;slice&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Fisher-Yates shuffle algorithm&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; shuffledArray&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;post-njk&quot;&gt;post.njk&lt;/h3&gt;
&lt;p&gt;I used this in my post layout. &lt;code&gt;filterTagList&lt;/code&gt; comes with the base blog by default, and removes the tags &amp;quot;posts&amp;quot; and &amp;quot;all.&amp;quot; &lt;code&gt;head&lt;/code&gt; also comes with the base blog. &lt;code&gt;postlist.njk&lt;/code&gt; is my modified-from-the-base-blog post layout.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{% set relevantTags = tags | filterTagList %}
{% set postlist = collections.posts | filterByTags(relevantTags) | excludeFromCollection(page.url) | randomize | head(2) %}
{% if postlist.length %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;section&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;related-posts&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;related posts&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% include &quot;postlist.njk&quot; %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;section&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and that sorts related posts.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;featured-images&quot;&gt;featured images&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;this one&#39;s been edited from the lessons site. I&#39;ve learned a bit more about 11ty images and feel more comfortable with my build now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;images in 11ty use the &lt;a href=&quot;https://www.11ty.dev/docs/plugins/image/#eleventy-transform&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Image Transform Plugin&lt;/a&gt;. I found it hard to find anything to reference while building this - a lot of sites in the template gallery are either text-heavy or not using the plugin - so I&#39;m reproducing what I&#39;ve got here for reference.&lt;/p&gt;
&lt;h3 id=&quot;file-structure&quot;&gt;file structure&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;content/
|--img/
| |--sample-0.jpg
| |--sample-1.jpg
| `--etc
|--posts/
| |--lesson-0-front-matter-and-urls.md
| |--lesson-1-headings-paragraphs-and-horizontal-lines.md
| `--etc
`--etc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;front-matter&quot;&gt;front matter&lt;/h3&gt;
&lt;p&gt;for any given post, my front matter references the image in this manner:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
image:
src: sample-0.jpg
alt: moss on a fencepost
---
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;image-html-transform&quot;&gt;image HTML transform&lt;/h3&gt;
&lt;p&gt;As mentioned, there&#39;s a plugin for images. If you started with the base blog, in &lt;code&gt;eleventy.config.js&lt;/code&gt;, you&#39;ll probably find a chunk of code similar to this already in place:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addPlugin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;eleventyImageTransformPlugin&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;formats&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;auto&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;widths&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;640&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;failOnError&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;htmlOptions&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;imgAttributes&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// e.g. &amp;lt;img loading decoding&gt; assigned on the HTML tag will override these values.&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;loading&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;lazy&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;decoding&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;async&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;sharpOptions&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;animated&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;setting &lt;code&gt;formats&lt;/code&gt; to &amp;quot;auto&amp;quot; helps - use whatever type of image you want, get that type out. The default settings that came with the Eleventy base blog didn&#39;t set a &lt;code&gt;width&lt;/code&gt;, which I wanted (by default, images off my camera - like the hellebore featured image for this post - are almost 5k pixels wide). I also found it helpful to set &lt;code&gt;failOnError&lt;/code&gt; to true for a little more feedback.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: It sure seems like Eleventy will fail your image processing if there&#39;s no alt text. While admirable, it would be nice if I could find any documentation for this!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;passthrough-copy&quot;&gt;passthrough copy&lt;/h3&gt;
&lt;p&gt;as I worked through this, I thought I needed a passthrough copy for a while. You don&#39;t - just let the plugin do its thing.&lt;/p&gt;
&lt;h3 id=&quot;templating&quot;&gt;templating&lt;/h3&gt;
&lt;p&gt;I needed images to show up in 3 places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the lists of posts on the home page, I wanted each post to show its featured image&lt;/li&gt;
&lt;li&gt;In the &amp;quot;related posts&amp;quot; section on each individual post, I wanted each related post to show its featured image&lt;/li&gt;
&lt;li&gt;And of course, I wanted the post to show its own featured image&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;home-page-and-related-posts&quot;&gt;home page and related posts&lt;/h3&gt;
&lt;p&gt;both of these sections use the same template, which in my setup is called &lt;code&gt;postlist.njk&lt;/code&gt;. Within the relevant links, I added the following:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{% if post.data.image.src %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/img/{{ post.data.image.src }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ post.data.image.alt }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% else %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;missing-image&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;post-body&quot;&gt;post body&lt;/h3&gt;
&lt;p&gt;the post body looks similar:&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{% if image.src %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;featured-img&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/posts/img/{{ image.src }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ image.alt }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;together, that sets up featured images for posts.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pagination&quot;&gt;pagination&lt;/h2&gt;
&lt;h3 id=&quot;simple-pagination&quot;&gt;simple pagination&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.11ty.dev/docs/pagination/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Post pagination in Eleventy is pretty straightforward&lt;/a&gt;, mostly requiring some specific front matter.&lt;/p&gt;
&lt;p&gt;The home page pagination I have set up here looks like the following (in &lt;code&gt;index.njk&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
pagination:
data: collections.posts
size: 13
alias: posts
reverse: true
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;6 posts per page, paginate data from &lt;code&gt;collections.posts&lt;/code&gt; which we&#39;ll call just &lt;code&gt;posts&lt;/code&gt; for short, and do it in reverse (aka, most recent posts show first).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.11ty.dev/docs/pagination/nav&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;You&#39;ll also likely want previous and next buttons&lt;/a&gt;. I did. Here&#39;s what I have...&lt;/p&gt;
&lt;h4 id=&quot;pagination-njk&quot;&gt;pagination.njk&lt;/h4&gt;
&lt;p&gt;There&#39;s two components to this, the bigger one being this &lt;code&gt;pagination.njk&lt;/code&gt; template. Look, I like my little icons, ok? It takes an &lt;code&gt;olderHref&lt;/code&gt; and a &lt;code&gt;newerHref&lt;/code&gt;, and optionally an &lt;code&gt;olderTitle&lt;/code&gt; and &lt;code&gt;newerTitle&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{% if olderHref or newerHref %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;nav&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;aria-label&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;pagination&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ol&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;pagination {% if inPost %}post-pagination{% endif %}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% if olderHref %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;older&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ olderHref }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;i&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;fa-solid fa-hand-point-left&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;aria-hidden&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;i&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{{ olderTitle or &quot;older&quot; }}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}
{% if newerHref %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;newer&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ newerHref }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{{ newerTitle or &quot;newer&quot; }}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;i&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;fa-solid fa-hand-point-right&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;aria-hidden&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;true&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;i&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ol&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;nav&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;calling-the-template&quot;&gt;calling the template&lt;/h4&gt;
&lt;p&gt;From &lt;code&gt;index.njk&lt;/code&gt; we can &lt;code&gt;include &amp;quot;pagination.njk&amp;quot;&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{# idk why these are backwards either #}
{% set newerHref = pagination.href.previous %}
{% set olderHref = pagination.href.next %}
{% include &amp;quot;pagination.njk&amp;quot; %}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Yup. The order of previous vs. next is totally unintuitive to me, too.&lt;/p&gt;
&lt;h3 id=&quot;complex-pagination&quot;&gt;complex pagination&lt;/h3&gt;
&lt;p&gt;however, there&#39;s a catch. &lt;a href=&quot;https://www.11ty.dev/docs/quicktips/tag-pages/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Tag pages are &lt;em&gt;created&lt;/em&gt; via pagination&lt;/a&gt;! It&#39;s a lot harder to paginate those - you can&#39;t just use the front matter to set it up.&lt;/p&gt;
&lt;p&gt;I untangled &lt;a href=&quot;https://github.com/11ty/eleventy/issues/332#issuecomment-445236776&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;this GitHub issue about double-layered pagination&lt;/a&gt; and came to the following solution...&lt;/p&gt;
&lt;h4 id=&quot;eleventy-config-js&quot;&gt;eleventy.config.js&lt;/h4&gt;
&lt;p&gt;in &lt;code&gt;eleventy.config.js&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// note that this uses the lodash.chunk method, so youll have to import that&lt;/span&gt;
eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addCollection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;tagPagination&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;collection&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Get unique list of tags&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; tagSet &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getAllSorted&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;flatMap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; post&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tags &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Get each item that matches the tag&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; paginationSize &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; tagMap &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; tagArray &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;...&lt;/span&gt;tagSet&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; tagName &lt;span class=&quot;token keyword&quot;&gt;of&lt;/span&gt; tagArray&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; tagItems &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; collection&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getFilteredByTag&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tagName&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; pagedItems &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;chunk&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tagItems&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reverse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; paginationSize&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; pageNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; max &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pagedItems&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; pageNumber &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; max&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; pageNumber&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
tagMap&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;tagName&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; tagName&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;pageNumber&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; pageNumber&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;pageSize&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; pagedItems&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;pageData&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; pagedItems&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pageNumber&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; tagMap&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;tag-pages-njk&quot;&gt;tag-pages.njk&lt;/h4&gt;
&lt;p&gt;in my &lt;code&gt;tag-pages.njk&lt;/code&gt; file (or whatever you use to template out your tag pages):&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;---
pagination:
data: collections.tagPagination
size: 1
alias: tag
eleventyComputed:
permalink: /tags/{{ tag.tagName | slugify }}/% if tag.pageNumber %{{ tag.pageNumber + 1 }}/% endif %
title: &quot;Posts tagged {{ tag.tagName }}&quot;
eleventyExcludeFromCollections: true
---
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Posts tagged “{{ tag.tagName }}”&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% set postlist = tag.pageData %}
{% include &quot;postlist.njk&quot; %}
{# idk why these are backwards either #}
{% if tag.pageNumber &gt; 0 %}
{% set newerHref = pagination.href.previous %}
{% endif %}
{% if tag.pageNumber &amp;lt; tag.pageSize - 1 %}
{% set olderHref = pagination.href.next %}
{% endif %}
{% include &quot;pagination.njk&quot; %}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;note the pagination checking &lt;code&gt;tag.pageNumber&lt;/code&gt; against &lt;code&gt;tag.PageSize&lt;/code&gt; - the &lt;a href=&quot;https://github.com/11ty/eleventy/issues/332#issuecomment-445236776&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;original suggested solution&lt;/a&gt; in the GitHub post creates an issue where the pagination loops through &lt;em&gt;all&lt;/em&gt; of the tag pages bit-by-bit. This sorts that - hat tip to &lt;a href=&quot;https://github.com/11ty/eleventy/issues/332#issuecomment-1248185406&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;TheReyzar who mentioned the issue and showed part of their solution&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;filters-js-again&quot;&gt;filters.js (again)&lt;/h4&gt;
&lt;p&gt;finally, in my &lt;code&gt;filters.js&lt;/code&gt; file, I add the &lt;code&gt;tagPagination&lt;/code&gt; tag to the tags that get filtered using &lt;code&gt;filterTagList&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;eleventyConfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addFilter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;filterTagList&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;filterTagList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;tags&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tags &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;all&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;posts&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;tagPagination&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;indexOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tag-image-preview&quot;&gt;tag image preview&lt;/h2&gt;
&lt;p&gt;today I tackled making the tag page more visually interesting.&lt;/p&gt;
&lt;h3 id=&quot;preview-the-first-featured-image&quot;&gt;preview the first featured image&lt;/h3&gt;
&lt;p&gt;first, I worked on previewing the first featured image. The focus here is on digging into &lt;code&gt;collections[tag]&lt;/code&gt; (reversed!) to get to the data of the first post.&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;taglist&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% for tag in collections | getKeys | filterTagList | sortAlphabetically %}
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ tagUrl }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;taglist-link&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% set tagRecent = collections[tag] | reverse %}
{% if tagRecent[0].data.image.src %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/posts/img/{{ tagRecent[0].data.image.src }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ tagRecent[0].data.image.alt }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% else %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;missing-image&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;post-tag&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;{{ tag }}&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% set numPosts = collections[tag].length %}
({{ numPosts }} post{% if numPosts &gt; 1 %}s{% endif %})
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endfor %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;preview-a-collage-of-recent-featured-images&quot;&gt;preview a collage of recent featured images&lt;/h3&gt;
&lt;p&gt;I found that having just the first featured image made the tag page hard to differentiate from any of the pages listing individual posts, so from there I moved to showing 4 images (or empty rectangles where there weren&#39;t four to show).&lt;/p&gt;
&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;taglist&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% for tag in collections | getKeys | filterTagList | sortAlphabetically %}
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ tagUrl }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;taglist-link&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;tag-imgs&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% set tagRecent = collections[tag] | reverse %}
{% for i in range(0, 4) %}
{% if tagRecent[i].data.image.src %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;/posts/img/{{ tagRecent[i].data.image.src }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;alt&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;{{ tagRecent[i].data.image.alt }}&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% else %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;missing-image&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endif %}
{% endfor %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;post-tag&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;{{ tag }}&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% set numPosts = collections[tag].length %}
({{ numPosts }} post{% if numPosts &gt; 1 %}s{% endif %})
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{% endfor %}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;with a bit of &lt;code&gt;display: grid&lt;/code&gt;, we&#39;re good to go, right?&lt;/p&gt;
&lt;h4 id=&quot;handling-multiple-aspect-ratios&quot;&gt;handling multiple aspect ratios&lt;/h4&gt;
&lt;p&gt;this had worked so far because the photos on the lessons site are from my camera in landscape mode, producing neat, identical 3:2 aspect ratios. Let&#39;s throw a wrench in that and introduce a portrait-mode photo.&lt;/p&gt;
&lt;p&gt;thankfully, the CSS property &lt;code&gt;aspect-ratio&lt;/code&gt; makes this pretty straightforward, and &lt;code&gt;object-fit&lt;/code&gt; finishes the job.&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;.taglist-link img&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;aspect-ratio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3 / 2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;object-fit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; cover&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(I also set the &lt;code&gt;missing-img&lt;/code&gt; &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;s to have the same aspect ratio.)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;There&#39;s the good stuff from &lt;a href=&quot;https://inherentlee.codeberg.page/lessons/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;11ty Lessons&lt;/a&gt;. Hope you enjoyed.&lt;/p&gt;
</content>
</entry>
<entry>
<title>crow</title>
<link href="https://leecat.art/crow/" />
<updated>2026-02-09T00:00:00Z</updated>
<id>https://leecat.art/crow/</id>
<content type="html"></content>
</entry>
<entry>
<title>screen reader optimizations</title>
<link href="https://leecat.art/screen-reader-optimizations/" />
<updated>2026-02-19T21:09:51Z</updated>
<updated>2026-02-06T00:00:00Z</updated>
<id>https://leecat.art/screen-reader-optimizations/</id>
<content type="html">&lt;h2 id=&quot;context&quot;&gt;context&lt;/h2&gt;
&lt;p&gt;recently, I&#39;ve been working on a &lt;a href=&quot;https://inherentlee.codeberg.page/spoonfairies/&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;website for a project called spoonfairies&lt;/a&gt;. On the providers page, we list a series of names along with their pronouns, location, and services offered. Visually, it looks like this:&lt;/p&gt;
@ -70,13 +371,6 @@
&lt;p&gt;now, after more screen reader testing, it reads out smoothly. The &lt;code&gt;aria-label&lt;/code&gt; precludes the actual link text and cleanly says what needs to be said, with nothing breaking up the text and the whole thing easily recognized as one link. &lt;em&gt;And&lt;/em&gt; I&#39;ve got my fancy styling. Sweet.&lt;/p&gt;
</content>
</entry>
<entry>
<title>crow</title>
<link href="https://leecat.art/crow/" />
<updated>2026-02-09T00:00:00Z</updated>
<id>https://leecat.art/crow/</id>
<content type="html"></content>
</entry>
<entry>
<title>charlie the alpaca handspun</title>
<link href="https://leecat.art/charlie-the-alpaca-handspun/" />
@ -131,14 +425,6 @@
<updated>2026-01-18T00:00:00Z</updated>
<id>https://leecat.art/dyeing-fiber/</id>
<content type="html">&lt;p&gt;hand-dyed with acid dyes&lt;/p&gt;
</content>
</entry>
<entry>
<title>coral reef handspun</title>
<link href="https://leecat.art/coral-reef-handspun/" />
<updated>2026-01-18T00:00:00Z</updated>
<id>https://leecat.art/coral-reef-handspun/</id>
<content type="html">&lt;p&gt;Fiber from &lt;a href=&quot;https://www.etsy.com/shop/JakiraFarms&quot; target=&quot;_blank&quot; rel=&quot;external&quot;&gt;Jakira Farms&lt;/a&gt; in Coral Reef colorway. 100% merino.&lt;/p&gt;
</content>
</entry>
</feed>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fire-and-ice-handspun/` was built on 2026-02-20T01:52:49.466Z -->
<!-- This page `/fire-and-ice-handspun/` was built on 2026-02-20T06:18:26.070Z -->
<body>
</body></body>

View File

@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fishhook-pride-keychains/` was built on 2026-02-20T01:52:49.452Z -->
<!-- This page `/fishhook-pride-keychains/` was built on 2026-02-20T06:18:26.053Z -->
<body>
</body></body>

View File

@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/five-of-them/` was built on 2026-02-20T01:52:49.444Z -->
<!-- This page `/five-of-them/` was built on 2026-02-20T06:18:26.043Z -->
<body>
</body></body>

View File

@ -1261,6 +1261,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fix-your-hearts/` was built on 2026-02-20T01:52:49.461Z -->
<!-- This page `/fix-your-hearts/` was built on 2026-02-20T06:18:26.065Z -->
<body>
</body></body>

View File

@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/flatfish/` was built on 2026-02-20T01:52:49.436Z -->
<!-- This page `/flatfish/` was built on 2026-02-20T06:18:26.035Z -->
<body>
</body></body>

View File

@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/flicker/` was built on 2026-02-20T01:52:49.440Z -->
<!-- This page `/flicker/` was built on 2026-02-20T06:18:26.038Z -->
<body>
</body></body>

View File

@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/flocked-notebook/` was built on 2026-02-20T01:52:49.435Z -->
<!-- This page `/flocked-notebook/` was built on 2026-02-20T06:18:26.034Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/foldy-wallet-with-thumb-slide/` was built on 2026-02-20T01:52:49.455Z -->
<!-- This page `/foldy-wallet-with-thumb-slide/` was built on 2026-02-20T06:18:26.058Z -->
<body>
</body></body>

View File

@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/foldy-wallet/` was built on 2026-02-20T01:52:49.454Z -->
<!-- This page `/foldy-wallet/` was built on 2026-02-20T06:18:26.057Z -->
<body>
</body></body>

View File

@ -1277,6 +1277,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/fountain-pen-friendly-stationery/` was built on 2026-02-20T01:52:49.460Z -->
<!-- This page `/fountain-pen-friendly-stationery/` was built on 2026-02-20T06:18:26.064Z -->
<body>
</body></body>

View File

@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/foxgloves/` was built on 2026-02-20T01:52:49.445Z -->
<!-- This page `/foxgloves/` was built on 2026-02-20T06:18:26.044Z -->
<body>
</body></body>

View File

@ -1209,6 +1209,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/1/` was built on 2026-02-20T01:52:50.464Z -->
<!-- This page `/gallery/1/` was built on 2026-02-20T06:18:27.037Z -->
<body>
</body></body>

View File

@ -1213,6 +1213,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/10/` was built on 2026-02-20T01:52:54.141Z -->
<!-- This page `/gallery/10/` was built on 2026-02-20T06:18:30.861Z -->
<body>
</body></body>

View File

@ -1091,6 +1091,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/11/` was built on 2026-02-20T01:52:54.427Z -->
<!-- This page `/gallery/11/` was built on 2026-02-20T06:18:31.156Z -->
<body>
</body></body>

View File

@ -1223,6 +1223,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/2/` was built on 2026-02-20T01:52:51.940Z -->
<!-- This page `/gallery/2/` was built on 2026-02-20T06:18:28.492Z -->
<body>
</body></body>

View File

@ -1205,6 +1205,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/3/` was built on 2026-02-20T01:52:52.292Z -->
<!-- This page `/gallery/3/` was built on 2026-02-20T06:18:28.844Z -->
<body>
</body></body>

View File

@ -1213,6 +1213,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/4/` was built on 2026-02-20T01:52:52.545Z -->
<!-- This page `/gallery/4/` was built on 2026-02-20T06:18:29.082Z -->
<body>
</body></body>

View File

@ -1207,6 +1207,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/5/` was built on 2026-02-20T01:52:52.809Z -->
<!-- This page `/gallery/5/` was built on 2026-02-20T06:18:29.350Z -->
<body>
</body></body>

View File

@ -1211,6 +1211,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/6/` was built on 2026-02-20T01:52:53.113Z -->
<!-- This page `/gallery/6/` was built on 2026-02-20T06:18:29.669Z -->
<body>
</body></body>

View File

@ -1255,6 +1255,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/7/` was built on 2026-02-20T01:52:53.418Z -->
<!-- This page `/gallery/7/` was built on 2026-02-20T06:18:29.981Z -->
<body>
</body></body>

View File

@ -1237,6 +1237,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/8/` was built on 2026-02-20T01:52:53.701Z -->
<!-- This page `/gallery/8/` was built on 2026-02-20T06:18:30.296Z -->
<body>
</body></body>

View File

@ -1239,6 +1239,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/9/` was built on 2026-02-20T01:52:53.923Z -->
<!-- This page `/gallery/9/` was built on 2026-02-20T06:18:30.553Z -->
<body>
</body></body>

View File

@ -1197,6 +1197,6 @@ footer a:focus-visible {
</footer>
<!-- This page `/gallery/` was built on 2026-02-20T01:52:49.429Z -->
<!-- This page `/gallery/` was built on 2026-02-20T06:18:26.027Z -->
<body>
</body></body>

View File

@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/geese-trans-wrongs/` was built on 2026-02-20T01:52:49.442Z -->
<!-- This page `/geese-trans-wrongs/` was built on 2026-02-20T06:18:26.040Z -->
<body>
</body></body>

View File

@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/geese/` was built on 2026-02-20T01:52:49.442Z -->
<!-- This page `/geese/` was built on 2026-02-20T06:18:26.040Z -->
<body>
</body></body>

View File

@ -1451,6 +1451,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/gender-as-a-proxy-variable/` was built on 2026-02-20T01:52:49.457Z -->
<!-- This page `/gender-as-a-proxy-variable/` was built on 2026-02-20T06:18:26.061Z -->
<body>
</body></body>

View File

@ -1501,6 +1501,6 @@ This may also be expanded to a multi-step approach, with questions covering some
</footer>
<!-- This page `/gender-in-data-models/` was built on 2026-02-20T01:52:49.444Z -->
<!-- This page `/gender-in-data-models/` was built on 2026-02-20T06:18:26.043Z -->
<body>
</body></body>

View File

@ -1285,6 +1285,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/gender/` was built on 2026-02-20T01:52:49.434Z -->
<!-- This page `/gender/` was built on 2026-02-20T06:18:26.033Z -->
<body>
</body></body>

View File

@ -1289,6 +1289,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/girldick/` was built on 2026-02-20T01:52:49.446Z -->
<!-- This page `/girldick/` was built on 2026-02-20T06:18:26.045Z -->
<body>
</body></body>

View File

@ -1321,6 +1321,6 @@ export { HeadingAnchors }</script>
</footer>
<!-- This page `/give-to-trans-orgs-and-people/` was built on 2026-02-20T01:52:49.461Z -->
<!-- This page `/give-to-trans-orgs-and-people/` was built on 2026-02-20T06:18:26.064Z -->
<body>
</body></body>

Some files were not shown because too many files have changed in this diff Show More