Compare commits
2 Commits
fc71c05327
...
3848af101b
| Author | SHA1 | Date | |
|---|---|---|---|
| 3848af101b | |||
| 25f5d5897b |
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1,5 @@
|
|||||||
# npm
|
# npm
|
||||||
node_modules
|
node_modules
|
||||||
|
|
||||||
|
# local build
|
||||||
|
_live
|
||||||
|
|||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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'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">
|
<li class="post">
|
||||||
<a class="postlink" href="/an-intro-to-git/">
|
<a class="postlink" href="/an-intro-to-git/">
|
||||||
|
|
||||||
@ -1132,22 +1146,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1203,6 +1201,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,24 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/artisans-cooperative-cards/">
|
<a class="postlink" href="/artisans-cooperative-cards/">
|
||||||
|
|
||||||
@ -1150,20 +1168,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1219,6 +1223,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/trans-wrongs-skull/">
|
<a class="postlink" href="/trans-wrongs-skull/">
|
||||||
|
|
||||||
@ -1166,22 +1180,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1237,6 +1235,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,22 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/flicker/">
|
<a class="postlink" href="/flicker/">
|
||||||
|
|
||||||
@ -1158,24 +1174,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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. 'Congrats on the,' and then, in rainbow, 'Gay!'" 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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1231,6 +1229,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,24 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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. 'Congrats on the,' and then, in rainbow, 'Gay!'" 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">
|
<li class="post">
|
||||||
<a class="postlink" href="/lined-notebook/">
|
<a class="postlink" href="/lined-notebook/">
|
||||||
|
|
||||||
@ -1136,20 +1154,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1205,6 +1209,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/blue-and-brown-leather-journal/">
|
<a class="postlink" href="/blue-and-brown-leather-journal/">
|
||||||
|
|
||||||
@ -1103,6 +1117,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,22 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/intro-to-wireframing/">
|
<a class="postlink" href="/intro-to-wireframing/">
|
||||||
|
|
||||||
@ -1136,22 +1152,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1207,6 +1207,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,22 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/fix-your-hearts/">
|
<a class="postlink" href="/fix-your-hearts/">
|
||||||
|
|
||||||
@ -1144,20 +1160,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1213,6 +1215,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/greeting-quorbs/">
|
<a class="postlink" href="/greeting-quorbs/">
|
||||||
|
|
||||||
@ -1134,20 +1148,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1203,6 +1203,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1004,6 +1004,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/snap-pouch/">
|
<a class="postlink" href="/snap-pouch/">
|
||||||
|
|
||||||
@ -1136,20 +1150,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1205,6 +1205,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/brookes-cuff-bracelets/">
|
<a class="postlink" href="/brookes-cuff-bracelets/">
|
||||||
|
|
||||||
@ -1142,20 +1156,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1211,6 +1211,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/mousie/">
|
<a class="postlink" href="/mousie/">
|
||||||
|
|
||||||
@ -1136,20 +1150,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1205,6 +1205,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/artists-conk/">
|
<a class="postlink" href="/artists-conk/">
|
||||||
|
|
||||||
@ -1132,20 +1146,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1201,6 +1201,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -964,6 +964,20 @@ footer a:focus-visible {
|
|||||||
|
|
||||||
<ol id="postlist">
|
<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">
|
<li class="post">
|
||||||
<a class="postlink" href="/leatherworking-favorites/">
|
<a class="postlink" href="/leatherworking-favorites/">
|
||||||
|
|
||||||
@ -1176,24 +1190,6 @@ footer a:focus-visible {
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</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>
|
</ol>
|
||||||
|
|
||||||
|
|
||||||
@ -1249,6 +1245,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1121,6 +1121,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1677,6 +1677,6 @@ codeberg https://codeberg.org/inherentlee/git-intro.git (push)</code></pre>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1284,6 +1284,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1270,6 +1270,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1253,6 +1253,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1493,6 +1493,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1323,6 +1323,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1272,6 +1272,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1293,6 +1293,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1272,6 +1272,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1289,6 +1289,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1277,6 +1277,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1269,6 +1269,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1263,6 +1263,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1344,6 +1344,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1225,8 +1225,8 @@ export { HeadingAnchors }</script>
|
|||||||
|
|
||||||
|
|
||||||
<li class="newer">
|
<li class="newer">
|
||||||
<a href="/crow/">
|
<a href="/screen-reader-optimizations/">
|
||||||
crow <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
|
screen reader optimizations <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1012,6 +1012,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1484,6 +1484,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1281,6 +1281,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1095,6 +1095,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1217,15 +1217,15 @@ export { HeadingAnchors }</script>
|
|||||||
<ol class="pagination post-pagination">
|
<ol class="pagination post-pagination">
|
||||||
|
|
||||||
<li class="older">
|
<li class="older">
|
||||||
<a href="/charlie-the-alpaca-handspun/">
|
<a href="/screen-reader-optimizations/">
|
||||||
<i class="fa-solid fa-hand-point-left" aria-hidden="true"></i> charlie the alpaca handspun
|
<i class="fa-solid fa-hand-point-left" aria-hidden="true"></i> screen reader optimizations
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li class="newer">
|
<li class="newer">
|
||||||
<a href="/screen-reader-optimizations/">
|
<a href="/eleventy-lessons/">
|
||||||
screen reader optimizations <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
|
eleventy lessons <i class="fa-solid fa-hand-point-right" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -1261,6 +1261,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1313,6 +1313,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1294,6 +1294,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
1547
_site/eleventy-lessons/index.html
Normal file
1547
_site/eleventy-lessons/index.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1296,6 +1296,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
320
_site/feed.xml
320
_site/feed.xml
@ -4,16 +4,317 @@
|
|||||||
<subtitle>Lee Cattarin... on the internet!</subtitle>
|
<subtitle>Lee Cattarin... on the internet!</subtitle>
|
||||||
<link href="https://leecat.art/feed.xml" rel="self" />
|
<link href="https://leecat.art/feed.xml" rel="self" />
|
||||||
<link href="https://leecat.art/" />
|
<link href="https://leecat.art/" />
|
||||||
<updated>2026-02-19T21:09:51Z</updated>
|
<updated>2026-02-19T00:00:00Z</updated>
|
||||||
<id>https://leecat.art/</id>
|
<id>https://leecat.art/</id>
|
||||||
<author>
|
<author>
|
||||||
<name>Lee Cattarin</name>
|
<name>Lee Cattarin</name>
|
||||||
<email>lee.cattarin@gmail.com</email>
|
<email>lee.cattarin@gmail.com</email>
|
||||||
</author>
|
</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"><p>recently I wrote <em>several</em> sites using <a href="https://www.11ty.dev/" target="_blank" rel="external">Eleventy</a> (4? 5?). Including, over the past few days, this one! That's right, if you're reading this, we're now running on 11ty and hosted by <a href="https://heckin.technology/" target="_blank" rel="external">heckin.technology</a>. See ya, GitHub. Won't miss ya.</p>
|
||||||
|
<p>I've compiled some of the things I've learned in a standalone site: <a href="https://inherentlee.codeberg.page/lessons/" target="_blank" rel="external">11ty Lessons</a>.</p>
|
||||||
|
<p>however, since I don't know how much I'll focus on that specific site - it is mostly a sample - I am re-publishing the most useful information here. I'll skip the intro to Markdown content. I'm also going to update them where I've learned more or to better match what's represented on this site.</p>
|
||||||
|
<p>this will comprise of 4 parts: <a href="https://leecat.art/eleventy-lessons/#related-posts">related posts</a>, <a href="https://leecat.art/eleventy-lessons/#featured-images">featured images</a>, <a href="https://leecat.art/eleventy-lessons/#pagination">pagination</a>, and <a href="https://leecat.art/eleventy-lessons/#tag-image-preview">tag image preview</a>. Feel free to jump ahead, as none depend on the others.</p>
|
||||||
|
<hr>
|
||||||
|
<h2 id="related-posts">related posts</h2>
|
||||||
|
<p>by default, the <a href="https://leecat.art/eleventy-lessons/github.com/11ty/eleventy-base-blog" target="_blank" rel="external">Eleventy base blog</a> comes with pagination between posts. Post 2 can take you to posts 1 and 3, etc.</p>
|
||||||
|
<p>while that is useful for <em>this</em> site, when building another site I wanted to see a couple randomly-suggested posts that shared 1 or more tags.</p>
|
||||||
|
<p>I started by referring to <a href="https://github.com/11ty/eleventy/discussions/2534" target="_blank rel=external&quot;">this GitHub issue about related posts</a>. I had to fix a few errors that arose from the suggested code.</p>
|
||||||
|
<p>I also wanted to make two changes:</p>
|
||||||
|
<ol>
|
||||||
|
<li>I didn't want to just see posts that shared <em>all</em> tags, but rather posts that shared <em>any</em> tag</li>
|
||||||
|
<li>I wanted to randomly add a few posts instead of just getting whatever was first (with a shared tag) in the post order</li>
|
||||||
|
</ol>
|
||||||
|
<h3 id="filters-js">filters.js</h3>
|
||||||
|
<p>after adjusting for those needs, I had the following in <code>filters.js</code>:</p>
|
||||||
|
<pre class="language-js"><code class="language-js">eleventyConfig<span class="token punctuation">.</span><span class="token function">addNunjucksFilter</span><span class="token punctuation">(</span><span class="token string">"excludeFromCollection"</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">collection<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> pageUrl<span class="token operator">=</span><span class="token keyword">this</span><span class="token punctuation">.</span>ctx<span class="token punctuation">.</span>page<span class="token punctuation">.</span>url</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">return</span> collection<span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token parameter">post</span> <span class="token operator">=></span> post<span class="token punctuation">.</span>url <span class="token operator">!==</span> pageUrl<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
eleventyConfig<span class="token punctuation">.</span><span class="token function">addFilter</span><span class="token punctuation">(</span><span class="token string">"filterByTags"</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">collection<span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token operator">...</span>requiredTags</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">return</span> collection<span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token parameter">post</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">return</span> requiredTags<span class="token punctuation">.</span><span class="token function">flat</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">some</span><span class="token punctuation">(</span><span class="token parameter">tag</span> <span class="token operator">=></span> post<span class="token punctuation">.</span>data<span class="token punctuation">.</span>tags<span class="token punctuation">.</span><span class="token function">includes</span><span class="token punctuation">(</span>tag<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
eleventyConfig<span class="token punctuation">.</span><span class="token function">addFilter</span><span class="token punctuation">(</span><span class="token string">"randomize"</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">array</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token comment">// Create a copy of the array to avoid modifying the original</span>
|
||||||
|
<span class="token keyword">let</span> shuffledArray <span class="token operator">=</span> array<span class="token punctuation">.</span><span class="token function">slice</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
<span class="token comment">// Fisher-Yates shuffle algorithm</span>
|
||||||
|
<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">let</span> i <span class="token operator">=</span> shuffledArray<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">;</span> i <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">;</span> i<span class="token operator">--</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">const</span> j <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">floor</span><span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token punctuation">(</span>i <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">[</span>shuffledArray<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">,</span> shuffledArray<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">[</span>shuffledArray<span class="token punctuation">[</span>j<span class="token punctuation">]</span><span class="token punctuation">,</span> shuffledArray<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span>
|
||||||
|
|
||||||
|
<span class="token keyword">return</span> shuffledArray<span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
|
||||||
|
<h3 id="post-njk">post.njk</h3>
|
||||||
|
<p>I used this in my post layout. <code>filterTagList</code> comes with the base blog by default, and removes the tags &quot;posts&quot; and &quot;all.&quot; <code>head</code> also comes with the base blog. <code>postlist.njk</code> is my modified-from-the-base-blog post layout.</p>
|
||||||
|
<pre class="language-html"><code class="language-html">{% set relevantTags = tags | filterTagList %}
|
||||||
|
{% set postlist = collections.posts | filterByTags(relevantTags) | excludeFromCollection(page.url) | randomize | head(2) %}
|
||||||
|
{% if postlist.length %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>section</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>related-posts<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h2</span><span class="token punctuation">></span></span>related posts<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h2</span><span class="token punctuation">></span></span>
|
||||||
|
{% include "postlist.njk" %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>section</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}</code></pre>
|
||||||
|
<p>and that sorts related posts.</p>
|
||||||
|
<hr>
|
||||||
|
<h2 id="featured-images">featured images</h2>
|
||||||
|
<blockquote>
|
||||||
|
<p>this one's been edited from the lessons site. I've learned a bit more about 11ty images and feel more comfortable with my build now.</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>images in 11ty use the <a href="https://www.11ty.dev/docs/plugins/image/#eleventy-transform" target="_blank" rel="external">Image Transform Plugin</a>. 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'm reproducing what I've got here for reference.</p>
|
||||||
|
<h3 id="file-structure">file structure</h3>
|
||||||
|
<pre><code>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
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="front-matter">front matter</h3>
|
||||||
|
<p>for any given post, my front matter references the image in this manner:</p>
|
||||||
|
<pre><code>---
|
||||||
|
image:
|
||||||
|
src: sample-0.jpg
|
||||||
|
alt: moss on a fencepost
|
||||||
|
---
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="image-html-transform">image HTML transform</h3>
|
||||||
|
<p>As mentioned, there's a plugin for images. If you started with the base blog, in <code>eleventy.config.js</code>, you'll probably find a chunk of code similar to this already in place:</p>
|
||||||
|
<pre class="language-js"><code class="language-js">eleventyConfig<span class="token punctuation">.</span><span class="token function">addPlugin</span><span class="token punctuation">(</span>eleventyImageTransformPlugin<span class="token punctuation">,</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token literal-property property">formats</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"auto"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||||
|
|
||||||
|
<span class="token literal-property property">widths</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">640</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">failOnError</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">htmlOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token literal-property property">imgAttributes</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token comment">// e.g. &lt;img loading decoding> assigned on the HTML tag will override these values.</span>
|
||||||
|
<span class="token literal-property property">loading</span><span class="token operator">:</span> <span class="token string">"lazy"</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">decoding</span><span class="token operator">:</span> <span class="token string">"async"</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token punctuation">}</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||||
|
|
||||||
|
<span class="token literal-property property">sharpOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token literal-property property">animated</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
|
||||||
|
<p>setting <code>formats</code> to &quot;auto&quot; helps - use whatever type of image you want, get that type out. The default settings that came with the Eleventy base blog didn't set a <code>width</code>, 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 <code>failOnError</code> to true for a little more feedback.</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>NOTE: It sure seems like Eleventy will fail your image processing if there's no alt text. While admirable, it would be nice if I could find any documentation for this!</p>
|
||||||
|
</blockquote>
|
||||||
|
<h3 id="passthrough-copy">passthrough copy</h3>
|
||||||
|
<p>as I worked through this, I thought I needed a passthrough copy for a while. You don't - just let the plugin do its thing.</p>
|
||||||
|
<h3 id="templating">templating</h3>
|
||||||
|
<p>I needed images to show up in 3 places:</p>
|
||||||
|
<ul>
|
||||||
|
<li>In the lists of posts on the home page, I wanted each post to show its featured image</li>
|
||||||
|
<li>In the &quot;related posts&quot; section on each individual post, I wanted each related post to show its featured image</li>
|
||||||
|
<li>And of course, I wanted the post to show its own featured image</li>
|
||||||
|
</ul>
|
||||||
|
<h3 id="home-page-and-related-posts">home page and related posts</h3>
|
||||||
|
<p>both of these sections use the same template, which in my setup is called <code>postlist.njk</code>. Within the relevant links, I added the following:</p>
|
||||||
|
<pre class="language-html"><code class="language-html">{% if post.data.image.src %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/img/{{ post.data.image.src }}<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ post.data.image.alt }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>missing-image<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}</code></pre>
|
||||||
|
<h3 id="post-body">post body</h3>
|
||||||
|
<p>the post body looks similar:</p>
|
||||||
|
<pre class="language-html"><code class="language-html">{% if image.src %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>featured-img<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/posts/img/{{ image.src }}<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ image.alt }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}</code></pre>
|
||||||
|
<p>together, that sets up featured images for posts.</p>
|
||||||
|
<hr>
|
||||||
|
<h2 id="pagination">pagination</h2>
|
||||||
|
<h3 id="simple-pagination">simple pagination</h3>
|
||||||
|
<p><a href="https://www.11ty.dev/docs/pagination/" target="_blank" rel="external">Post pagination in Eleventy is pretty straightforward</a>, mostly requiring some specific front matter.</p>
|
||||||
|
<p>The home page pagination I have set up here looks like the following (in <code>index.njk</code>):</p>
|
||||||
|
<pre><code>---
|
||||||
|
pagination:
|
||||||
|
data: collections.posts
|
||||||
|
size: 13
|
||||||
|
alias: posts
|
||||||
|
reverse: true
|
||||||
|
---
|
||||||
|
</code></pre>
|
||||||
|
<p>6 posts per page, paginate data from <code>collections.posts</code> which we'll call just <code>posts</code> for short, and do it in reverse (aka, most recent posts show first).</p>
|
||||||
|
<p><a href="https://www.11ty.dev/docs/pagination/nav" target="_blank" rel="external">You'll also likely want previous and next buttons</a>. I did. Here's what I have...</p>
|
||||||
|
<h4 id="pagination-njk">pagination.njk</h4>
|
||||||
|
<p>There's two components to this, the bigger one being this <code>pagination.njk</code> template. Look, I like my little icons, ok? It takes an <code>olderHref</code> and a <code>newerHref</code>, and optionally an <code>olderTitle</code> and <code>newerTitle</code>.</p>
|
||||||
|
<pre class="language-html"><code class="language-html">{% if olderHref or newerHref %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>nav</span> <span class="token attr-name">aria-label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ol</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>pagination {% if inPost %}post-pagination{% endif %}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% if olderHref %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>older<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ olderHref }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>i</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fa-solid fa-hand-point-left<span class="token punctuation">"</span></span> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>i</span><span class="token punctuation">></span></span>
|
||||||
|
{{ olderTitle or "older" }}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}
|
||||||
|
{% if newerHref %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>newer<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ newerHref }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{{ newerTitle or "newer" }}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>i</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fa-solid fa-hand-point-right<span class="token punctuation">"</span></span> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>i</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ol</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>nav</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}</code></pre>
|
||||||
|
<h4 id="calling-the-template">calling the template</h4>
|
||||||
|
<p>From <code>index.njk</code> we can <code>include &quot;pagination.njk&quot;</code>:</p>
|
||||||
|
<pre><code>{# idk why these are backwards either #}
|
||||||
|
{% set newerHref = pagination.href.previous %}
|
||||||
|
{% set olderHref = pagination.href.next %}
|
||||||
|
{% include &quot;pagination.njk&quot; %}
|
||||||
|
</code></pre>
|
||||||
|
<p>Yup. The order of previous vs. next is totally unintuitive to me, too.</p>
|
||||||
|
<h3 id="complex-pagination">complex pagination</h3>
|
||||||
|
<p>however, there's a catch. <a href="https://www.11ty.dev/docs/quicktips/tag-pages/" target="_blank" rel="external">Tag pages are <em>created</em> via pagination</a>! It's a lot harder to paginate those - you can't just use the front matter to set it up.</p>
|
||||||
|
<p>I untangled <a href="https://github.com/11ty/eleventy/issues/332#issuecomment-445236776" target="_blank" rel="external">this GitHub issue about double-layered pagination</a> and came to the following solution...</p>
|
||||||
|
<h4 id="eleventy-config-js">eleventy.config.js</h4>
|
||||||
|
<p>in <code>eleventy.config.js</code>:</p>
|
||||||
|
<pre class="language-js"><code class="language-js"><span class="token comment">// note that this uses the lodash.chunk method, so you’ll have to import that</span>
|
||||||
|
eleventyConfig<span class="token punctuation">.</span><span class="token function">addCollection</span><span class="token punctuation">(</span><span class="token string">"tagPagination"</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">collection</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token comment">// Get unique list of tags</span>
|
||||||
|
<span class="token keyword">let</span> tagSet <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Set</span><span class="token punctuation">(</span>collection<span class="token punctuation">.</span><span class="token function">getAllSorted</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">flatMap</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">post</span><span class="token punctuation">)</span> <span class="token operator">=></span> post<span class="token punctuation">.</span>data<span class="token punctuation">.</span>tags <span class="token operator">||</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
<span class="token comment">// Get each item that matches the tag</span>
|
||||||
|
<span class="token keyword">let</span> paginationSize <span class="token operator">=</span> <span class="token number">6</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token keyword">let</span> tagMap <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token keyword">let</span> tagArray <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span>tagSet<span class="token punctuation">]</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
<span class="token keyword">for</span><span class="token punctuation">(</span> <span class="token keyword">let</span> tagName <span class="token keyword">of</span> tagArray<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">let</span> tagItems <span class="token operator">=</span> collection<span class="token punctuation">.</span><span class="token function">getFilteredByTag</span><span class="token punctuation">(</span>tagName<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token keyword">let</span> pagedItems <span class="token operator">=</span> <span class="token function">chunk</span><span class="token punctuation">(</span>tagItems<span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> paginationSize<span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
|
||||||
|
<span class="token keyword">for</span><span class="token punctuation">(</span> <span class="token keyword">let</span> pageNumber <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span> max <span class="token operator">=</span> pagedItems<span class="token punctuation">.</span>length<span class="token punctuation">;</span> pageNumber <span class="token operator">&lt;</span> max<span class="token punctuation">;</span> pageNumber<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
tagMap<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
|
||||||
|
<span class="token literal-property property">tagName</span><span class="token operator">:</span> tagName<span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">pageNumber</span><span class="token operator">:</span> pageNumber<span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">pageSize</span><span class="token operator">:</span> pagedItems<span class="token punctuation">.</span>length<span class="token punctuation">,</span>
|
||||||
|
<span class="token literal-property property">pageData</span><span class="token operator">:</span> pagedItems<span class="token punctuation">[</span>pageNumber<span class="token punctuation">]</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span>
|
||||||
|
<span class="token punctuation">}</span>
|
||||||
|
|
||||||
|
<span class="token keyword">return</span> tagMap<span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
|
||||||
|
<h4 id="tag-pages-njk">tag-pages.njk</h4>
|
||||||
|
<p>in my <code>tag-pages.njk</code> file (or whatever you use to template out your tag pages):</p>
|
||||||
|
<pre class="language-html"><code class="language-html">---
|
||||||
|
pagination:
|
||||||
|
data: collections.tagPagination
|
||||||
|
size: 1
|
||||||
|
alias: tag
|
||||||
|
eleventyComputed:
|
||||||
|
permalink: /tags/{{ tag.tagName | slugify }}/% if tag.pageNumber %{{ tag.pageNumber + 1 }}/% endif %
|
||||||
|
title: "Posts tagged {{ tag.tagName }}"
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
---
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span><span class="token punctuation">></span></span>Posts tagged “{{ tag.tagName }}”<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span>
|
||||||
|
|
||||||
|
{% set postlist = tag.pageData %}
|
||||||
|
{% include "postlist.njk" %}
|
||||||
|
|
||||||
|
{# idk why these are backwards either #}
|
||||||
|
{% if tag.pageNumber > 0 %}
|
||||||
|
{% set newerHref = pagination.href.previous %}
|
||||||
|
{% endif %}
|
||||||
|
{% if tag.pageNumber &lt; tag.pageSize - 1 %}
|
||||||
|
{% set olderHref = pagination.href.next %}
|
||||||
|
{% endif %}
|
||||||
|
{% include "pagination.njk" %}</code></pre>
|
||||||
|
<p>note the pagination checking <code>tag.pageNumber</code> against <code>tag.PageSize</code> - the <a href="https://github.com/11ty/eleventy/issues/332#issuecomment-445236776" target="_blank" rel="external">original suggested solution</a> in the GitHub post creates an issue where the pagination loops through <em>all</em> of the tag pages bit-by-bit. This sorts that - hat tip to <a href="https://github.com/11ty/eleventy/issues/332#issuecomment-1248185406" target="_blank" rel="external">TheReyzar who mentioned the issue and showed part of their solution</a>.</p>
|
||||||
|
<h4 id="filters-js-again">filters.js (again)</h4>
|
||||||
|
<p>finally, in my <code>filters.js</code> file, I add the <code>tagPagination</code> tag to the tags that get filtered using <code>filterTagList</code>:</p>
|
||||||
|
<pre class="language-js"><code class="language-js">eleventyConfig<span class="token punctuation">.</span><span class="token function">addFilter</span><span class="token punctuation">(</span><span class="token string">"filterTagList"</span><span class="token punctuation">,</span> <span class="token keyword">function</span> <span class="token function">filterTagList</span><span class="token punctuation">(</span><span class="token parameter">tags</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token keyword">return</span> <span class="token punctuation">(</span>tags <span class="token operator">||</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span><span class="token parameter">tag</span> <span class="token operator">=></span> <span class="token punctuation">[</span><span class="token string">"all"</span><span class="token punctuation">,</span> <span class="token string">"posts"</span><span class="token punctuation">,</span> <span class="token string">"tagPagination"</span><span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>tag<span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>
|
||||||
|
<hr>
|
||||||
|
<h2 id="tag-image-preview">tag image preview</h2>
|
||||||
|
<p>today I tackled making the tag page more visually interesting.</p>
|
||||||
|
<h3 id="preview-the-first-featured-image">preview the first featured image</h3>
|
||||||
|
<p>first, I worked on previewing the first featured image. The focus here is on digging into <code>collections[tag]</code> (reversed!) to get to the data of the first post.</p>
|
||||||
|
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>taglist<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% for tag in collections | getKeys | filterTagList | sortAlphabetically %}
|
||||||
|
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ tagUrl }}<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>taglist-link<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% set tagRecent = collections[tag] | reverse %}
|
||||||
|
{% if tagRecent[0].data.image.src %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/posts/img/{{ tagRecent[0].data.image.src }}<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ tagRecent[0].data.image.alt }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>missing-image<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post-tag<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{ tag }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
|
||||||
|
{% set numPosts = collections[tag].length %}
|
||||||
|
({{ numPosts }} post{% if numPosts > 1 %}s{% endif %})
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
{% endfor %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span></code></pre>
|
||||||
|
<h3 id="preview-a-collage-of-recent-featured-images">preview a collage of recent featured images</h3>
|
||||||
|
<p>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't four to show).</p>
|
||||||
|
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>ul</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>taglist<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% for tag in collections | getKeys | filterTagList | sortAlphabetically %}
|
||||||
|
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ tagUrl }}<span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>taglist-link<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>tag-imgs<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% set tagRecent = collections[tag] | reverse %}
|
||||||
|
{% for i in range(0, 4) %}
|
||||||
|
{% if tagRecent[i].data.image.src %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/posts/img/{{ tagRecent[i].data.image.src }}<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>{{ tagRecent[i].data.image.alt }}<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
|
||||||
|
{% else %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>div</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>missing-image<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>div</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post-tag<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>{{ tag }}<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
|
||||||
|
{% set numPosts = collections[tag].length %}
|
||||||
|
({{ numPosts }} post{% if numPosts > 1 %}s{% endif %})
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span>
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>li</span><span class="token punctuation">></span></span>
|
||||||
|
{% endfor %}
|
||||||
|
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>ul</span><span class="token punctuation">></span></span></code></pre>
|
||||||
|
<p>with a bit of <code>display: grid</code>, we're good to go, right?</p>
|
||||||
|
<h4 id="handling-multiple-aspect-ratios">handling multiple aspect ratios</h4>
|
||||||
|
<p>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's throw a wrench in that and introduce a portrait-mode photo.</p>
|
||||||
|
<p>thankfully, the CSS property <code>aspect-ratio</code> makes this pretty straightforward, and <code>object-fit</code> finishes the job.</p>
|
||||||
|
<pre class="language-css"><code class="language-css"><span class="token selector">.taglist-link img</span> <span class="token punctuation">{</span>
|
||||||
|
<span class="token property">aspect-ratio</span><span class="token punctuation">:</span> 3 / 2<span class="token punctuation">;</span>
|
||||||
|
<span class="token property">object-fit</span><span class="token punctuation">:</span> cover<span class="token punctuation">;</span>
|
||||||
|
<span class="token punctuation">}</span></code></pre>
|
||||||
|
<p>(I also set the <code>missing-img</code> <code>&lt;div&gt;</code>s to have the same aspect ratio.)</p>
|
||||||
|
<hr>
|
||||||
|
<p>There's the good stuff from <a href="https://inherentlee.codeberg.page/lessons/" target="_blank" rel="external">11ty Lessons</a>. Hope you enjoyed.</p>
|
||||||
|
</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>
|
<entry>
|
||||||
<title>screen reader optimizations</title>
|
<title>screen reader optimizations</title>
|
||||||
<link href="https://leecat.art/screen-reader-optimizations/" />
|
<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>
|
<id>https://leecat.art/screen-reader-optimizations/</id>
|
||||||
<content type="html"><h2 id="context">context</h2>
|
<content type="html"><h2 id="context">context</h2>
|
||||||
<p>recently, I've been working on a <a href="https://inherentlee.codeberg.page/spoonfairies/" target="_blank" rel="external">website for a project called spoonfairies</a>. On the providers page, we list a series of names along with their pronouns, location, and services offered. Visually, it looks like this:</p>
|
<p>recently, I've been working on a <a href="https://inherentlee.codeberg.page/spoonfairies/" target="_blank" rel="external">website for a project called spoonfairies</a>. On the providers page, we list a series of names along with their pronouns, location, and services offered. Visually, it looks like this:</p>
|
||||||
@ -70,13 +371,6 @@
|
|||||||
<p>now, after more screen reader testing, it reads out smoothly. The <code>aria-label</code> 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. <em>And</em> I've got my fancy styling. Sweet.</p>
|
<p>now, after more screen reader testing, it reads out smoothly. The <code>aria-label</code> 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. <em>And</em> I've got my fancy styling. Sweet.</p>
|
||||||
</content>
|
</content>
|
||||||
</entry>
|
</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>
|
<entry>
|
||||||
<title>charlie the alpaca handspun</title>
|
<title>charlie the alpaca handspun</title>
|
||||||
<link href="https://leecat.art/charlie-the-alpaca-handspun/" />
|
<link href="https://leecat.art/charlie-the-alpaca-handspun/" />
|
||||||
@ -131,14 +425,6 @@
|
|||||||
<updated>2026-01-18T00:00:00Z</updated>
|
<updated>2026-01-18T00:00:00Z</updated>
|
||||||
<id>https://leecat.art/dyeing-fiber/</id>
|
<id>https://leecat.art/dyeing-fiber/</id>
|
||||||
<content type="html"><p>hand-dyed with acid dyes</p>
|
<content type="html"><p>hand-dyed with acid dyes</p>
|
||||||
</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"><p>Fiber from <a href="https://www.etsy.com/shop/JakiraFarms" target="_blank" rel="external">Jakira Farms</a> in Coral Reef colorway. 100% merino.</p>
|
|
||||||
</content>
|
</content>
|
||||||
</entry>
|
</entry>
|
||||||
</feed>
|
</feed>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1267,6 +1267,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1261,6 +1261,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1274,6 +1274,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1275,6 +1275,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1262,6 +1262,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1277,6 +1277,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1278,6 +1278,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1209,6 +1209,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1213,6 +1213,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1091,6 +1091,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1223,6 +1223,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1205,6 +1205,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1213,6 +1213,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1207,6 +1207,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1211,6 +1211,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1255,6 +1255,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1237,6 +1237,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1239,6 +1239,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1197,6 +1197,6 @@ footer a:focus-visible {
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1279,6 +1279,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1451,6 +1451,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1501,6 +1501,6 @@ This may also be expanded to a multi-step approach, with questions covering some
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1285,6 +1285,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
@ -1289,6 +1289,6 @@ export { HeadingAnchors }</script>
|
|||||||
</footer>
|
</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></body>
|
</body></body>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user