Compare commits

...

15 Commits

Author SHA1 Message Date
664e163baf content updates 2026-03-16 22:38:32 -05:00
546438b830 content updates 2026-03-16 22:38:24 -05:00
a5316f1a69 Search and stuff 2026-03-11 18:58:42 -05:00
4665a00bc7 Content updates 2026-03-05 15:54:25 -06:00
58c2b7ed6e update /wish 2026-03-05 15:02:30 -06:00
53a9094b6c New posts 2026-03-05 15:02:22 -06:00
697d85e74e Make comment input resizeable 2026-02-26 10:01:35 -06:00
8839b6c867 Move ISSO style to head 2026-02-23 17:07:00 -06:00
da83e0de6f Fix isso button width issue 2026-02-23 16:56:48 -06:00
910c0c5515 Update links 2026-02-23 16:56:37 -06:00
2c269201cd Add badge data and images 2026-02-23 16:56:21 -06:00
6025b3083a New posts 2026-02-23 16:55:57 -06:00
5d606e2fb6 Update anti-AI measures 2026-02-23 16:55:34 -06:00
ef39b82c5e Add tag 2026-02-23 16:55:23 -06:00
6d0542e72b Update project notes 2026-02-23 16:55:15 -06:00
128 changed files with 1393 additions and 353 deletions

View File

@@ -18,3 +18,7 @@ Quiz Ideas:
Font Axes, Manrope: Font Axes, Manrope:
-------------------- --------------------
wght: 200-900 (Weight) wght: 200-900 (Weight)
Anti-AI Measures:
--------------------
https://baccyflap.com/res/robots/

259
_data/badges.js Normal file
View File

@@ -0,0 +1,259 @@
export default {
imgBaseUrl: "/img/badges/",
badges: [
{
altText: "Built with Eleventy.",
imageURL: "built-with-eleventy.gif",
linkURL: "https://www.11ty.dev/",
},
{
altText: "Anything but Chrome.",
imageURL: "anythingbut.gif",
},
{
altText: "Mastodon.",
imageURL: "mastodon.png",
linkURL: "https://lounge.town/@nathanu",
},
{
altText: "Powered by Arch BTW.",
imageURL: "powered-by-arch-btw.png",
},
{
altText: "Fuck Reform UK.",
imageURL: "freform.gif",
},
{
altText: "Hyenas Now.",
imageURL: "hyenas-now.gif",
},
{
altText: "Matrix.",
imageURL: "matrix.2338528959.png",
linkURL: "https://matrix.to/#/@nathan:upchur.ch",
},
{
altText: "Written by a human.",
imageURL: "written-by-a-human.gif",
linkURL: "/ai/",
},
{
altText: "I like computer.",
imageURL: "3computer.jpg",
},
{
altText: "Up all night.",
imageURL: "anibanner.gif",
},
{
altText: "800 x 600 Hi-Colors.",
imageURL: "61.gif",
},
{
altText: "ACAB",
imageURL: "acab.gif",
},
{
altText: "Get Anarchy Now!",
imageURL: "anarchy-now.gif",
},
{
altText: "No Nazi, No Fascism, No Racism.",
imageURL: "antinazi.gif",
},
{
altText: "This is an Anti-NFT site.",
imageURL: "antinft.gif",
},
{
altText: "Any browser you like.",
imageURL: "any_browser.1317991118.png",
},
{
altText: "Gifypet",
imageURL: "badge.gif",
linkURL: "https://gifypet.neocities.org/",
},
{
altText: "Pansexual",
imageURL: "badge_pansexual.gif",
},
{
altText: "Banana",
imageURL: "banana.gif",
},
{
altText: "Free Palestine Now!!!",
imageURL: "bufreepalestine.gif",
},
{
altText: "A meowing cartoon cat with 'Devils' written beneath it.",
imageURL: "button-devils.gif",
},
{
altText: "NFT? No fucking thanks.",
imageURL: "button110.gif",
},
{
altText: "Game boy color logo.",
imageURL: "color.gif",
},
{
altText: "Copy that floppy!",
imageURL: "copy_floppy.gif",
},
{
altText: "Made with cascading style sheets.",
imageURL: "css3.gif",
},
{
altText: "Defective by design. Eliminate DRM now!",
imageURL: "dbd.2333814563.webp",
},
{
altText: "Don't feed the AI!",
imageURL: "dontfeedai.gif",
},
{
altText: "A seal with the word dream appearing beside it.",
imageURL: "dream_coloured.gif",
},
{
altText: "Eat the rich.",
imageURL: "eatdarich.jpg",
},
{
altText: "Join the Fediverse.",
imageURL: "fediverse.gif",
linkURL: "https://jointhefediverse.net",
},
{
altText: "Take back the web. Firefox logo.",
imageURL: "fftake.gif",
},
{
altText: "Firefox",
imageURL: "firefox3.gif",
},
{
altText: "Tested on Firefox.",
imageURL: "firefox4.gif",
},
{
altText: "Game Boy logo",
imageURL: "gb.gif",
},
{
altText: "Gitea",
imageURL: "gitea.gif",
},
{
altText: "Made on GNU/Linux.",
imageURL: "gnu-linux.gif",
},
{
altText:
"Fight for open web standards. Fight for online privacy. Fight against monopolistic practices. Stand up to Google!",
imageURL: "google_stand.gif",
},
{
altText: "Got HTML?",
imageURL: "got_html.gif",
},
{
altText: "GLPV3",
imageURL: "gplv3.gif",
},
{
altText: "There are no bad hair days on the internet.",
imageURL: "hair.gif",
},
{
altText: "I hate Macintosh.",
imageURL: "hatemac_b.gif",
},
{
altText: "Hyenas now!",
imageURL: "internetarchive.2540748731.png",
},
{
altText: "Jellyfin",
imageURL: "jellyfin.gif",
},
{
altText: "KDE now!",
imageURL: "knbutton.gif",
},
{
altText: "Linux now! 2.0",
imageURL: "linuxnow2.gif",
},
{
altText: "Stop Microsoft!",
imageURL: "microsoft_stop.gif",
},
{
altText: "Midi",
imageURL: "midinote.gif",
},
{
altText: "Mobile friendly.",
imageURL: "mobilefriendly.1035495686.png",
},
{
altText: "Superstition: No!",
imageURL: "nobelief.gif",
},
{
altText: "Campaign against frames!",
imageURL: "noframes3.gif",
},
{
altText: "From the river to the sea: free Palestine.",
imageURL: "palestine.gif",
},
{
altText: "Powered by Penguins.",
imageURL: "penguins.gif",
},
{
altText: "Status Cafe: Your friends updates.",
imageURL: "statuscafe.gif",
linkURL: "https://status.cafe/",
},
{
altText: "Go straight to hell!!!",
imageURL: "tohell.gif",
},
{
altText: "Tor logo",
imageURL: "tor.gif",
},
{
altText: "Trans rights now!",
imageURL: "transnow2.gif",
},
{
altText: "uBlock Origin Now!",
imageURL: "ublock-origin.3786077848.webp",
},
{
altText: "Under construction.",
imageURL: "undercon2.gif",
},
{
altText: "View and sign my guestbook. Click here.",
imageURL: "viewbook.gif",
linkURL: "/guestbook/",
},
{
altText: "wilby.me search",
imageURL: "wiby.1897295341.png",
linkURL: "https://wiby.me/",
},
{
altText: "I survived Y2K.",
imageURL: "y2ks.gif",
},
],
};

View File

@@ -56,6 +56,11 @@ export default {
linkDisplay: "Links", linkDisplay: "Links",
linkURL: "/links/", linkURL: "/links/",
}, },
{
iconURL: "/img/icons/breeze/amarok_cart_view.svg",
linkDisplay: "Not Amazon",
linkURL: "/not-amazon/",
},
{ {
iconURL: "/img/burn.svg", iconURL: "/img/burn.svg",
linkDisplay: "Now Burning", linkDisplay: "Now Burning",
@@ -66,6 +71,11 @@ export default {
linkDisplay: "Quizzes", linkDisplay: "Quizzes",
linkURL: "/quizzes/", linkURL: "/quizzes/",
}, },
{
iconURL: "/img/icons/breeze/file-search-symbolic.svg",
linkDisplay: "Search",
linkURL: "/search/",
},
{ {
iconURL: "/img/icons/breeze/map-globe.svg", iconURL: "/img/icons/breeze/map-globe.svg",
linkDisplay: "Sitemap", linkDisplay: "Sitemap",

View File

@@ -10,7 +10,8 @@
</span> </span>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<a href="/sitemap/">Sitemap</a> <span class="webring"><a href="/search/">Search</a></span>
<span class="webring"><a href="/sitemap/">Sitemap</a></span>
</p> </p>
<div id="buttonsAndStuffContainer"> <div id="buttonsAndStuffContainer">
<a href="https://notbyai.fyi/"> <a href="https://notbyai.fyi/">

View File

@@ -3,76 +3,3 @@
<section id="isso-thread"> <section id="isso-thread">
<noscript>Javascript needs to be activated to view comments.</noscript> <noscript>Javascript needs to be activated to view comments.</noscript>
</section> </section>
<style>
h4.isso-thread-heading {
color: var(--text-color) !important;
font-size: var(--step-2) !important;
font-variation-settings: "opsz" 50, "wght" 350, "SOFT" 20, "WONK" 1 !important;
line-height: calc(var(--step-2) * 0.25 + var(--step-2)) !important;
margin-bottom: var(--space-m) !important;
margin-top: var(--space-m) !important;
padding-bottom: 0 !important;
padding-top: 0 !important;
text-wrap: pretty;
}
.isso-text > h1, .isso-text > h2 {
padding: 0 0 0 0 !important;
}
.isso-form-wrapper > .isso-auth-section > .isso-post-action > input {
background-color: var(--contrast-color) !important;
border: none !important;
border-radius: var(--border-radius) !important;
color: var(--background-color) !important;
font-family: var(--font-family-ui) !important;
font-size: var(--step--2) !important;
font-variation-settings: var(--font-variation-ui) !important;
height: var(--space-m-l) !important;
letter-spacing: var(--ui-letter-spacing) !important;
margin: var(--space-xs) 0 0 0 !important;
padding: 0 var(--space-xs) !important;
text-transform: uppercase !important;
transition: var(--transition-normal) !important;
white-space: nowrap !important;
}
p.isso-input-wrapper {
display: block !important;
max-width: 100% !important;
& > label, & > input {
font-family: var(--font-family-ui) !important;
font-size: var(--step--2) !important;
font-variation-settings: var(--font-variation-ui) !important;
}
& input {
margin-block: inherit !important;
}
}
.isso-post-action {
display: inline-block !important;
float: inherit !important;
margin: 0 var(--space-2xs) 0 0 !important;
max-width: var(--space-3xl) !important;
&::after {
content: "" !important;
}
}
textarea.isso-textarea {
background-color: var(--background-color) !important;
border: var(--border-details) !important;
border-color: var(--contrast-color) !important;
border-radius: var(--border-radius) !important;
color: var(--text-color) !important;
font-family: var(--font-family) !important;
font-size: var(--step-0) !important;
font-variation-settings: var(--font-variation-default) !important;
margin-block: 0 1lh !important;
min-height: var(--space-l) !important;
padding: 0 var(--space-3xs) !important;
width: 100%;
}
</style>

78
_includes/issoStyle.njk Normal file
View File

@@ -0,0 +1,78 @@
<!-- ISSO style -->
<style>
.isso-comment-header {
height: var(--space-2xl) !important;
}
h4.isso-thread-heading {
color: var(--text-color) !important;
font-size: var(--step-2) !important;
font-variation-settings: "opsz" 50, "wght" 350, "SOFT" 20, "WONK" 1 !important;
line-height: calc(var(--step-2) * 0.25 + var(--step-2)) !important;
margin-bottom: var(--space-m) !important;
margin-top: var(--space-m) !important;
padding-bottom: 0 !important;
padding-top: 0 !important;
text-wrap: pretty !important;
}
.isso-text > h1, .isso-text > h2 {
padding: 0 0 0 0 !important;
}
.isso-form-wrapper > .isso-auth-section > .isso-post-action > input {
background-color: var(--contrast-color) !important;
border: none !important;
border-radius: var(--border-radius) !important;
color: var(--background-color) !important;
font-family: var(--font-family-ui) !important;
font-size: var(--step--2) !important;
font-variation-settings: var(--font-variation-ui) !important;
height: var(--space-m-l) !important;
letter-spacing: var(--ui-letter-spacing) !important;
margin: var(--space-xs) 0 0 0 !important;
padding: 0 var(--space-xs) !important;
text-transform: uppercase !important;
transition: var(--transition-normal) !important;
white-space: nowrap !important;
}
p.isso-input-wrapper {
display: block !important;
max-width: 100% !important;
& > label, & > input {
font-family: var(--font-family-ui) !important;
font-size: var(--step--2) !important;
font-variation-settings: var(--font-variation-ui) !important;
}
& input {
margin-block: inherit !important;
}
}
.isso-post-action {
display: inline-block !important;
float: inherit !important;
margin: 0 var(--space-2xs) 0 0 !important;
&::after {
content: "" !important;
}
}
textarea.isso-textarea {
background-color: var(--background-color) !important;
border: var(--border-details) !important;
border-color: var(--contrast-color) !important;
border-radius: var(--border-radius) !important;
color: var(--text-color) !important;
font-family: var(--font-family) !important;
font-size: var(--step-0) !important;
font-variation-settings: var(--font-variation-default) !important;
margin-block: 0 1lh !important;
min-height: var(--space-l) !important;
padding: 0 var(--space-3xs) !important;
resize: vertical !important;
width: 100%;
}
</style>
<!-- /ISSO style -->

View File

@@ -5,6 +5,10 @@
<link rel="stylesheet" type="text/css" href="/css/index.css" /> <link rel="stylesheet" type="text/css" href="/css/index.css" />
<link rel="stylesheet" type="text/css" href="/css/webfonts/webfonts.css" /> <link rel="stylesheet" type="text/css" href="/css/webfonts/webfonts.css" />
<link rel="stylesheet" type="text/css" href="/css/code.css" /> <link rel="stylesheet" type="text/css" href="/css/code.css" />
{% if search %}
<link rel="stylesheet" href="/pagefind/pagefind-ui.css">
<link rel="stylesheet" type="text/css" href="/css/search.css" />
{% endif %}
<!-- Mochi webmentions --> <!-- Mochi webmentions -->
<link rel="webmention" href="https://mochi-webmentions.meadow.cafe/webmention/mochi@upchur.ch/1/receive" /> <link rel="webmention" href="https://mochi-webmentions.meadow.cafe/webmention/mochi@upchur.ch/1/receive" />
<!-- Indieweb profile links --> <!-- Indieweb profile links -->
@@ -12,6 +16,7 @@
<!-- /Indieweb profile links --> <!-- /Indieweb profile links -->
{% include "structuredData.njk" %} {% include "structuredData.njk" %}
{% include "analytics.html" %} {% include "analytics.html" %}
{% include "issoStyle.njk" %}
{% include "weatherStyle.njk" %} {% include "weatherStyle.njk" %}
{% include "wooModeStyle.njk" %} {% include "wooModeStyle.njk" %}
</head> </head>

View File

@@ -1,7 +1,7 @@
--- ---
layout: layouts/linksPage.njk layout: layouts/linksPage.njk
--- ---
<div class="links-container h-card"> <div class="links-container h-card" data-pagefind-body>
<img class="profilePic u-photo" src="{{ metadata.author.profilePic }}"> <img class="profilePic u-photo" src="{{ metadata.author.profilePic }}">
<h1 class="socialTitle p-name">Nathan Upchurch</h1> <h1 class="socialTitle p-name">Nathan Upchurch</h1>
<p class="page-block nodropcap">Beside what I do to earn a crust, among other things, Im an incense maker and enthusiast, a classical trombonist, vegan cook, writer, mediocre photographer, and a fan of, advocate for, and occasional contributor to free and open source software. Heres where you can find me on the internet:</p> <p class="page-block nodropcap">Beside what I do to earn a crust, among other things, Im an incense maker and enthusiast, a classical trombonist, vegan cook, writer, mediocre photographer, and a fan of, advocate for, and occasional contributor to free and open source software. Heres where you can find me on the internet:</p>

View File

@@ -1,8 +1,8 @@
--- ---
layout: layouts/base.njk layout: layouts/base.njk
--- ---
<article class="post"> <article class="post" data-pagefind-body>
<h1>{{ title | safe }}</h1> <h1>{{ title | markdownify | safe}}</h1>
{% include "mastodonComments.njk" %} {% include "mastodonComments.njk" %}
{% if not hideMetadata %} {% if not hideMetadata %}
<div class="post-metadata"> <div class="post-metadata">

View File

@@ -17,7 +17,7 @@
<a href="{{ post.url }}" class="postlist-link"> <a href="{{ post.url }}" class="postlist-link">
{% endif %} {% endif %}
<h3> <h3>
{% if post.data.title %}{{ post.data.title | safe }}{% else %}?{% endif %} {% if post.data.title %}{{ post.data.title | markdownify | safe }}{% else %}?{% endif %}
</h3> </h3>
{% if not postListTypeMicroblog %} {% if not postListTypeMicroblog %}
</a> </a>

View File

@@ -6,7 +6,7 @@ structuredData: none
# Colophon # Colophon
## What I used to build this website ## What I used to build this website
I built this website in plain-old HTML, CSS, and a touch of vanilla JavaScript using [Zach Leatherman](https://www.zachleat.com/)'s [11ty static site generator](https://www.11ty.dev/) and Mozilla's [Nunjucks templating language](https://mozilla.github.io/nunjucks/). I used free and open source variable typefaces [Fraunces](https://fraunces.undercase.xyz/), designed by Phaedra Charles and Flavia Zimbardi[^1], and [Manrope](https://www.gent.media/manrope), designed by Mikhail Sharanda[^2]. I built this website in plain-old HTML, CSS, and a touch of vanilla JavaScript using [Zach Leatherman](https://www.zachleat.com/)'s [11ty static site generator](https://www.11ty.dev/) (now called, *sigh*, Build Awesome) and Mozilla's [Nunjucks templating language](https://mozilla.github.io/nunjucks/). I used free and open source variable typefaces [Fraunces](https://fraunces.undercase.xyz/), designed by Phaedra Charles and Flavia Zimbardi[^1], and [Manrope](https://www.gent.media/manrope), designed by Mikhail Sharanda[^2]. [Search](/search) powered by [Pagefind](https://pagefind.app/). [Guestbook](/guestbook) powered by [Guestbooks](https://guestbooks.meadow.cafe/).
The handy calculators on [utopia.fyi](https://utopia.fyi), created by James Gilyead and Trys Mudford, helped me implement fluid typography and spacing, which has allowed me to make this website responsive without using a single media query. The future is upon us. The handy calculators on [utopia.fyi](https://utopia.fyi), created by James Gilyead and Trys Mudford, helped me implement fluid typography and spacing, which has allowed me to make this website responsive without using a single media query. The future is upon us.

View File

@@ -5,7 +5,7 @@ eleventyNavigation:
key: About key: About
order: 2 order: 2
--- ---
<article> <article data-pagefind-body>
<h1>About me and my&nbsp;website.</h1> <h1>About me and my&nbsp;website.</h1>
<p class="page-block nodropcap">Im a prolific vegan home cook, classical trombonist, incense maker, a <abbr title="Free/Libre Open Source Software">FLOSS</abbr> enthusiast, designer, programmer, music producer, print lover, and human with too many interests and too little time.<br><br> <p class="page-block nodropcap">Im a prolific vegan home cook, classical trombonist, incense maker, a <abbr title="Free/Libre Open Source Software">FLOSS</abbr> enthusiast, designer, programmer, music producer, print lover, and human with too many interests and too little time.<br><br>
This is my little corner of the internet where I talk about whatever I like without worrying about maintaining a personal brand, or constraining my writing to topics which might help advance my career or establish me as a thought leader. Im here to express myself and have fun writing about topics I enjoy.<br><br> This is my little corner of the internet where I talk about whatever I like without worrying about maintaining a personal brand, or constraining my writing to topics which might help advance my career or establish me as a thought leader. Im here to express myself and have fun writing about topics I enjoy.<br><br>

View File

@@ -4,6 +4,8 @@ title: Nathan Upchurch | AI
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# AI # AI
Certified generative AI hater here. This website and all content herein is 100% guaranteed AI slop free: code, prose images, music, et cetera. Certified generative AI hater here. This website and all content herein is 100% guaranteed AI slop free: code, prose images, music, et cetera.
@@ -11,3 +13,5 @@ Certified generative AI hater here. This website and all content herein is 100%
## AI Permissions ## AI Permissions
I do my utmost to ensure that my work is not hoovered wholesale and regurgitated by AI products by including an [ai.txt file](/ai.txt) and disallowing known crawlers in my [robots.txt file](/robots.txt), but just in case it will ever become meaningful in any legal sense, I'd like to make it clear here that I do not grant permission for any content on this website to be used as training data for any AI project, or for any portion of this website to be scraped by bots associated with AI projects. I do my utmost to ensure that my work is not hoovered wholesale and regurgitated by AI products by including an [ai.txt file](/ai.txt) and disallowing known crawlers in my [robots.txt file](/robots.txt), but just in case it will ever become meaningful in any legal sense, I'd like to make it clear here that I do not grant permission for any content on this website to be used as training data for any AI project, or for any portion of this website to be scraped by bots associated with AI projects.
</article>

View File

@@ -3,5 +3,8 @@ layout: layouts/base.njk
title: Nathan Upchurch | Blank title: Nathan Upchurch | Blank
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
This page was intentionally left blank. This page was intentionally left blank.
</article>

View File

@@ -4,6 +4,7 @@ description: Answering a lot of questions.
date: 2026-02-05T00:00:00.000Z date: 2026-02-05T00:00:00.000Z
tags: tags:
- Questionnaire - Questionnaire
- Web Development
synopsis: Answering a lot of questions. synopsis: Answering a lot of questions.
mastodon_id: '116021932929019975' mastodon_id: '116021932929019975'
--- ---

View File

@@ -0,0 +1,111 @@
---
title: "Eleventy Becomes, *Sigh*, Build Awesome"
description: "Sustainability? Enshittification? I have some feelings about this."
date: 2026-03-11
tags:
- Eleventy
- Enshittification
- Web Development
synopsis: "Sustainability? Enshittification? I have some feelings about this."
imageURL: /img/eleventy-becomes-sigh-build-awesome/eleventy-logo.png
imageAlt: The old Eleventy logo.
mastodon_id: "116213694439138520"
---
In case you haven't heard, Eleventy, the excellent static site generator that I
use for this very website has been acquired by Font Awesome. As a result, it
has been renamed, *sigh*,
[Build Awesome](https://www.11ty.dev/blog/build-awesome/). After seeing what
happened to [Shoelace](https://shoelace.style/), I'm apprehensive
and very much not looking forward to seeing what features get locked behind a
paywall. But beside the enshittification likely to follow, I thought we'd
stopped appending "awesome" to everything at roughly the same time bacon memes,
curly moustaches, and
[stomp-clap music](https://knowyourmeme.com/memes/stomp-clap-hey-music) went
out of style. It seems like
[I'm not the only one](https://www.allaboutken.com/posts/20260305-digesting-eleventy-becomes-build-awesome/)
who feels this way either.
While disappointed with this state of affairs, I'm not terribly surprised.
Beyond the matter of funding,
[as W. Evan Sheehan of The Darth Mall put it](https://darthmall.net/notes/2026/eleventy-build-awesome/):
> …the vibe of open source in the JavaScript community is a little bit different than what I think of as the broader open source movement. Open source JavaScript projects often feel a little more tied to corporations than Linux, or Python, or NeoVim.
I wholeheartedly agree. There's
[a big difference](https://www.gnu.org/philosophy/open-source-misses-the-point.en.html)
in philosophy between "free software" and "open source," and many JavaScript
projects seem to be firmly in the latter camp.
The choice of the MIT license for Eleventy in the first place speaks
volumes—it's antithetical to the free software movement. The MIT license allows
corporations to snatch up free and open source software, insert whatever
malicious functionality they please, lock down the source code, and abuse the
users they extort with their rent-seeking pricing schemes. On the other hand,
code licensed under a strong copyleft license such as the GPL ensures that
software always remains free (as in speech). Under a strong copyleft license,
anyone can use the software for any purpose. They may study, change, improve,
and redistribute it. But unlike permissive licenses such as the MIT license,
developers may *not* strip these rights from users at any point.
The goal of the free software movement is to create a
[commons](https://en.wikipedia.org/wiki/Commons) of software that anyone is
free to use, study, redistribute, and improve so that abusive software ceases
to be competitive. In terms of how MIT licensed software helps this cause, it's
a bit like putting a soldier on the battlefield with no armor. They may do some
damage, but they're a cinch to eliminate from the field. At this point, I see
MIT licensing as a red flag on all but the very few projects where it makes
sense (such as programming languages). When you decide to rely on MIT-licensed
software for your day to day activities, you never know when it will be
enshittified, put behind a paywall, or
[EEE](https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish)'d out of
existence.
I'm not saying that these things are going to happen to what we knew and loved
as Eleventy. Who knows what the future may bring. But I am saying that this
move is certainly not in the spirit of Free / Libre and Open Source Software. I
fear that the age-old pattern
[that befell Standard Notes](/blog/underrated-apps-qownnotes/) is going to
happen once again here: first attractive new features appear behind a paywall,
then old features you relied on get
[put behind a paywall](https://www.reddit.com/r/StandardNotes/comments/strgh2/very_confused_about_selfhosting_and_extensions/), using the software without paying is slowly made increasingly difficult,
and, before you know it, they
[pull the ol' switcheroo](https://www.reddit.com/r/StandardNotes/comments/16wkrau/note_version_316725_is_the_last_one_to_be_free_or/)
on the license (even if they revert from embarrassment later).
At the same time, despite my misgivings, I'm happy that
[Zach Leatherman](https://www.zachleat.com/) is (I assume) going to be properly
paid to continue his work on the project. It shouldn't be so damned hard to
make a living while performing a public good. Zach seemed pretty happy about
all of this during his appearance on, *sigh*,
[Podcast Awesome](https://www.youtube.com/watch?v=QnnU_iguZ4I). He strikes me
as someone who really cares about his work, and seems a lovely man, always
willing to jump in help someone even when the problem is between the chair and
the keyboard (ask me how I know). Zach deserves, at minimum, to be paid a
decent salary for his contribution to the world, and I'm thrilled that it seems
he's going to get at least that.
Now I'm tempted to turn this into a screed on funding for FLOSS projects, but
better informed people than I have written plenty of those already, so I'll
leave it at this—the fact that NASA, Cern, Google, Microsoft, Mozilla, Ubuntu,
JetBrains, CloudCannon, Netlify, Cloudflare, Shopify, MIT, Stanford, the
governments of France, the UK, and the USA, Orange, Red Hat, Just Eat,
[and others](https://www.11ty.dev/#why-should-you-use-eleventy) didn't manage
to muster between them
[a piddling $6,000 per month](https://www.zachleat.com/web/independent-sustainable-11ty/#asking-for-help)
to pay the developer of a tool they use to publish their websites is *disgusting*. We might have avoided this situation if they had.
I developed something like a brand loyalty to Eleventy. It's a scrappy project
from a talented developer who has managed to keep it alive and well for eight
years. The project has become widely used because *it's excellent*: flexible,
powerful, fast, and easy to use for web developers who are used to working with
JavaScript. I'm sad to see the name go, along with the red balloon, and that
scruffy possum. The [clean, middle-class replacement](https://github.com/11ty/11ty-website/blob/main/src/img/mascots/awesome-possum-balloon-smile-sm.svg) with its stupid *clothing*
and *fancy green balloon* [^1] can take a hike—I can't believe they've
gentrified the damn mascot!
[![Grumpy, one of Eleventy's mascot possums suspended from a red balloon in a field of stars.](/img/eleventy-becomes-sigh-build-awesome/grumpy_among_the_stars.webp "They say Grumpy floats among the stars now.")](/img/eleventy-becomes-sigh-build-awesome/grumpy_among_the_stars.webp)
While I have major apprehensions about where, *sigh*, Font Awesome is going to take the project, I suppose we'll just have to wait and see where this goes. In the meantime, let's all be sure to donate to the FLOSS projects we use, publicly shame corporations who don't give back to the projects they profit from, and pressure our representatives to fund FLOSS software!
[^1]: And green is my favorite color, too :[

View File

@@ -5,6 +5,7 @@ date: 2024-12-02
tags: tags:
- Site Updates - Site Updates
- Eleventy - Eleventy
- Web Development
synopsis: At last, I've gotten around to implementing image galleries. synopsis: At last, I've gotten around to implementing image galleries.
imageURL: /img/isabella-fischer-X2l9M6jsS7E-unsplash.webp imageURL: /img/isabella-fischer-X2l9M6jsS7E-unsplash.webp
imageAlt: Some very tasty looking pop tarts with pink icing and sprinkles. imageAlt: Some very tasty looking pop tarts with pink icing and sprinkles.

View File

@@ -5,6 +5,7 @@ date: 2025-02-04
tags: tags:
- Site Updates - Site Updates
- Eleventy - Eleventy
- Web Development
synopsis: "Remember when internet quizzes were a thing? I wanted to bring them to my website." synopsis: "Remember when internet quizzes were a thing? I wanted to bring them to my website."
imageURL: "" imageURL: ""
imageAlt: "" imageAlt: ""

View File

@@ -0,0 +1,94 @@
---
title: "Incense Gum? Reviewing the Viral Nathan and Sons Underbrush Remineralizing Gum"
description: "You know I had to try a chewing gum made from incense ingredients."
date: 2026-02-23
tags:
- Incense
- Incense Review
- Other Review
- Food and Beverage
synopsis: "You know I had to try a chewing gum made from incense ingredients."
imageURL: "/img/nathan_and_sons_underbrush_remineralizing_gum/nathan-and-sons-underbrush-remineralizing-gum.webp"
imageAlt: "A tealight cup containing a melted puddle of gum on an MHP30 mini heater. Beside it are packages of the gum."
mastodon_id: "116122384966857793"
---
Maybe this is just my algorithm, but I just can't escape
[Nathan and Sons Underbrush Remineralizing Gum](https://nathanandsons.com/) on
[Instagram](https://www.instagram.com/nathan.and.sons/). In case your feed
isn't absolutely inundated with Underbrush content like mine, Underbrush is a
chewing gum brand that uses natural botanicals rather than the, well,
[plastic](https://en.wikipedia.org/wiki/Chewing_gum#Microplastics) that is
commonly used as a gum base. Instead, Underbrush contains chicle, mastic,
spruce, and acacia gum, myrrh and other natural ingredients. Are you beginning
to see why I'm interested in the stuff? Some of these ingredients might sound
more at home in an incense build than something you put in your mouth, but the
truth is that plant gums have been chewed for centuries. Hell, people died over mastic in antiquity, such was its acclaim as a herbal medicine, flavoring,
and chewing gum. Native Americans used spruce gum in this way, and frankincense
has also traditionally been used as a chewing gum.
Naturally, I *had* to try a gum made, essentially, out of incense materials. The
price deterred me for a while, but my curiosity eventually won out. I elbowed
my way through the aggressive salesy cruft on the Nathan and Sons website and
put in an order for the berry variety (the only vegan option).
[![A tealight cup containing a melted puddle of gum on an MHP30 mini heater. Beside it are packages of the gum.](/img/nathan_and_sons_underbrush_remineralizing_gum/nathan-and-sons-underbrush-remineralizing-gum.webp "Of course I put the stuff on my dusty wee heater.")](/img/nathan_and_sons_underbrush_remineralizing_gum/nathan-and-sons-underbrush-remineralizing-gum.webp)
## Underbrush as intended: gum
With a texture nigh-indistinguishable from any gum you might find on a
supermarket shelf, I found Underbrush pleasantly sweet with a mild berry flavor
as I began to chew. Unfortunately, this only lasts for, quite literally,
seconds before settling down into an ashtray meets lapsang-souchong smoky black
tea flavor. It's genuinely pretty shocking how quickly the flavor changes. I
can only assume that the lingering note comes from the myrrh. It really is
quite unfortunate that this is the only resin with any flavor left in it—myrrh
is [infamous](https://en.wikipedia.org/wiki/Myrrh#Etymology) for its bitter
flavor[^1].
In the ads for this gum, they show the resins being heated in order to mix them
together, and I can't help but wonder whether that's the culprit here. With
plain old frankincense or mastic, the pronounced flavor of the resin lasts for
just about as long as you can be bothered to chew. As an incense maker, I am
well aware of how quickly heat can evaporate out all of those lovely aromatic
volatile compounds—even now I'm grinding some costus root twenty seconds at a
time, ensuring that the temperature of the material doesn't rise beyond 100°F
with an infrared thermometer. I don't really care about the berry flavor, but
it seems like abject sacrilege to have all of these nice, rare, and expensive
tree resins in a product with their flavor cooked out of them.
After spending close to $40 for 36 pieces of gum,
[my disappointment is immeasurable.](https://knowyourmeme.com/memes/my-disappointment-is-immeasurable-and-my-day-is-ruined)
That said, I didn't buy the stuff just to chew it all anyway. If it's no good
as a gum, how will it fare as incense?
## Underbrush as not intended: incense
At 185°C the gum presents a candy-like sweetness and a fruity acidity with *maybe*
a tiny hint of mastic? Imagine a bag of skittles left in a hot car. The
fragrance didn't change at 250°, but at 300° a toasty note enters and the
acidity ramps up before it begins to darken in color and smell burned.
Even as incense, the resins are practically nowhere to be found. What a shame.
## Conclusion
I'm not at all enamored with this stuff. While the gum circumvents the usual
issues inherent to chewing resin with its excellent texture, all of those
beautiful natural ingredients present little to no flavor. The added flavoring
disappears so quickly that it may as well not be there. I can't speak to
the health claims made by Nathan and Sons, but in purely sensory terms, I prefer
the stuff on an incense heater. And I don't like it much there.
On an emotional level, cooking the flavor out of these beautiful
resins—precious materials that
[wars have been fought over](https://en.wikipedia.org/wiki/Chios_massacre)
—feels like an
[Ecce Homo](https://en.wikipedia.org/wiki/Ecce_Homo_(Garc%C3%ADa_Mart%C3%ADnez_and_Gim%C3%A9nez))
moment. Continuing on the religious theme, perhaps more apt is the famous line
from the Gospel of Matthew: "…neither cast ye your pearls before swine, lest
they trample them under their feet…." Whether you're looking for something to
chew or a fragrance to enjoy, my recommendation would be to use a chunk of mastic instead.
[^1]: Honestly, it's quite difficult to make myrrh smell nice in incense too.

View File

@@ -5,6 +5,7 @@ date: 2024-10-23
tags: tags:
- Music - Music
- Site Updates - Site Updates
- Web Development
synopsis: "I've gone and built a not-so-fancy audio component for my blog." synopsis: "I've gone and built a not-so-fancy audio component for my blog."
imageURL: /audio/covers/ballin.webp imageURL: /audio/covers/ballin.webp
imageAlt: An uncapped fountain pen on top of a pretty, gold-foiled pad of paper beside some envelopes with stamps featuring coffee drinks on them. imageAlt: An uncapped fountain pen on top of a pretty, gold-foiled pad of paper beside some envelopes with stamps featuring coffee drinks on them.

View File

@@ -8,6 +8,7 @@ tags:
- Meat Alternatives - Meat Alternatives
- Chicago - Chicago
- Restaurants - Restaurants
- Food and Beverage
imageURL: /img/seitan.webp imageURL: /img/seitan.webp
imageAlt: Two wee logs of seitan wrapped tightly in cheesecloth and kitchen twine on a piece of foil next top a pair of kitchen tongs. imageAlt: Two wee logs of seitan wrapped tightly in cheesecloth and kitchen twine on a piece of foil next top a pair of kitchen tongs.
--- ---

View File

@@ -4,6 +4,7 @@ description: QOwnNotes is a terminally underrated native markdown note-taking ap
synopsis: QOwnNotes is a terminally underrated native markdown note-taking app, despite the fact that you'll rarely see it mentioned on the internet. synopsis: QOwnNotes is a terminally underrated native markdown note-taking app, despite the fact that you'll rarely see it mentioned on the internet.
date: 2023-08-09 date: 2023-08-09
tags: tags:
- Enshittification
- FOSS/FLOSS - FOSS/FLOSS
- Underrated Apps - Underrated Apps
imageURL: /img/qownnotes.webp imageURL: /img/qownnotes.webp
@@ -13,7 +14,7 @@ mastodon_id: "110862579682916657"
[![A screenshot of QOwnNotes showing a note subfolder panel beside markdown editor and preview panels.](/img/qownnotes.webp "QOwnNotes running on EndeavourOS / KDE Plasma")](/img/qownnotes.webp) [![A screenshot of QOwnNotes showing a note subfolder panel beside markdown editor and preview panels.](/img/qownnotes.webp "QOwnNotes running on EndeavourOS / KDE Plasma")](/img/qownnotes.webp)
## What makes a good note taking app? ## What makes a good note taking app?
After its author decided to make future versions closed-source, I found myself searching for a replacement for the excellent [Notable](https://notable.app/). Unfortunately, while note-taking applications are a dime a dozen, they're also common ground for the [Notable](https://notable.app/) / [SimpleNote](https://simplenote.com/) style FLOSS bait-and-switch: developers release an outstanding note-taking app, only to make future versions closed-source, or make it inordinately difficult to properly and fully make use of the software without paying for a hosted service. Victim to the former, I set out to find a note-taking app that I felt could not only be trusted to operate in the spirit of FLOSS philosophy, but also met some key criteria: After its author decided to make future versions closed-source, I found myself searching for a replacement for the excellent [Notable](https://notable.app/). Unfortunately, while note-taking applications are a dime a dozen, they're also common ground for the [Notable](https://notable.app/) / [Standard Notes](https://standardnotes.com/) style FLOSS bait-and-switch: developers release an outstanding note-taking app, only to make future versions closed-source, or make it inordinately difficult to properly and fully make use of the software without paying for a hosted service. Victim to the former, I set out to find a note-taking app that I felt could not only be trusted to operate in the spirit of FLOSS philosophy, but also met some key criteria:
1. Native Code 1. Native Code

View File

@@ -3,17 +3,19 @@ layout: layouts/base.njk
title: Nathan Upchurch | Blogroll title: Nathan Upchurch | Blogroll
structuredData: none structuredData: none
--- ---
<h1>Blogroll</h1> <article data-pagefind-body>
<p class="nodropcap">Here are some blogs and independent news outlets I like to read. You can click the RSS icon next to each to subscribe using <a href="../about-feeds/">your newsreader</a>, or import all of them at once by downloading and importing this convenient <a href="./nathanUpchurchBlogroll.opml" download>.opml file</a>.</p>
<p class="page-block">
<em>Skip to category:
{% for category in blogroll.categories %}
<a href="#{{ category.name | slugify }}">{{ category.name }}</a>{% if loop.last %}.{% else %},{% endif %}
{% endfor %}
</em></p>
{% for category in blogroll.categories %} <h1>Blogroll</h1>
<section class="blogroll"> <p class="nodropcap">Here are some blogs and independent news outlets I like to read. You can click the RSS icon next to each to subscribe using <a href="../about-feeds/">your newsreader</a>, or import all of them at once by downloading and importing this convenient <a href="./nathanUpchurchBlogroll.opml" download>.opml file</a>.</p>
<p class="page-block">
<em>Skip to category:
{% for category in blogroll.categories %}
<a href="#{{ category.name | slugify }}">{{ category.name }}</a>{% if loop.last %}.{% else %},{% endif %}
{% endfor %}
</em></p>
{% for category in blogroll.categories %}
<section class="blogroll">
<h2 id="{{ category.name | slugify }}">{{ category.name }}:<a class="header-anchor" href="#{{ category.name | slugify }}">#</a></h2> <h2 id="{{ category.name | slugify }}">{{ category.name }}:<a class="header-anchor" href="#{{ category.name | slugify }}">#</a></h2>
{% for blog in category.blogs %} {% for blog in category.blogs %}
<div class="blogroll-category-group"> <div class="blogroll-category-group">
@@ -33,4 +35,6 @@ structuredData: none
</div> </div>
{% endfor %} {% endfor %}
</section> </section>
{% endfor %} {% endfor %}
</article>

View File

@@ -3,7 +3,21 @@ layout: layouts/base.njk
title: Nathan Upchurch | Changelog title: Nathan Upchurch | Changelog
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Changelog # Changelog
* 2026-03-16
* Updated [/incense](/incense).
* Updated [/links](/links).
* Updated [/not-amazon](/not-amazon).
* 2026-03-12
* Added [/not-amazon](/not-amazon) page.
* 2026-03-11
* Implemented [search](/search).
* 2026-03-06
* Updated [/incense](/incense).
* 2026-03-05
* Updated [/wish](/wish) and [/incense](/incense).
* 2026-02-07 * 2026-02-07
* Updated [/wish](/wish). * Updated [/wish](/wish).
* 2026-02-04 * 2026-02-04
@@ -156,3 +170,4 @@ structuredData: none
* Implemented [/changelog](/changelog) 🎉. * Implemented [/changelog](/changelog) 🎉.
* Implemented [/ai](/ai) a la [slashai.page](https://slashai.page/). * Implemented [/ai](/ai) a la [slashai.page](https://slashai.page/).
</article>

View File

@@ -11,7 +11,7 @@ eleventyComputed:
permalink: "/gallery/{{ picture.containingGallery | slugify }}/{{ picture.filename | slugify }}/" permalink: "/gallery/{{ picture.containingGallery | slugify }}/{{ picture.filename | slugify }}/"
description: "{{ picture.title }} from gallery: {{ picture.containingGallery}}" description: "{{ picture.title }} from gallery: {{ picture.containingGallery}}"
--- ---
<article> <article data-pagefind-body>
<h1>{{ picture.title }}</h1> <h1>{{ picture.title }}</h1>
<div class="buttonContainer galleryButtons"> <div class="buttonContainer galleryButtons">
{% if picture.previousImage %} {% if picture.previousImage %}

View File

@@ -11,9 +11,10 @@ eleventyComputed:
permalink: "/gallery/{{ gallery.title | slugify }}/" permalink: "/gallery/{{ gallery.title | slugify }}/"
description: "{{ gallery.description }}" description: "{{ gallery.description }}"
--- ---
<h1>{{ gallery.title }}</h1> <div data-pagefind-body>
<p class="page-block nodropcap">{{ gallery.description }}</p> <h1>{{ gallery.title }}</h1>
<section class="gallery-images"> <p class="page-block nodropcap">{{ gallery.description }}</p>
<section class="gallery-images">
{% for picture in gallery.pictures %} {% for picture in gallery.pictures %}
<a href="/gallery/{{ gallery.title | slugify }}/{{ picture.filename | slugify }}/"> <a href="/gallery/{{ gallery.title | slugify }}/{{ picture.filename | slugify }}/">
<wc-card class="gallery-image-container"> <wc-card class="gallery-image-container">
@@ -21,4 +22,5 @@ eleventyComputed:
</wc-card> </wc-card>
</a> </a>
{% endfor %} {% endfor %}
</section> </section>
</div>

View File

@@ -1,8 +1,10 @@
--- ---
layout: layouts/base.njk layout: layouts/base.njk
--- ---
<h1>My image galleries.</h1> <div data-pagefind-body>
<p class="page-block nodropcap"> <h1>My image galleries.</h1>
Photography trips, memes, and other pictures I thought would be worth sharing. <p class="page-block nodropcap">
</p> Photography trips, memes, and other pictures I thought would be worth sharing.
{% include "gallerieslist.njk" %} </p>
{% include "gallerieslist.njk" %}
</div>

View File

@@ -3,6 +3,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Incense title: Nathan Upchurch | Incense
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Incense: Writing & Resources # Incense: Writing & Resources
::: info ::: info
@@ -25,6 +26,7 @@ Incense making is hard. While parts of the world with strong incense cultures en
### Resources ### Resources
* [/r/incense posts flaired with "incense making"](https://www.reddit.com/r/Incense/?f=flair_name%3A%22Incense%20Making%22)—For better or worse, the incense subreddit is *the* place to go for incense discussion and advice. I'm working on changing that, but it's slow-going; see the forums / discussion boards section below. * [/r/incense posts flaired with "incense making"](https://www.reddit.com/r/Incense/?f=flair_name%3A%22Incense%20Making%22)—For better or worse, the incense subreddit is *the* place to go for incense discussion and advice. I'm working on changing that, but it's slow-going; see the forums / discussion boards section below.
* [incensemaking.com](https://incensemaking.com/)—A useful site, particularly for listing many of the aromatics used in incense making. Be careful, however, as not all of the ingredients listed may be suited for [combustible incense](https://en.wikipedia.org/wiki/Incense#Types). * [incensemaking.com](https://incensemaking.com/)—A useful site, particularly for listing many of the aromatics used in incense making. Be careful, however, as not all of the ingredients listed may be suited for [combustible incense](https://en.wikipedia.org/wiki/Incense#Types).
* [Jarguna Incense YouTube playlist](https://www.youtube.com/watch?v=ZzPT3nU1j70&list=PLWogy1GQgvfECuf-F3kIrsuiBFXh1ctNr&index=1)
* [The Incense Dragon YouTube channel](https://www.youtube.com/c/IncenseDragon) * [The Incense Dragon YouTube channel](https://www.youtube.com/c/IncenseDragon)
## Advanced Incense Making Techniques ## Advanced Incense Making Techniques
@@ -93,6 +95,7 @@ Incense making is hard. While parts of the world with strong incense cultures en
* [Mothers Goods (Germany)](https://mothersgoods.com)—Herbs, Resins, Woods * [Mothers Goods (Germany)](https://mothersgoods.com)—Herbs, Resins, Woods
* [Mountain Rose Herbs (USA)](https://mountainroseherbs.com/)—Extracts, Herbs, Tinctures, Oils, Resins * [Mountain Rose Herbs (USA)](https://mountainroseherbs.com/)—Extracts, Herbs, Tinctures, Oils, Resins
* [New Mountain Merchants (Australia)](https://newmountain.com.au/)—Oils, Woods * [New Mountain Merchants (Australia)](https://newmountain.com.au/)—Oils, Woods
* [ResinaeBotanica (UK)](https://www.etsy.com/shop/ResinaeBotanica)—Resins
* [Scents of Earth (USA)](https://scents-of-earth.com/)—Absolutes, Herbs, Oils, Resins, Woods * [Scents of Earth (USA)](https://scents-of-earth.com/)—Absolutes, Herbs, Oils, Resins, Woods
* [The Incense Dragon (USA)](https://www.theincensedragon.com/supplies)—Herbs, Resins, Woods * [The Incense Dragon (USA)](https://www.theincensedragon.com/supplies)—Herbs, Resins, Woods
* [The World Makes Scents (USA)](https://theworldmakesscents.com/)—Herbs, Resins, Woods * [The World Makes Scents (USA)](https://theworldmakesscents.com/)—Herbs, Resins, Woods
@@ -104,7 +107,12 @@ Incense making is hard. While parts of the world with strong incense cultures en
## Forums / Discussion Boards ## Forums / Discussion Boards
* [Reddit (/r/incense)](https://reddit.com/r/incense)—Unfortunately, this is currently *the* place to discuss incense and incense making on the English-speaking internet. If you would like to avoid a platform that spies on you and uses your writing to train AI, you are welcome to help me bring some life to the following alternative option (currently pretty much only populated by me): * [Reddit (/r/incense)](https://reddit.com/r/incense)—Unfortunately, this is currently *the* place to discuss incense and incense making on the English-speaking internet. If you would like to avoid a platform that spies on you and uses your writing to train AI, you are welcome to help me bring some life to the following alternative option (currently pretty much only populated by me):
* [Lemmy (lemmy.ml/c/incense)](https://lemmy.ml/c/incense)—Lemmy is a free and open source alternative to Reddit on [the fediverse](https://jointhefediverse.net/?lang=en-us). If you're new to the fediverse, the easiest way to participate is to [create a Lemmy account](https://lemmy.ml/signup) and subscribe to the [/c/incense](https://lemmy.ml/c/incense) community. You can also subscribe and participate from [other Lemmy instances](https://join-lemmy.org/instances) and [other federated platforms](https://jointhefediverse.net/join?lang=en-us) such as [Friendica](https://friendi.ca/#try). * [Lemmy (lemmy.ml/c/incense)](https://lemmy.ml/c/incense)—Lemmy is a free and open source alternative to Reddit on [the fediverse](https://jointhefediverse.net/?lang=en-us). If you're new to the fediverse, the easiest way to participate is to [create a Lemmy account](https://lemmy.ml/signup) and subscribe to the [/c/incense](https://lemmy.ml/c/incense) community. You can also subscribe and participate from [other Lemmy instances](https://join-lemmy.org/instances) and [other federated platforms](https://jointhefediverse.net/join?lang=en-us) such as [Friendica](https://friendi.ca/#try).
* [Ouddict](https://www.ouddict.com/)—Mostly focused on agarwood (oud) oil and wood, incense threads can and do appear.
* [The Incense Makers' Guild](https://incensemakers.org/)—An invitation-only forum for experienced incense makers hosted by yours truly. Currently pretty quiet, but some good info can be found there already.
## Fun
* [Woo-Woo Incense Description Generator](/special/woo-woo-incense-description-generator)
[^1]: Here I am referring to traditional incense making, using actual plants as aromatics. There is certainly no lack of knowledge or production of "dipped" incense here, an extremely easy to make category of incense which is considered the absolute bottom of the barrel in terms of quality. [^1]: Here I am referring to traditional incense making, using actual plants as aromatics. There is certainly no lack of knowledge or production of "dipped" incense here, an extremely easy to make category of incense which is considered the absolute bottom of the barrel in terms of quality.
</article>

View File

@@ -4,6 +4,8 @@ title: Nathan Upchurch | Links
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Links # Links
Here are some links to pages and resources that I believe are worth sharing. Here are some links to pages and resources that I believe are worth sharing.
## Design tools and resources ## Design tools and resources
@@ -108,9 +110,14 @@ Here are some links to pages and resources that I believe are worth sharing.
* [Wiby](https://wiby.me/)—Search engine for the classic web * [Wiby](https://wiby.me/)—Search engine for the classic web
## Indieweb / personal web: resources ## Indieweb / personal web: resources
* [88x31 Archive](https://hellnet.work/8831/)—An archive of tens of thousands of 88x31 buttons
* [88x31 Button Viewer](https://pilosophos.com/88x31-viewer/)—A searchable archive of tens of thousands of 88x31 buttons
* [90s Cursor Effects](https://tholman.com/cursor-effects/) * [90s Cursor Effects](https://tholman.com/cursor-effects/)
* [blinkies.cafe](https://blinkies.cafe/)—Blinkie maker * [blinkies.cafe](https://blinkies.cafe/)—Blinkie maker
* [Blot](https://blot.im/)—A tool that turns a folder into a website (paid) * [Blot](https://blot.im/)—A tool that turns a folder into a website (paid)
* [Button / badge generator](https://88x31.datakra.sh/)—Generate your very own 88x31 buttons
* [Button / badge generator (2)]https://hekate2.github.io/buttonmaker/)—Another 88x31 button maker
* [Button / badge generator (3)](https://sadgrlonline.github.io/archived-sadgrl.online/projects/88x31-button-maker.html)—Another one!
* [GIF Printer 2000](https://melonking.net/frames/pixelsea) * [GIF Printer 2000](https://melonking.net/frames/pixelsea)
* [GifCities](https://gifcities.org/)—The Geocities animated gif search from Internet Archive * [GifCities](https://gifcities.org/)—The Geocities animated gif search from Internet Archive
* [Gify Pet](https://melonking.net/frames/pet)—Who is there to watch over your site when you are gone? GifyPet will! * [Gify Pet](https://melonking.net/frames/pet)—Who is there to watch over your site when you are gone? GifyPet will!
@@ -123,12 +130,15 @@ Here are some links to pages and resources that I believe are worth sharing.
* [Nekoweb](https://nekoweb.org/)—A free static website hosting service * [Nekoweb](https://nekoweb.org/)—A free static website hosting service
* [neocities.org](https://neocities.org/)—Create your own free website. * [neocities.org](https://neocities.org/)—Create your own free website.
Unlimited creativity, zero ads. Unlimited creativity, zero ads.
* [Pride button / badge generator](https://badge.les.bi/)—Generate pride buttons
* [tamaNOTchi](https://tamanotchi.world/)—cute virtual pets you can customize, grow, and share on your blog or website * [tamaNOTchi](https://tamanotchi.world/)—cute virtual pets you can customize, grow, and share on your blog or website
* [tilde.fun](https://tilde.fun/)—A Linux machine on the internet where you can get a shell account * [tilde.fun](https://tilde.fun/)—A Linux machine on the internet where you can get a shell account
* [tildepages](https://tildepages.org/)—Free & fast web hosting * [tildepages](https://tildepages.org/)—Free & fast web hosting
* [Tile-able website backgrounds](https://tiled-bg.blogspot.com/) * [Tile-able website backgrounds](https://tiled-bg.blogspot.com/)
* [Userbar generator](https://350x19.datakra.sh/)—Generate 250x19 userbar graphics
## Literature ## Literature
* [Standard Ebooks](https://standardebooks.org/)—A volunteer-driven effort to produce a collection of high quality, carefully formatted, accessible, open source, and free public domain ebooks that meet or exceed the quality of commercially produced ebooks.
* [TypeLit.io](https://www.typelit.io/)—Test your typing online by practicing on your favorite literature * [TypeLit.io](https://www.typelit.io/)—Test your typing online by practicing on your favorite literature
* [Wee Windaes—A continuum o the Scots Leid](https://wee-windaes.nls.uk/) * [Wee Windaes—A continuum o the Scots Leid](https://wee-windaes.nls.uk/)
@@ -251,3 +261,5 @@ Unlimited creativity, zero ads.
* VPN * VPN
## Random cool stuff ## Random cool stuff
* [intertapes.net](https://intertapes.net/)—An updating collection of found cassette tapes from different locations. The audio fragments include: voice memos, field recordings, mixtapes, bootlegs and more. * [intertapes.net](https://intertapes.net/)—An updating collection of found cassette tapes from different locations. The audio fragments include: voice memos, field recordings, mixtapes, bootlegs and more.
</article>

133
content/not-amazon/index.md Normal file
View File

@@ -0,0 +1,133 @@
---
layout: layouts/base.njk
title: "Nathan Upchurch | Not Amazon"
structuredData: none
---
<article data-pagefind-body>
# Not Amazon
Mostly for my own use, this is a list of U.S.-based online shops that are not Amazon. If you are looking to stop paying for J-Beezy's yacht maintenance while his workers piss in bottles, and you're based in the U.S.A., you might find this list useful too. Vegan and small independent brands get priority, of course. I do not receive any sort of commission or kick-back from any of the below stores. If you do want to buy something that I get a kick-back from, check out my (sparse) [referrals](/referrals) page. I haven't personally tried all of these retailers, so use judgment before purchasing.
## Clothing & Apparel
* [Bombas](https://bombas.com/)—Decent socks.
* [Suavs](https://www.suavshoes.com/)—Very comfortable ultra-casual shoes with a nice wide toe-box.
* [Means Workwear](https://www.meansworkwear.com/)—Clothing, patches, and hats that may get you put on a list.
* [Very Cool](https://shirtz.cool/)—Ultra casual clothing.
* [Will's Vegan Store](https://www.wills-vegan-store.com/)—Vegan faux-leather[^1] shoes, mostly smart-casual and up, plus some nice coats, jackets, and bags.
## Electronics
* [CircuitMess](https://circuitmess.com/)—STEM kits.
* [Handheld Legend](https://handheldlegend.com/)—Retro handheld console mods and upgrades.
* [Micro Center](https://www.microcenter.com/)—Computers and computer components, maker products, networking equipment, and more.
* [Minis Forum](https://www.minisforum.com/)—Mini PCs.
* [KPRepublic](https://kprepublic.com/)—Keyboards and keyboard accessories.
* [Retroid](https://www.goretroid.com/)—Handheld retro game emulation devices.
* [Slimbook](https://slimbook.com/en/)—Laptops made for GNU/Linux.
* [StarLabs](https://us.starlabs.systems/)—Computers made for GNU/Linux.
* [System76](https://system76.com/)—Computers and accessories made for GNU/Linux.
* [Tindie](https://www.tindie.com/)—Buy unique electronics directly from makers.
* [Tuxedo Computers](https://www.tuxedocomputers.com/en)—Laptops made for GNU/Linux.
* [X-Tronic USA](https://xtronicusa.com/)—Soldering stations and related items.
## Emergency Preparedness
* [Sparrows Lock Picks](https://www.sparrowslockpicks.com/)—Lock picks, sets, and escape and evasion tools.
* [Veggie Mush](https://www.veggiemush.com/)—Dried plant-based meals for camping or emergencies.
## Entertainment
* [Abe Books](https://www.abebooks.com/)—Books, fine art, and collectibles.
* [itch.io](https://itch.io/)—Indie video games.
* [Perfectly Acceptable](https://www.perfectly-acceptable.com/)—Independently published books and zines.
* [Means TV](https://means.tv/)—A TV subscription that may get you put on a list.
## Food & Beverage
### Baked Goods
* [Little Moon Bakehouse](https://littlemoonbakehouse.com/)—Vegan mooncakes and pastries.
### Groceries
* [Anthony's Goods](https://anthonysgoods.com/)—Pantry staples: flours, sugars and sweeteners, nuts and seeds, spices, and more.
* [Canaan Palestine](https://canaanpalestine.com/)—Premium olive oils from Palestine's 2,000 year old olive trees. They also carry a small selection of tapenades and other pantry items.
* [Nuts.com](https://nuts.com/)—Nuts, chocolate, sweets, trail mix, teas, flours, spices, dried fruit, and more. Don't blindly trust their vegan filter.
* [Weee!](https://www.sayweee.com/en)—America's largest online Asian supermarket. Great for vegetables and interesting stuff you won't find anywhere else.
### Non-Alcoholic
* [The Zero Proof](https://thezeroproof.com/)—Non-alcoholic beer, wine, spirits, cocktails, amaros, aperitifs, and digestifs, and more.
### Sweets
* [Alegio Chocolaté](https://www.alegio.com/)—High-end chocolate grown in São Tomé.
* [No Whey Foods](https://nowheychocolate.com/)—Vegan and kosher chocolates free from common allergens.
* [Rose City](https://rosecitychocolates.com/)—Has a wide array of (very nice) vegan chocolates.
* [Shrivers](https://shrivers.com/)—Salt water taffy that you'll actually want to eat.
### Tea
* [Spirit Tea](https://spirittea.co/)—Farm-direct loose leaf tea. Based in Chicago.
* [Yunnan Sourcing](https://yunnansourcing.us/)—A wide array of high quality teas and tea resins, including puerh.
### Vegan / Vegetarian Alternatives
* [All Vegetarian Inc.](https://veganforall.com/)—Vegan substitutes for bacon, shrimp, eggs, and more.
* [Fake Meats](https://www.fakemeats.com/default.asp)—Vegetarian and vegan meat substitutes, snacks, seasonings, sauces, jerky, and more. Seems like this store isn't totally vegan: check ingredients before buying.
* [vegefood.com](https://vegefood.com/)—All sorts of weird and wonderful vegan and vegetarian meat alternatives. Not totally vegan: check ingredients before buying.
* [Yang Kee Trading](https://yangkeetrading.com/)—Large dried TVP chunks, slices, and strips, vegan pork floss, teas, and more.
## General
* [Public Goods](https://www.publicgoods.com/)—Simple products within the bath and body, cleaning, kitchen and dining, and home decor categories.
* [GoodEarth Products](https://goodearthproducts.com/)—Office supplies, cleaning, food service, medical, and industrial goods. Also sells the very economical 40-pound buckets of Boardwalk laundry detergent. I have hardly managed to put a dent in my bucket after sixteen months.
* [Grove](https://www.grove.co/)—Products across home and kitchen, garden, cleaning, bath and body, and more. Also sells a very affordable 3-ply bamboo toilet paper.
* [Ten Thousand Villages](https://www.tenthousandvillages.com/)—Fair trade kitchen items, soaps, handwoven baskets, games and puzzles, jewelry, and more from artisans across the world.
## Home
### Cleaning Supplies
* [Friendswood Brooms](https://friendswoodbrooms.com/)—Handmade corn brooms.
* [Meckley Brooms](https://www.meckleybrooms.com/)—Handmade corn brooms.
### Furniture
* [Joybird](https://rigbyhandcraft.com/ornaments)—Decent quality furniture (not flat-pack) that doesn't cost the earth. They have a decent warranty, too, but do be prepared to go to battle if you intend to use it.[^2]
### Holiday Decorations
* [Rigby Handcraft](https://rigbyhandcraft.com/ornaments)—Reproductions of antique tin Christmas tree ornaments.
### Incense
* [Exotic Incense](https://www.exoticincense.com/)—Sells a wide array of incense from India, Tibet, Japan, and more.
* [Fred Soll](https://www.fredsoll.com/)—An independent U.S. incense maker who pioneered the "resin on a stick" category.
* [Goyo](https://www.goyo.space/shop)—Incense by artisan Hyungi Park.
* [Japan Incense](https://www.japanincense.com/)—Japanese incense shop with a huge selection.
* [Kikoh](https://kikohincense.com/)—Japanese incense shop that packages every order very nicely.
* [Mermade Magickal Arts](https://www.mermadearts.com/)—High-end incense from a number of independent artisans.
* [Nippon Kodo](https://nipponkodostore.com/)—The official U.S. web-store for Nippon Kodo.
* [Shoyeido](https://shoyeido.com/)—The official U.S. web-store for Shoyeido.
* [The World Makes Scents](https://theworldmakesscents.com/)—A Chicago-local independent incense brand focusing on Cambodian-style natural, whole-plant incense.
### Kitchen
* [John Boos & Co.](https://www.johnboos.com/)—High quality cutting boards, butcher blocks, carts, kitchen islands, tables, and more.
* [Made In](https://madeincookware.com/)—5-ply stainless clad cookware, cutlery, plates, bowls, and more.
* [Oxo](https://www.oxo.com/)—Kitchenware, cleaning and organization products, and more.
* [WebstaurantStore](https://www.webstaurantstore.com/)—Commercial kitchen equipment from freezers to disposable cups and janitorial supplies. This is where I got my [Boos Block prep table](https://www.johnboos.com/products/1-1-2-thick-wood-top-work-tables-with-galvanized-shelf-24-wide?Size=36%22+x+24%22+x+1-1%2F2%22) on the cheap.
### Organization
* [North Mountain Supply](https://www.northmountainsupply.com/)—Jars, bottles, and supplies for beer making, wine making, distilling, and more.
## Office
### Stationery
* [Blackwing](https://blackwing602.com/)—Home of the legendary Blackwing pencil.
* [The Goulet Pen Co.](https://www.gouletpens.com/)—Fountain pens (the environmentally friendly option!), ink, paper, stationery sets, and more.
## Personal Care
### Bath & Body
* [Ethique](https://ethique.com/)—Shampoo and conditioner bars from Aotearoa New Zealand.
* [Dr. Jen](https://drjennatural.com/)—Nano-Hydroxyapatite toothpaste. They also sell a strawberry flavor for those sensitive to mint.
* [J•R•Liggett's](https://jrliggett.com/)—All natural shampoo bars.
* [Palestinian Soap Cooperative](https://palestiniansoap.coop/)—Olive oil soap from Nablus, Palestine, made using a traditional process practiced for well over four millennia.
* [Phoenix Shaving](https://phoenixshaving.com/)—A wide array of razors, aftershaves, brushes, and other wet-shaving products, including the fantastic [CK-6 line of vegan shaving soaps](https://phoenixshaving.com/collections/ultra-premium-formula-ck-6).
* [Smart Life Co.](https://www.smartlifeco.com/)—Floss picks and other oral hygiene products.
* [The Earthling Co.](https://theearthlingco.com/)—Shampoo and conditioner bars.
* [TNG Worldwide](https://tngworldwide.com/)—Bulk vegan soap, shampoo, conditioner, lotion, and more from the Ginger Lily Farms brand. They also sell spa supplies and salt lamps. Ignore the "Available at Amazon" buttons.
* [Triple Bristle](https://www.triplebristle.com/)—Neat three-sided toothbrushes that really get every surface of your teeth with little effort.
### Supplements
* [Complement](https://lovecomplement.com/)—Vegan multivitamins and supplements.
* [vivanaturals](https://vivanaturals.com/)—Supplements, beauty, and food items.
[^1]: I know what you're thinking, but I have not once had any issues with peeling or damage on the faux-leather uppers from this brand (most intentionally vegan brands have this handled). In fact, they last and look good for longer than animal-skin shoes because the material is not damaged by moisture or road salt. If you really want a true buy-it-for-life option, though (and if they have them in your size), go for the Goodyear welt options so that the shoes are properly resoleable at a cobbler.
[^2]: I bought a sofa with angled legs; not the most structurally sound arrangement. When one broke, it took me years to get around to making a warranty claim. They honored it, but I first had to send the couch back. They then told me that the model I bought was no longer available, but I could select one from the website of the same value before any sales or discounts. There were two problems with this. First, years had passed and prices had risen. Second, just about everything on that website seems to be perpetually on sale. And so I went to war. There were mysterious email deliverability issues, negotiations, and many phone calls. Eventually, I got a nice new replacement couch for Sol to leave crumbs on with entirely vertical legs. Result.
</article>

View File

@@ -0,0 +1,7 @@
---
title: Sumire
manufacturer: Tennendo
date: 2026-02-18 14:14:00
time: 2:14 PM
---
I've heard it called “soapy,” but I quite enjoy this violet incense.

View File

@@ -0,0 +1,7 @@
---
title: Excellentia (Shira-giku)
manufacturer: Shoyeido
date: 2026-02-20 8:59:00
time: 8:59 AM
---
With a 7-8 hour burn time, this coil is a bit of a commitment!

View File

@@ -0,0 +1,7 @@
---
title: Hawaiian Summer
manufacturer: Incense Apprentice
date: 2026-02-27 15:27:00
time: 3:27 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Calm
manufacturer: Esprit de la Nature
date: 2026-03-02 11:37:00
time: 11:37 AM
---
A nice spicy, woody composition

View File

@@ -0,0 +1,7 @@
---
title: Suzaku
manufacturer: Gyokushodo
date: 2026-03-04 13:59:00
time: 1:59 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Brunei
manufacturer: Yi-Xin Craft Incense
date: 2026-03-04 15:04:00
time: 3:04 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Warming
manufacturer: "Faircense / Pema of Tibet"
date: 2026-03-06 12:56:00
time: 12:56 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Tokusen Kobunboku
manufacturer: Baieido
date: 2026-03-12 11:43:00
time: 11:43 AM
---
I like this one a lot.

View File

@@ -0,0 +1,7 @@
---
title: Kobunboku
manufacturer: Baieido
date: 2026-03-13 13:29:00
time: 1:29 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Morning Star Lavender
manufacturer: Nippon Kodo
date: 2026-03-13 15:07:00
time: 3:07 PM
---

View File

@@ -0,0 +1,7 @@
---
title: Suifu
manufacturer: Yamadamatsu
date: 2026-03-16 12:18:00
time: 12:18 PM
---

View File

@@ -9,7 +9,7 @@ postlistHeaderText: "What I've been burning:"
{% set burning = collections.nowBurning | last %} {% set burning = collections.nowBurning | last %}
<h1>Now Burning:</h1> <h1>Now Burning:</h1>
<article class="post microblog-post"> <article class="post microblog-post" data-pagefind-body>
<img class="microblog-icon" src="/img/censer.svg"> <img class="microblog-icon" src="/img/censer.svg">
<div class="microblog-status"> <div class="microblog-status">
<h2 class="">{{ burning.data.title }}{% if burning.data.manufacturer %}, {{ burning.data.manufacturer }}{% endif %}, {{ burning.date | niceDate }}, {{ burning.data.time }}</h2> <h2 class="">{{ burning.data.title }}{% if burning.data.manufacturer %}, {{ burning.data.manufacturer }}{% endif %}, {{ burning.date | niceDate }}, {{ burning.data.time }}</h2>

View File

@@ -4,7 +4,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Now title: Nathan Upchurch | Now
structuredData: none structuredData: none
--- ---
<article class="post"> <article class="post" data-pagefind-body>
<h1>Now: Life updates.</h1> <h1>Now: Life updates.</h1>
{% set now = collections.now | last %} {% set now = collections.now | last %}
<h2>{{ now.data.title }} • {{ now.date | niceDate }}</h2> <h2>{{ now.data.title }} • {{ now.date | niceDate }}</h2>

View File

@@ -9,6 +9,8 @@ pagination:
permalink: "once-burned/{% if pagination.pageNumber > 0 %}page-{{ pagination.pageNumber + 1 }}/{% endif %}index.html" permalink: "once-burned/{% if pagination.pageNumber > 0 %}page-{{ pagination.pageNumber + 1 }}/{% endif %}index.html"
paginationRootDir: once-burned paginationRootDir: once-burned
--- ---
<div data-pagefind-body>
<h1>Previous “Now Burning” Entries:</h1> <h1>Previous “Now Burning” Entries:</h1>
{% set postsCount = pagination.items | length %} {% set postsCount = pagination.items | length %}
@@ -25,3 +27,5 @@ paginationRootDir: once-burned
<a href="/now-burning/"> <a href="/now-burning/">
<button type="button">Latest »</button> <button type="button">Latest »</button>
</a> </a>
</div>

View File

@@ -8,19 +8,23 @@ pagination:
permalink: "prior-thoughts/{% if pagination.pageNumber > 0 %}page-{{ pagination.pageNumber + 1 }}/{% endif %}index.html" permalink: "prior-thoughts/{% if pagination.pageNumber > 0 %}page-{{ pagination.pageNumber + 1 }}/{% endif %}index.html"
paginationRootDir: prior-thoughts paginationRootDir: prior-thoughts
--- ---
<h1>Prior thoughts:</h1> <div data-pagefind-body>
{% set postsCount = pagination.items | length %} <h1>Prior thoughts:</h1>
{% if postsCount > 0 %}
{% set postslist = pagination.items %}
{% set showPostListHeader = false %}
{% include "statusList.njk" %}
{% else %}
<p>Nothings here yet!</p>
{% endif %}
{% include "permalinkButtons.njk" %} {% set postsCount = pagination.items | length %}
{% if postsCount > 0 %}
{% set postslist = pagination.items %}
{% set showPostListHeader = false %}
{% include "statusList.njk" %}
{% else %}
<p>Nothings here yet!</p>
{% endif %}
<a href="/status/"> {% include "permalinkButtons.njk" %}
<a href="/status/">
<button type="button">Latest »</button> <button type="button">Latest »</button>
</a> </a>
</div>

View File

@@ -5,11 +5,15 @@ title: Nathan Upchurch | Quizzes
structuredData: none structuredData: none
description: "Bored? Take a fun quiz to while away the time!" description: "Bored? Take a fun quiz to while away the time!"
--- ---
<h1>Quizzes</h1> <div data-pagefind-body>
<p>Test your knowledge, learn about yourself, and waste your precious time, right here, right now, with a quiz!</p>
{% set postsCount = collections.quiz | length %} <h1>Quizzes</h1>
<h2>Available Quizzes:</h2> <p>Test your knowledge, learn about yourself, and waste your precious time, right here, right now, with a quiz!</p>
{% set postslist = collections.quiz %}
{% set showPostListHeader = false %} {% set postsCount = collections.quiz | length %}
{% include "postslist.njk" %} <h2>Available Quizzes:</h2>
{% set postslist = collections.quiz %}
{% set showPostListHeader = false %}
{% include "postslist.njk" %}
</div>

View File

@@ -3,6 +3,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Referrals title: Nathan Upchurch | Referrals
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Referrals / Affiliate Links # Referrals / Affiliate Links
@@ -10,3 +11,5 @@ Here are some referral links to services / products that I use and recommend. Ye
## Web Hosting, Storage, and VPS ## Web Hosting, Storage, and VPS
I like [Interserver](https://www.interserver.net/r/745483). They've always been quick to resolve any issues, I like the dashboard with integrated VNC, and their storage VPS' are super cheap. I like [Interserver](https://www.interserver.net/r/745483). They've always been quick to resolve any issues, I like the dashboard with integrated VNC, and their storage VPS' are super cheap.
</article>

11
content/search/index.njk Normal file
View File

@@ -0,0 +1,11 @@
---
layout: layouts/base.njk
search: true
title: Nathan Upchurch | Search
structuredData: none
---
<h1>Search this site</h1>
<div id="search" class="search"></div>
<script src="/pagefind/pagefind-ui.js" onload="new PagefindUI({ element: '#search', showImages: false });"></script>

View File

@@ -3,6 +3,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Sitemap title: Nathan Upchurch | Sitemap
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Sitemap # Sitemap
* [Home](/) * [Home](/)
@@ -21,11 +22,13 @@ structuredData: none
* [Guestbook](/guestbook) * [Guestbook](/guestbook)
* [Incense](/incense) * [Incense](/incense)
* [Links](/links) * [Links](/links)
* [Not Amazon](/not-amazon)
* [Now](/now) * [Now](/now)
* [Now Burning](/now-burning) * [Now Burning](/now-burning)
* [Once Burned](/once-burned) * [Once Burned](/once-burned)
* [Prior Thoughts](/prior-thoughts) * [Prior Thoughts](/prior-thoughts)
* [Referrals](/referrals) * [Referrals](/referrals)
* [Search](/search)
* [Slashes](/slashes) * [Slashes](/slashes)
* Special * Special
* [Flying Toasters](/special/flying-toasters) * [Flying Toasters](/special/flying-toasters)
@@ -33,3 +36,5 @@ structuredData: none
* [Status](/status) * [Status](/status)
* [Wishes](/wish) * [Wishes](/wish)
* [Quizzes](/quizzes) * [Quizzes](/quizzes)
</article>

View File

@@ -3,6 +3,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Slashes title: Nathan Upchurch | Slashes
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# Slashes # Slashes
@@ -20,3 +21,5 @@ This is an index of all my [slash pages](https://slashpages.net/). These are pag
* [/Referrals](/referrals) * [/Referrals](/referrals)
* [/Sitemap](/sitemap) * [/Sitemap](/sitemap)
* [/Wish](/wish) * [/Wish](/wish)
</article>

View File

@@ -0,0 +1,5 @@
---
date: 2026-02-17 15:44:00
emoji: 🫠
comment: Mefjus *Manifest* is a hell of an album. No one puts out such pristinely produced tracks as Drum and Bass artists.
---

View File

@@ -0,0 +1,5 @@
---
date: 2026-03-03 10:41:00
emoji: 💪
comment: This exercise stuff isn't all that bad after all.
---

View File

@@ -8,7 +8,7 @@ permalink: "/status/index.html"
{% set status = collections.status | last %} {% set status = collections.status | last %}
<h1>Nathans status:</h1> <h1>Nathans status:</h1>
<article class="post microblog-post"> <article class="post microblog-post" data-pagefind-body>
<div class="microblog-status card"> <div class="microblog-status card">
<span class="microblog-emoji">{{ status.data.emoji }}</span> <span class="microblog-emoji">{{ status.data.emoji }}</span>

View File

@@ -4,15 +4,19 @@ layout: layouts/base.njk
title: Nathan Upchurch | Tags title: Nathan Upchurch | Tags
structuredData: none structuredData: none
--- ---
<h1>Tags / Topics</h1> <article data-pagefind-body>
<p class="page-block nodropcap"> <h1>Tags / Topics</h1>
Click on a tag to see all posts on the topic; you can also subscribe to an RSS feed of any individual topic on the topic page.
</p>
<ul class="taglist"> <p class="page-block nodropcap">
{% for tag in collections.all | getAllTags | filterTagList | sort(false, false, tag) %} Click on a tag to see all posts on the topic; you can also subscribe to an RSS feed of any individual topic on the topic page.
</p>
<ul class="taglist">
{% for tag in collections.all | getAllTags | filterTagList | sort(false, false, tag) %}
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %} {% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
<li><a href="{{ tagUrl }}" class="post-tag">{{ tag }}</a></li> <li><a href="{{ tagUrl }}" class="post-tag">{{ tag }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
</article>

View File

@@ -8,6 +8,11 @@ pagination:
- post - post
- posts - posts
- tagList - tagList
- feed
- onceBurned
- nowBurning
- status
- priorThoughts
addAllPagesToCollections: true addAllPagesToCollections: true
layout: layouts/base.njk layout: layouts/base.njk
postlistHeaderText: "Latest Posts:" postlistHeaderText: "Latest Posts:"
@@ -17,10 +22,12 @@ eleventyComputed:
permalink: "/tags/{{ tag | slugify }}/" permalink: "/tags/{{ tag | slugify }}/"
description: A list of every post I've written tagged “{{ tag }}.” description: A list of every post I've written tagged “{{ tag }}.”
--- ---
<h1>Topic: “{{ tag }}.” <article data-pagefind-body>
</h1>
<p class="page-block nodropcap"> <h1>Topic: “{{ tag }}.”
Heres everything Ive posted tagged “{{ tag }}.” Want to be notified when I post on this topic? Subscribe to “{{ tag }}” using the button below.<br> </h1>
<p class="page-block nodropcap">
Heres everything Ive posted tagged “{{ tag }}.” Want to be notified when I post on this topic? Subscribe to “{{ tag }}” using the button below.<br>
<a class="link-button" href="/tags/"> <a class="link-button" href="/tags/">
<button type="button"> <button type="button">
More topics » More topics »
@@ -32,7 +39,9 @@ Heres everything Ive posted tagged “{{ tag }}.” Want to be notified wh
Subscribe » Subscribe »
</button> </button>
</a> </a>
</p> </p>
{% set postslist = collections[ tag ] | reverse %} {% set postslist = collections[ tag ] | reverse %}
{% include "postslist.njk" %} {% include "postslist.njk" %}
</article>

View File

@@ -3,6 +3,7 @@ layout: layouts/base.njk
title: Nathan Upchurch | Wish title: Nathan Upchurch | Wish
structuredData: none structuredData: none
--- ---
<article data-pagefind-body>
# My Wishlist # My Wishlist
## What is this? ## What is this?
@@ -36,7 +37,6 @@ However if abstention seems unconscionable, I would be delighted if you were to
### Incense ### Incense
* [Baieido Kaden Kobunboku](https://kikohincense.com/products/baieido-kaden-kobunboku-incense?variant=33394631671896) * [Baieido Kaden Kobunboku](https://kikohincense.com/products/baieido-kaden-kobunboku-incense?variant=33394631671896)
* [Baieido Tokusen Kobunboku](https://kikohincense.com/collections/baieido-incense/products/tokusen-kobunboku)
* [Inca Aromas White Breu](https://tarotarts.com/products/inca-aromas-all-natural-fair-trade-incense-white-breu-for-clarity-and-spirituality?variant=39838738251860) * [Inca Aromas White Breu](https://tarotarts.com/products/inca-aromas-all-natural-fair-trade-incense-white-breu-for-clarity-and-spirituality?variant=39838738251860)
* [Kida Jinseido Ranjatai Incense](https://kikohincense.com/collections/kida-jinseido-incense-since-1937/products/kida-jinseido-ranjatai-incense) * [Kida Jinseido Ranjatai Incense](https://kikohincense.com/collections/kida-jinseido-incense-since-1937/products/kida-jinseido-ranjatai-incense)
* [Kunmeido Shin Tokusen Reiryokoh Incense](https://kikohincense.com/collections/kunmeido-incense-kikoh/products/kunmeido-shin-tokusen-reiryokoh-incense) * [Kunmeido Shin Tokusen Reiryokoh Incense](https://kikohincense.com/collections/kunmeido-incense-kikoh/products/kunmeido-shin-tokusen-reiryokoh-incense)
@@ -44,20 +44,14 @@ However if abstention seems unconscionable, I would be delighted if you were to
* [Nippon Kodo Kayuragi - Rose](https://kikohincense.com/collections/roses-and-chocolates-incense-collection/products/nippon-kodo-kayuragi-incense-rose) * [Nippon Kodo Kayuragi - Rose](https://kikohincense.com/collections/roses-and-chocolates-incense-collection/products/nippon-kodo-kayuragi-incense-rose)
* [Nippon Kodo Hana no Hana - Rose](https://kikohincense.com/collections/roses-and-chocolates-incense-collection/products/nippon-kodo-hana-no-hana-incense-rose) * [Nippon Kodo Hana no Hana - Rose](https://kikohincense.com/collections/roses-and-chocolates-incense-collection/products/nippon-kodo-hana-no-hana-incense-rose)
* [Kin Objects Red Soil Aloeswood](https://kinobjects.com/products/red-soil-aloeswood-agarwood-incense-sticks?variant=40432647929879) * [Kin Objects Red Soil Aloeswood](https://kinobjects.com/products/red-soil-aloeswood-agarwood-incense-sticks?variant=40432647929879)
* [Kokando Kaori no Kioku Chocolate](https://kikohincense.com/collections/roses-and-chocolates-incense-collection/products/kokando-kaori-no-kioku-chocolate-incense)
* [Kokando Kunpūshi Aloeswood](https://kikohincense.com/products/kokando-kunpushi-aloeswood) * [Kokando Kunpūshi Aloeswood](https://kikohincense.com/products/kokando-kunpushi-aloeswood)
* [Kunmeido Shin Tokusen Reiryokoh](https://kikohincense.com/collections/kunmeido-incense-kikoh/products/kunmeido-shin-tokusen-reiryokoh-incense)
* [Les Encens du Monde - Moonlit Night | Karin](https://lotuszenincense.com/products/moonlit-night-karin-by-les-encens-du-monde?shpxid=fa2eb8b9-373c-44b6-b675-585881e5540b) * [Les Encens du Monde - Moonlit Night | Karin](https://lotuszenincense.com/products/moonlit-night-karin-by-les-encens-du-monde?shpxid=fa2eb8b9-373c-44b6-b675-585881e5540b)
* [Mysore](https://www.aliexpress.us/item/3256808362085525.html) * [Mysore](https://www.aliexpress.us/item/3256808362085525.html)
* [Shoyeido Horin Assortment](https://shoyeido.com/products/horin-incense-assortment-sampler) * [Shoyeido Horin Assortment](https://shoyeido.com/products/horin-incense-assortment-sampler)
* [Shoyeido Kohbai Pressed Incense](https://shoyeido.com/products/kohbai-red-plum-blossoms?variant=41714738921590) * [Shoyeido Kohbai Pressed Incense](https://shoyeido.com/products/kohbai-red-plum-blossoms?variant=41714738921590)
* [Shoyeido Kunro Incense Assortment](https://shoyeido.com/products/kunro-incense-assortment) * [Shoyeido Kunro Incense Assortment](https://shoyeido.com/products/kunro-incense-assortment)
* [Shoyeido Overtones Patchouli](https://shoyeido.com/products/overtones-patchouli-incense)
* [Shoyeido Premium Incense Sampler](https://shoyeido.com/products/premium-incense-assortment-sampler) * [Shoyeido Premium Incense Sampler](https://shoyeido.com/products/premium-incense-assortment-sampler)
* [Tennendo Hagi Rose Incense](https://kikohincense.com/collections/tennendo-incense-kikoh/products/tennendo-hagi-rose-incense)
* [Tennendo Hanano Byakudan](https://www.japanincense.com/tn-0051.html) * [Tennendo Hanano Byakudan](https://www.japanincense.com/tn-0051.html)
* [Tennendo Kyara Incense](https://kikohincense.com/products/tennendo-kyara-incense)
* [Tennendo Sumire Violet Incense](https://kikohincense.com/products/tennendo-ysumire-violet-incense)
* [Yamadamatsu Hyofu](https://kikohincense.com/collections/yamadamatsu-incense-kikoh/products/yamadamatsu-hyofu-incense) * [Yamadamatsu Hyofu](https://kikohincense.com/collections/yamadamatsu-incense-kikoh/products/yamadamatsu-hyofu-incense)
* [Yamadamatsu Kumoi](https://kikohincense.com/products/yamadamatsu-kumoyi-incense) * [Yamadamatsu Kumoi](https://kikohincense.com/products/yamadamatsu-kumoyi-incense)
* [Yamadamatsu Shoyo](https://www.japanincense.com/ym-0037.html) * [Yamadamatsu Shoyo](https://www.japanincense.com/ym-0037.html)
@@ -99,3 +93,5 @@ However if abstention seems unconscionable, I would be delighted if you were to
* Healthcare, education, housing, and any resource necessary to sustain life to be free for all. * Healthcare, education, housing, and any resource necessary to sustain life to be free for all.
[^1]: Within reason—if you are filthy rich and would like to buy me a house or finance an escape to the UK for my partner and I, I'll not slap your hand away. [^1]: Within reason—if you are filthy rich and would like to buy me a house or finance an escape to the UK for my partner and I, I'll not slap your hand away.
</article>

View File

@@ -12,12 +12,21 @@ import pluginNavigation from "@11ty/eleventy-navigation";
import prettier from "prettier"; import prettier from "prettier";
import { EleventyHtmlBasePlugin } from "@11ty/eleventy"; import { EleventyHtmlBasePlugin } from "@11ty/eleventy";
import { dateSuffixAdder, monthMap } from "./public/js/modules/dateTools.js"; import { dateSuffixAdder, monthMap } from "./public/js/modules/dateTools.js";
// For PageFind
import childProcess from "child_process";
const figoptions = { const figoptions = {
figcaption: true, figcaption: true,
}; };
export default async function (eleventyConfig) { export default async function (eleventyConfig) {
// PageFind Search
eleventyConfig.on("eleventy.after", () => {
childProcess.execSync(`npx pagefind --site _site --glob "**/*.html"`, {
encoding: "utf-8",
});
});
// Customize Markdown library settings: // Customize Markdown library settings:
let markdownItOptions = { let markdownItOptions = {
html: true, html: true,

View File

@@ -37,7 +37,8 @@
"luxon": "^3.3.0", "luxon": "^3.3.0",
"markdown-it-anchor": "^8.6.7", "markdown-it-anchor": "^8.6.7",
"markdown-it-footnote": "^3.0.3", "markdown-it-footnote": "^3.0.3",
"mdfigcaption": "^0.1.1" "mdfigcaption": "^0.1.1",
"pagefind": "^1.4.0"
}, },
"dependencies": { "dependencies": {
"@11tyrocks/eleventy-plugin-emoji-readtime": "^1.0.1", "@11tyrocks/eleventy-plugin-emoji-readtime": "^1.0.1",

View File

@@ -1,89 +1,3 @@
# Spawning AI User-Agent: *
# Prevent datasets from using the following file types
User-Agent: *
Disallow: *.txt
Disallow: *.pdf
Disallow: *.doc
Disallow: *.docx
Disallow: *.odt
Disallow: *.rtf
Disallow: *.tex
Disallow: *.wks
Disallow: *.wpd
Disallow: *.wps
Disallow: *.html
Disallow: *.bmp
Disallow: *.gif
Disallow: *.ico
Disallow: *.jpeg
Disallow: *.jpg
Disallow: *.png
Disallow: *.svg
Disallow: *.avif
Disallow: *.tif
Disallow: *.tiff
Disallow: *.webp
Disallow: *.aac
Disallow: *.aiff
Disallow: *.amr
Disallow: *.flac
Disallow: *.m4a
Disallow: *.mp3
Disallow: *.oga
Disallow: *.opus
Disallow: *.wav
Disallow: *.wma
Disallow: *.mp4
Disallow: *.webm
Disallow: *.ogg
Disallow: *.avi
Disallow: *.mov
Disallow: *.wmv
Disallow: *.flv
Disallow: *.mkv
Disallow: *.py
Disallow: *.js
Disallow: *.java
Disallow: *.c
Disallow: *.cpp
Disallow: *.cs
Disallow: *.h
Disallow: *.css
Disallow: *.php
Disallow: *.swift
Disallow: *.go
Disallow: *.rb
Disallow: *.pl
Disallow: *.sh
Disallow: *.sql
Disallow: / Disallow: /
Disallow: * Disallow: *
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@( @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% @@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@( @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ %@@@@@/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ %@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@( %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
# @@@@@@@@@@@/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ %@@@@& @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ spawning.ai

View File

@@ -255,6 +255,9 @@ main {
.indexFeature:not(:last-child) { .indexFeature:not(:last-child) {
padding-bottom: var(--space-l); padding-bottom: var(--space-l);
} }
mark {
background-color: var(--contrast-color);
}
nav { nav {
grid-column: 2 / span 12; grid-column: 2 / span 12;
} }
@@ -583,7 +586,7 @@ hr {
} }
/* Dropcap */ /* Dropcap */
main > section > article > p:not(.nodropcap):first-of-type:first-letter { main > section > article.post > p:not(.nodropcap):first-of-type:first-letter {
float: left; float: left;
font-size: var(--step-5); font-size: var(--step-5);
padding: var(--space-2xs); padding: var(--space-2xs);

51
public/css/search.css Normal file
View File

@@ -0,0 +1,51 @@
:root {
--pagefind-ui-scale: 1;
--pagefind-ui-primary: var(--contrast-color);
--pagefind-ui-text: var(--text-color);
--pagefind-ui-background: var(--background-color);
--pagefind-ui-border: var(--color-gray-20);
--pagefind-ui-tag: var(--text-color);
--pagefind-ui-border-width: 1px;
--pagefind-ui-border-radius: var(--border-radius);
--pagefind-ui-font: var(--font-family);
}
mark {
background-color: var(--background-color) !important;
color: var(--contrast-color) !important;
font-variation-settings:
"opsz" 18,
"wght" 510,
"SOFT" 40,
"WONK" 0 !important;
}
.pagefind-ui__button {
background-color: var(--contrast-color) !important;
border: none !important;
border-radius: var(--border-radius) !important;
color: var(--background-color) !important;
font-family: var(--font-family-ui) !important;
font-size: var(--step--2) !important;
font-variation-settings: var(--font-variation-ui) !important;
letter-spacing: var(--ui-letter-spacing) !important;
margin: var(--space-xs) 0 0 0 !important;
padding: 0 var(--space-xs) !important;
text-transform: uppercase !important;
transition: var(--transition-normal) !important;
white-space: nowrap !important;
}
.pagefind-ui__search-clear {
font-family: var(--meta-font-family) !important;
font-size: var(--meta-font-size) !important;
font-style: var(--meta-font-style) !important;
font-variation-settings: var(--meta-font-variation-settings) !important;
line-height: calc(
var(--meta-font-size) * 0.5 + var(--meta-font-size)
) !important;
}
.pagefind-ui__search-input {
border-color: var(--contrast-color) !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/img/badges/61.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/img/badges/acab.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
public/img/badges/badge.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
public/img/badges/color.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
public/img/badges/css3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/img/badges/gb.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/img/badges/gitea.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/img/badges/gplv3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/img/badges/hair.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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