Compare commits
10 Commits
c615de4b0b
...
153b178c40
Author | SHA1 | Date | |
---|---|---|---|
153b178c40 | |||
ef37d7622d | |||
7c06d746d4 | |||
a2dd293bf0 | |||
aaae71adf9 | |||
f758f1c973 | |||
4a4b2464da | |||
7063473cd7 | |||
9defa3baf2 | |||
b83e4132ee |
@ -303,6 +303,12 @@ export default {
|
||||
{
|
||||
name: "News: U.S.A.",
|
||||
blogs: [
|
||||
{
|
||||
title: "Popular Information",
|
||||
feedUrl: "https://popular.info/feed",
|
||||
url: "https://popular.info/",
|
||||
description: "News for people who give a damn.",
|
||||
},
|
||||
{
|
||||
title: "Reveal from the Center for Investigative Reporting",
|
||||
feedUrl: "https://revealnews.org/feed",
|
||||
|
@ -19,7 +19,7 @@ export default {
|
||||
defaultPostImageAlt: "The logo for this blog: a capital letter N.",
|
||||
mastodonHost: "lounge.town",
|
||||
mastodonUser: "nathanu",
|
||||
postlistHeaderText: "Writings from my blog:",
|
||||
postlistHeaderText: "Latest blog posts:",
|
||||
socialLinks: [
|
||||
{
|
||||
title: "My Blog",
|
||||
|
@ -2,7 +2,7 @@
|
||||
layout: layouts/base.njk
|
||||
showPostListHeader: yep
|
||||
---
|
||||
<h1>Hi there, friend.</h1>
|
||||
<p class="nodropcap page-block">My name is Nathan Upchurch. Welcome to my personal website and blog, where I write about all sorts of <a href="/tags">things</a> that I find interesting. On this website, you can learn more <a href="about">about me</a>, see <a href="now">what I’ve been up to lately</a>, <a href="blog">read my blog</a>, look at some <a href="galleries">pictures</a>, or explore the <a href="sitemap">sitemap</a> to see what else you can do here.</p>
|
||||
<h1>I'm Nathan; welcome friend.</h1>
|
||||
<p class="nodropcap page-block">My name is Nathan Upchurch, and this is my personal website and blog, where I write about all sorts of <a href="/tags">things</a> that I find interesting. On this website, you can learn more <a href="about">about me</a>, see <a href="now">what I’ve been up to lately</a>, <a href="blog">read my blog</a>, look at some <a href="galleries">pictures</a>, or explore the <a href="sitemap">sitemap</a> to see what else you can do here.</p>
|
||||
|
||||
{{ content | safe }}
|
||||
|
@ -4,7 +4,7 @@ layout: layouts/base.njk
|
||||
{# Only include the syntax highlighter CSS on blog posts #}
|
||||
{%- css %}{% include "public/css/code.css" %}{% endcss %}
|
||||
<article class="post">
|
||||
<h1>{{ title }}</h1>
|
||||
<h1>{{ title | safe }}</h1>
|
||||
{% if not hideMetadata %}
|
||||
<div class="post-metadata">
|
||||
{% if author %}
|
||||
@ -13,7 +13,7 @@ layout: layouts/base.njk
|
||||
{% endif %}
|
||||
<div class="post-metadata-copy">
|
||||
<p>{% if author.url %}<a href="{{ author.url }}">{% endif %}
|
||||
{% if author.name %}{{ author.name }}{% endif %}{% if author.url %}</a>, {% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></p>
|
||||
{% if author.name %}By {{ author.name }}{% endif %}{% if author.url %}</a> • {% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | niceDate }}</time></p>
|
||||
|
||||
{% else %}
|
||||
{% if metadata.author.profilePic %}
|
||||
@ -21,7 +21,7 @@ layout: layouts/base.njk
|
||||
{% endif %}
|
||||
<div class="post-metadata-copy">
|
||||
<p>{% if metadata.author.url %}<a href="{{ metadata.author.url }}">{% endif %}
|
||||
{% if metadata.author.name %}{{ metadata.author.name }}{% endif %}{% if metadata.author.url %}</a>, {% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></p>
|
||||
{% if metadata.author.name %}By {{ metadata.author.name }}{% endif %}{% if metadata.author.url %}</a> • {% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | niceDate }}</time></p>
|
||||
|
||||
{% endif %}
|
||||
|
||||
@ -44,4 +44,3 @@ layout: layouts/base.njk
|
||||
{{ content | safe }}
|
||||
</article>
|
||||
{% include "mastodonComments.njk" %}
|
||||
{% include "nextLast.njk" %}
|
||||
|
@ -1,81 +1,12 @@
|
||||
{% if mastodon_id %}
|
||||
<section class="" id="comment-section">
|
||||
<h2>Comments</h2>
|
||||
<div class="comment-ingress"></div>
|
||||
<div id="comments" data-id="{{ mastodon_id }}">
|
||||
<p>Loading comments...</p>
|
||||
</div>
|
||||
<div class="continue-discussion">
|
||||
<a class="link-button" href="https://{{ metadata.mastodonHost }}/@{{ metadata.mastodonUser }}/{{ mastodon_id }}">
|
||||
<button type="button">
|
||||
Reply on Mastodon to comment »
|
||||
<img src="/img/mastodon.svg">
|
||||
Discuss on Mastodon »
|
||||
</button>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<template id="comment-template">
|
||||
<wc-card>
|
||||
<wc-comment
|
||||
author_name=""
|
||||
author_url=""
|
||||
avatar_url=""
|
||||
comment_content=""
|
||||
publish_date=""
|
||||
sharp_corner="">
|
||||
</wc-comment>
|
||||
</wc-card>
|
||||
</template>
|
||||
|
||||
<script type="module">
|
||||
import {dateSuffixAdder, monthMap, timeFormatter} from "../../js/modules/mastodonDateTools.js";
|
||||
|
||||
const renderComment = (comment, target, parentIdm) => {
|
||||
const node = document
|
||||
.querySelector("template#comment-template")
|
||||
.content.cloneNode(true);
|
||||
|
||||
const dateObj = new Date(comment.created_at);
|
||||
|
||||
const dateTime = `${dateObj.getDate()}${dateSuffixAdder(dateObj.getDate())} of ${monthMap[dateObj.getMonth()]}, ${dateObj.getFullYear()}, at ${timeFormatter(dateObj.getHours(), dateObj.getMinutes())}`;
|
||||
|
||||
node.querySelector("wc-comment").setAttribute("author_name", comment.account.display_name);
|
||||
node.querySelector("wc-comment").setAttribute("author_url", comment.url.replace(/\/[0-9]+/, ""));
|
||||
node.querySelector("wc-comment").setAttribute("avatar_url", comment.account.avatar_static);
|
||||
node.querySelector("wc-comment").setAttribute("comment_content", comment.content);
|
||||
node.querySelector("wc-comment").setAttribute("publish_date", dateTime);
|
||||
|
||||
target.appendChild(node);
|
||||
}
|
||||
|
||||
async function renderComments() {
|
||||
const commentsNode = document.querySelector("#comments");
|
||||
|
||||
const mastodonPostId = commentsNode.dataset?.id;
|
||||
|
||||
if (!mastodonPostId) {
|
||||
return;
|
||||
}
|
||||
|
||||
commentsNode.innerHTML = "";
|
||||
|
||||
const originalPost = await fetch(
|
||||
`https://{{ metadata.mastodonHost }}/api/v1/statuses/${mastodonPostId}`
|
||||
);
|
||||
const originalData = await originalPost.json();
|
||||
renderComment(originalData, commentsNode, null);
|
||||
|
||||
const response = await fetch(
|
||||
`https://{{ metadata.mastodonHost }}/api/v1/statuses/${mastodonPostId}/context`
|
||||
);
|
||||
const data = await response.json();
|
||||
const comments = data.descendants;
|
||||
|
||||
comments.forEach((comment) => {
|
||||
renderComment(comment, commentsNode, mastodonPostId);
|
||||
});
|
||||
}
|
||||
|
||||
renderComments();
|
||||
</script>
|
||||
{% endif %}
|
||||
|
@ -1,23 +1,44 @@
|
||||
<section class="postlist">
|
||||
{% if showPostListHeader %}<h2>{{ metadata.postlistHeaderText }}</h2>{% endif %}
|
||||
<div class="postlist-item-container">
|
||||
{% for post in postslist | reverse %}
|
||||
<article class="postlist-item{% if post.url == url %} postlist-item-active{% endif %}">
|
||||
<a href="{{ post.url }}" class="postlist-link">
|
||||
<div class="post-image-container">
|
||||
<img class="post-image" {% if post.data.imageURL %} src="{{ post.data.imageURL }}" alt="{{ post.data.imageAlt }}" {% else %} src="{{ metadata.defaultPostImageURL }}" alt="{{ metadata.defaultPostImageAlt }}"{% endif %}>
|
||||
</div>
|
||||
</a>
|
||||
<div class="post-copy">
|
||||
{% if showPostListHeader %}<h2>{{ metadata.postlistHeaderText }}</h2>{% endif %}
|
||||
<div class="postlist-item-container">
|
||||
{% for post in postslist | reverse %}
|
||||
<article class="postlist-item{% if post.url == url %} postlist-item-active{% endif %}">
|
||||
<a href="{{ post.url }}" class="postlist-link">
|
||||
<h3>
|
||||
{% if post.data.title %}{{ post.data.title }}{% else %}<code>{{ post.url }}</code>{% endif %}
|
||||
</h3>
|
||||
<div class="post-image-container">
|
||||
<img class="post-image" {% if post.data.imageURL %} src="{{ post.data.imageURL }}" alt="{{ post.data.imageAlt }}" {% else %} src="{{ metadata.defaultPostImageURL }}" alt="{{ metadata.defaultPostImageAlt }}"{% endif %}>
|
||||
</div>
|
||||
</a>
|
||||
<time class="postlist-date" datetime="{{ post.date | htmlDateString }}">{{ post.date | readableDate("LLLL yyyy") }}</time>
|
||||
{% if post.data.synopsis %}<p>{{ post.data.synopsis | truncate(105) | safe }}</p>{% else %}{{ post.data.description | truncate(105) | safe }}{% endif %}
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="post-copy">
|
||||
<a href="{{ post.url }}" class="postlist-link">
|
||||
<h3>
|
||||
{% if post.data.title %}{{ post.data.title | safe }}{% else %}<code>{{ post.url }}</code>{% endif %}
|
||||
</h3>
|
||||
</a>
|
||||
|
||||
<div class="post-metadata">
|
||||
<div class="post-metadata-copy">
|
||||
<p>
|
||||
{% if post.data.author %}
|
||||
{% if post.data.author.url %}<a href="{{ post.data.author.url }}">{% endif %}{% if post.data.author.name %}By {{ post.data.author.name }}{% endif %}{% if post.data.author.url %}</a> • {% endif %}{% else %}<a href="{{ metadata.author.url }}">By {{ metadata.author.name }}</a> • {% endif %}<time datetime="{{ post.date | htmlDateString }}">{{ post.date | niceDate }}</time>
|
||||
</p>
|
||||
<ul>
|
||||
{%- for tag in post.data.tags | filterTagList %}
|
||||
{%- set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||
<li>
|
||||
<a
|
||||
href="{{ tagUrl }}"
|
||||
class="post-tag">
|
||||
{{ tag }}
|
||||
</a>
|
||||
</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<hr>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
@ -5,7 +5,7 @@ eleventyNavigation:
|
||||
order: 2
|
||||
---
|
||||
<article>
|
||||
<h1>About me and my website.</h1>
|
||||
<h1>About me and my website.</h1>
|
||||
<p class="page-block nodropcap">I’m a prolific vegan home cook, classical trombonist, incense maker, a <abbr title="Free/Libre Open Source Software">FLOSS</abbr> enthusiast, daily GNU/Linux user and unabashed <a href="https://kde.org/">KDE</a> stan, designer, programmer, music producer, print lover, and human with too many interests and too little time. This is my little corner of the internet where I talk about whatever I like without worrying about maintaining a ‘personal brand’, or constraining subject matter to topics which might help advance my career or establish me as a ‘thought leader’. I’m here to express myself and have fun writing about topics I enjoy. If you’d like to learn more about my professional accomplishments and work, I’ll link my professional website here when I get around to it.</p>
|
||||
|
||||
<a href="./colophon/">
|
||||
|
@ -6,10 +6,10 @@ eleventyNavigation:
|
||||
key: Blog
|
||||
order: 3
|
||||
---
|
||||
<h1>Nathan’s blog.</h1>
|
||||
<h1>My personal blog.</h1>
|
||||
|
||||
<p class="page-block nodropcap">
|
||||
Thank you for visiting my blog; I write about lots of things here, from <a href="/tags/storytime">personal stories</a>, to <a href="/tags/gnu-linux">tech</a>, <a href="/tags/vegan-cooking">food</a>, and <a href="/tags/incense">incense</a>. Explore all posts below or <a href="/tags/">choose a topic</a>. Want to know what I've been reading? <a href="../blogroll/">Exlore the blogroll</a>.<br />
|
||||
I write about whatever I like here, from <a href="/tags/storytime">personal stories</a>, to <a href="/tags/gnu-linux">tech</a>, <a href="/tags/vegan-cooking">food</a>, and <a href="/tags/incense">incense</a>.<br />
|
||||
|
||||
<a href="/tags/">
|
||||
<button type="button">Topics »</button>
|
||||
|
88
content/blog/the-skinny-on-incense-stick-extruders.md
Normal file
@ -0,0 +1,88 @@
|
||||
---
|
||||
title: "The Skinny on Incense Stick Extruders"
|
||||
description: "The good, the bad, and the ugly of manual incense stick extruders."
|
||||
date: 2025-01-23
|
||||
tags:
|
||||
- Incense
|
||||
- Incense Making
|
||||
synopsis: "The good, the bad, and the ugly of manual incense stick extruders."
|
||||
imageURL: /img/extruders/extr3_3x_tip_compressed.webp
|
||||
imageAlt: "A close shot of an incense extruder tip with three extrusion holes."
|
||||
mastodon_id: "113879431946665708"
|
||||
author:
|
||||
url: "/me/"
|
||||
name: "Nathan Upchurch"
|
||||
profilePic: "/img/CN20191025_301_Srt_SQUARE_crop.jpg"
|
||||
---
|
||||
Given that hobbyist incense making hasn't exactly been all the rage since the tang dynasty, finding good incense-making equipment for small-scale home production can be a bit of a tribulation. If you make Chinese or Japanese style coreless incense, one of the first hurdles on the way to kitting out your very own mini incense workshop is choosing a manual extruder. Now that I finally feel confident that I've overcome this particular hurdle, here's what I've learned:
|
||||
|
||||
## Where to Find a Suitable Extruder
|
||||
When searching for manual extruders, the first thing you'll likely come across is something like a [Makin's](https://www.makins-usa.com/products.jsp?prod_catg_id=7) clay extruder. This style of extruder often comes with a series of small discs designed to extrude clay noodles of different diameters. These are best avoided; other incense makers have found that extruding incense through these flat discs tends to create noodles with [a coarse texture](https://youtu.be/snvDZbxHnU8?si=ap7oiw0iC_HQJhCy&t=245) that must be rolled smooth after extrusion. Omitting this style of extruder from your search *drastically* narrows your options, but searching "incense extruder" on the website of any major online retailer that dropships or stocks a large number of products from China is likely to net you results featuring extrusion tips better suited to incense making. If you are willing to wait a bit for delivery, however, rather than paying Walmart, Amazon, or Ebay a convenience tax, you will have no trouble finding manual extruders on AliExpress directly for much less of your hard-earned coin. Carl "The Incense Dragon" Neal also sells a [Makin's style extruder](https://www.theincensedragon.com/tools/p/incense-extruder-20) that includes a series of 3D-printed extrusion tips allowing smooth incense extrusion.
|
||||
|
||||
## Extruders I've Tried
|
||||
|
||||
### The Syringe-Style Extruder
|
||||
The internet is riddled with [syringe-style incense extruders](https://www.aliexpress.us/item/3256804771983263.html). Despite [Carl's warning regarding plastic extruders](https://youtu.be/snvDZbxHnU8?si=p59DxZMXcw64BHfi&t=278), I had to give one a go just to see for myself how they performed.
|
||||
|
||||
[](/img/extruders/extr1_compressed.webp)
|
||||
|
||||
I cannot recommend this style of extruder. When making incense dough, it's important to use as little water as possible to avoid excessive warping during the drying stage. When attempting to extrude dough of the usual level of hydration through a 2mm tip, I was physically unable to coax any dough whatsoever beyond the extrusion tip, and I am not a weak man. This extruder was a complete bust.
|
||||
|
||||
[](/img/extruders/extr1_tip_compressed.webp)
|
||||
|
||||
There are a range of metal extrusion tips readily available for these extruders, so someone must be using them for *something,* but I found them completely unsuited for my purposes.
|
||||
|
||||
### The Aluminum Option
|
||||
Also relatively easy to find, [these aluminum extruders](https://www.aliexpress.us/item/3256807354775579.html) are well-made and effective:
|
||||
|
||||
[](/img/extruders/extr2_compressed.webp)
|
||||
|
||||
So long as you keep the o-ring on the piston lubricated and your dough doesn't have any large chunks, the extrusion tip produces a nice, smooth noodle of incense dough, and the turning action greatly reduces the hand-strength required to operate the device.
|
||||
|
||||
[](/img/extruders/extr2_tip_compressed.webp)
|
||||
|
||||
There are a couple of small issues, namely that the caps on the turning rod can come unscrewed mid-batch if they aren't firmly screwed on, and the soft metal is prone to damage if you aren't careful. Despite these nitpicks, however, I have no hesitation in recommending this style of extruder to any incense maker focusing on thin coreless sticks.
|
||||
|
||||
### My First Stainless Steel Extruder
|
||||
As I've been working on scaling up my production to a level that would allow me to sell a few orders of incense here and there, my interest was sparked in [this stainless steel extruder on AliExpress](https://www.aliexpress.us/item/3256806453629799.html):
|
||||
|
||||
[](/img/extruders/extr3_compressed.webp)
|
||||
|
||||
Specifically, I hoped that the optional extrusion tip with three outlets and the vise accessory would allow me to speed up the extrusion process. I also liked the idea of a heavy-duty item that would last for many years. I bought the "high order style," which comes with four extrusion tips, a grip, some o-rings and small cleaning tools, and the extruder itself. I also ordered the three-outlet extrusion tip, and the "sucker holder," AKA a vacuum-base vise.
|
||||
|
||||
[](/img/extruders/extr3_3x_tip_compressed.webp)
|
||||
|
||||
To start, the three-hole extrusion tip worked, but as anyone who works with [larger manual extruders](https://www.aliexpress.us/item/3256807859213019.html?utparam-url=scene%3Asearch%7Cquery_from%3A) knows, the flow rate from each hole isn't necessarily even. This is less of a problem when you're extruding, say, six to twelve sticks at once at a proper station with a waste bucket and a stack of boards to catch the extruded incense, but when you're hand-cranking three sticks at a time and one is firing out like billy-oh, another is extruding at the usual rate, and the last seems frightened of daylight, you realize that you would have been better off just using a normal single-outlet tip.
|
||||
|
||||
[](/img/extruders/extr3_tip_compressed.webp)
|
||||
|
||||
The vise *was* useful, however; it's much more efficient to be able to keep the extruder in one place and have a free hand to catch the sticks on a board. The problem I faced with it was that in order to get the extruder to fit within the vise, I had to fasten an included aluminum ring around the main body of the extruder using two grub-screws. These grub screws cut into the grip on the tube, which eventually tore from the force applied during extrusion.
|
||||
|
||||
[](/img/extruders/vise_compressed.webp)
|
||||
|
||||
The extruder itself appeared to be assembled from mostly off-the-shelf parts, and not especially good ones. The rings that held the turning-rod in place rusted immediately after I got them a little wet, the threads were crunchy and coarse, and the interior of the dough-tube was very dirty. Perhaps most strangely of all, the piston, or plunger, that actually pushed the dough down the tube was not attached to the threaded rod at all, unlike the aluminum extruder.
|
||||
|
||||
[](/img/extruders/extr3_plunger_compressed.webp)
|
||||
|
||||
The plunger is made of mostly brass parts that screw together and a rubber o-ring. It's very thick, reducing room for dough, and the soft brass is rapidly worn away by the stainless steel threaded rod as it spins loosely down the dough tube during extrusion, leaving sparkly grit to get mixed into your next batch of incense. It continued to wear even after I had filed and sanded down the raised parts on the end of the threaded rod.
|
||||
|
||||
As a result of all this, the plunger becomes more worn with every use, the dough tube becomes covered in grime, and the extrusion action is crunchy and rough. I was *very* disappointed in this extruder, and I cannot recommend it. The silver lining here is the vise, which will work with any of the metal extruders listed; in my opinion it's a worthwhile purchase.
|
||||
|
||||
### My Current Extruder
|
||||
[This extruder](https://www.amazon.com/dp/B0DP3H8CCL) was an enigma. I hadn't seen it anywhere before it surfaced several pages deep into an Amazon search.
|
||||
|
||||
[](/img/extruders/extr4_compressed.webp)
|
||||
|
||||
I tried to find a Chinese source through a reverse image search. Tineye, Google, Bing, and Yandex turned up nothing. Only when I began to search the sales copy in the Amazon listing did I find the item for sale elsewhere ~~but I still never managed to find a single instance of this product being sold on AliExpress (if you manage to find one, [do let me know](/me/))~~.[^1]
|
||||
|
||||
It *looked* great: stainless steel; a knurled dough tube; various accessories included. The Amazon listing didn't show it, but when I looked at other listings I saw that the piston appeared to be attached to the threaded rod. Jackpot!
|
||||
|
||||
When it arrived, I noticed a few things immediately. The knurling was shallow and not especially neat, as though it had been etched twice over and the etchings didn't quite align. The tips shown weren't included; instead of five tapered tips in different sizes, I received three flat 2mm tips. That might be a deal-breaker for some, as I don't even know where you'd begin to find additional tips for this thing, but as I extrude 2mm sticks almost exclusively, I don't mind. I'm also not bothered by the ugly knurling either, because the performance of this extruder is great.
|
||||
|
||||
To begin with, the threaded rod isn't some industrial looking piece of hardware like the last stainless extruder; it looks more like a high-quality leadscrew you'd expect to see on a laser cutter or some other piece of CNC equipment where precise, measured movement is critical. This keeps the extrusion action exceptionally smooth. The threads on all of the other caps are also nicely machined, and the small extrusion tips have minimal space to accumulate wasted dough after a batch is extruded.
|
||||
|
||||
[](/img/extruders/extr4_tip_compressed.webp)
|
||||
|
||||
Fitted into my vise, this extruder is a dream. The smoothness and consistency of the extrusion makes one-handed operation a breeze. I did add some o-rings to the turning rod to reduce noise, and while I do find myself wishing it didn't fit quite so loosely inside the cap on the leadscrew, these really are nitpicks of the best extruder I've used to date.
|
||||
|
||||
[^1]: I have since found what appears to be the same item on [AliExpress](https://www.aliexpress.us/item/3256807712368107.html?utparam-url=scene%3Asearch%7Cquery_from%3A), [Taobao](https://vn.world.taobao.com/item/858074002289.htm), [Wepost](https://www.wepost.com.my/shops/taobao-items/554179126072.html?sku_properties=1627207:2846750301) (which has a [very dramatic video](https://cloud.video.taobao.com/play/u/719156502/p/2/e/6/t/1/440842077674.mp4) showing the extruder in operation), and [1688.com](https://detail.1688.com/offer/750437159209.html). Accessories also appear to be available through these sources.
|
@ -4,6 +4,13 @@ title: Nathan Upchurch | Changelog
|
||||
structuredData: none
|
||||
---
|
||||
# Changelog
|
||||
* 2025-1-23 - Simplify, simplify, simplify
|
||||
* Styling updates to text, figures, and post lists
|
||||
* Removed Mastodon comment embedding in favor of a simple button.
|
||||
* Removed "Read Next / Read Previous" cards beneath articles.
|
||||
* Prettier date formatting throughout.
|
||||
* 2025-1-13
|
||||
* Added [Popular Information](https://popular.info/) to the [blogroll](/blogroll).
|
||||
* 2024-12-16
|
||||
* Update PeerTube instance on [/me](/me).
|
||||
* 2024-12-15
|
||||
|
@ -33,7 +33,7 @@ permalink: "/feeds/{{ tag | slugify }}.xml"
|
||||
{% if post.data.imageURL %}{% set imageURL %}{{ post.data.imageURL | htmlBaseUrl(metadata.url) }}{% endset %}{% endif %}
|
||||
{% set defaultImageURL %}{{ metadata.defaultPostImageURL | htmlBaseUrl(metadata.url) }}{% endset %}
|
||||
<entry>
|
||||
<title>{{ post.data.title }}</title>
|
||||
<title>{{ post.data.title | safe }}</title>
|
||||
<description>{{ post.data.description | truncate(150) }}</description>
|
||||
<link href="{{ absolutePostUrl }}"/>
|
||||
<updated>{{ post.date | dateToRfc3339 }}</updated>
|
||||
@ -44,6 +44,7 @@ permalink: "/feeds/{{ tag | slugify }}.xml"
|
||||
<link href="{{ absolutePostUrl }}"/>
|
||||
</image>
|
||||
<content type="html">{{ post.templateContent | transformWithHtmlBase(absolutePostUrl, post.url) }}</content>
|
||||
<hr>
|
||||
</entry>
|
||||
{%- endfor %}
|
||||
</feed>
|
||||
|
@ -4,9 +4,9 @@ eleventyNavigation:
|
||||
key: Pics
|
||||
order: 4
|
||||
---
|
||||
<h1>Image Galleries</h1>
|
||||
<h1>My image galleries.</h1>
|
||||
<p class="page-block nodropcap">
|
||||
Some pictures I thought would be worth posting.
|
||||
Photography trips, memes, and other pictures I thought would be worth sharing.
|
||||
</p>
|
||||
<section class="postlist">
|
||||
<div class="postlist-item-container">
|
||||
@ -23,10 +23,15 @@ Some pictures I thought would be worth posting.
|
||||
{{ gallery.title }}
|
||||
</h3>
|
||||
</a>
|
||||
<time class="postlist-date" datetime="{{ gallery.date | htmlDateString}}">{{ gallery.date | readableDate("LLLL yyyy") }}</time>
|
||||
<p>{{ gallery.synopsis | truncate(105) | safe }}</p>
|
||||
<div class="post-metadata">
|
||||
<div class="post-metadata-copy">
|
||||
<p>Posted on the <time class="postlist-date" datetime="{{ gallery.date | htmlDateString}}">{{ gallery.date | niceDate("LLLL yyyy") }}</time></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<hr>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
@ -3,7 +3,7 @@ layout: layouts/home.njk
|
||||
eleventyNavigation:
|
||||
key: Home
|
||||
order: 1
|
||||
numberOfLatestPostsToShow: 5
|
||||
numberOfLatestPostsToShow: 3
|
||||
numberOfNowPostsToShow: 1
|
||||
---
|
||||
<div class="now">
|
||||
@ -14,11 +14,15 @@ numberOfNowPostsToShow: 1
|
||||
{% set postslistCounter = postsCount %}
|
||||
{% set showPostListHeader = false %}
|
||||
{% include "postslist.njk" %}
|
||||
|
||||
{% set morePosts = postsCount - numberOfNowPostsToShow %}
|
||||
{% if morePosts > 0 %}
|
||||
<a href="/now/">
|
||||
<button type="button">
|
||||
See more on the “now” page »
|
||||
See {{ morePosts }} more »
|
||||
</button>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% set postsCount = collections.posts | length %}
|
||||
@ -32,7 +36,10 @@ numberOfNowPostsToShow: 1
|
||||
{% if morePosts > 0 %}
|
||||
<a href="/blog/">
|
||||
<button type="button">
|
||||
See {{ morePosts }} more post{% if morePosts != 1 %}s{% endif %} in the blog »
|
||||
See {{ morePosts }} more »
|
||||
</button>
|
||||
</a>
|
||||
</a>
|
||||
{% endif %}
|
||||
<a href="/tags/">
|
||||
<button type="button">Topics »</button>
|
||||
</a>
|
||||
|
@ -4,12 +4,12 @@ title: Nathan Upchurch | Now
|
||||
structuredData: none
|
||||
---
|
||||
<article class="post">
|
||||
<h1>Now: What’s Been Going on Lately?</h1>
|
||||
<h1>Now: Life updates.</h1>
|
||||
{% set now = collections.now | last %}
|
||||
<h2>{{ now.data.title }}</h2>
|
||||
{{ now.content | safe }}
|
||||
</article>
|
||||
<p class="metadata">Updated: {{ now.date | readableDate }} | <a href="https://nownownow.com/about">What is a now page?</a></p>
|
||||
<p class="metadata">Updated on the {{ now.date | niceDate }} by {{ metadata.author.name }} | <a href="https://nownownow.com/about">What is a now page?</a></p>
|
||||
|
||||
{% set postsCount = collections.now | removeMostRecent | length %}
|
||||
{% if postsCount > 1 %}
|
||||
|
23
content/now/now_2025-01-23.md
Normal file
@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Welp, it's a New Year.
|
||||
description: …and what a year it's been already.
|
||||
synopsis: …and what a year it's been already.
|
||||
date: 2025-01-23
|
||||
imageURL: /img/IMG_20250122_172636_762_copy.webp
|
||||
imageAlt: A closeup of a Braun wristwatch.
|
||||
---
|
||||
[Trump has been inaugurated](https://thehill.com/homenews/administration/5097933-trump-ymca-dance-inaugural-ball/); Elon Musk is [performing Nazi salutes](https://www.politico.eu/article/elon-musk-salute-sparks-fury-from-europe-left-wing/) in public, the U.S. is [withdrawing from the Paris Agreement](https://www.npr.org/2025/01/21/nx-s1-5266207/trump-paris-agreement-biden-climate-change), the White House Spanish-language pages have been [shut down](https://www.pbs.org/newshour/politics/trump-adminstration-shuts-down-white-house-spanish-language-page-and-social-media), [whitehouse.gov](https://www.whitehouse.gov/) now features some sort of [onanistic hyper-nationalist movie trailer](https://www.wired.com/story/white-house-website-marvel-movie-trailer-helicopters-bald-eagle/), the federal government is [officially hostile](https://19thnews.org/2025/01/trump-transgender-executive-order/) to [transgender people](https://19thnews.org/2025/01/trump-executive-order-transgender-military-ban/), the Trump administration has [ended birthright citizenship](https://19thnews.org/2025/01/birthright-citizenship-lawsuit-pregnant-women/), immigrants are [hiding in their homes](https://www.chicagotribune.com/2025/01/21/immigrants-skip-work-amid-ice-fears/) for fear of arrest and deportation, an official government website has a god-damn [Shiba Inu meme](https://abcnews.go.com/Politics/wireStory/trump-made-doge-part-government-117981045) on it (along with an ASCII version in the page source), more than half of U.S. citizens [read below a sixth-grade level](https://www.snopes.com/news/2022/08/02/us-literacy-rate/) (that's the level expected of a twelve-year-old), capitalism is still steamrolling ahead just about everywhere, people are still eating cute, fluffy animals even though beans exist, you're now officially, explicitly, [allowed to call LGBTQ+ people mentally ill](https://www.axios.com/2025/01/09/meta-moderation-transgender-women-hate) on Facebook, Threads, and Instagram, and the planet is burning.
|
||||
|
||||
Anyway, the *now* section of my website is supposed to be a bit less existential, so here's what I've been up to:
|
||||
|
||||
I spent much of the end of the year working four-day workweeks, which, my friends, is the way to go. I miss those short weeks already. After that, I had a Christmas celebration with Sol's folks, which, despite a minor medical emergency was a nice time. I am happy to say that the person affected is recovering well. I gave some hand-made incense for presents, and I got some very useful things from my [wishlist](/wishlist/), including a Braun wall-clock so that I can tell the time when I'm doing dishes or otherwise can't access, or don't want to be distracted by, my phone.
|
||||
|
||||
One thing I'm trying to focus on in this new year is being less salty. I'm trying to accept people as they come, and regain the calm that I used to be able to retain in the face of great stupidity. Goodness knows there are people in this world who offer me this grace, so I intend to get some practice in offering it to others.
|
||||
|
||||
I've started [a forum](https://incensemakers.org/) for the fine folks of the incense-makers Instagram group. I'm very much hoping it takes off, because not only will it be a better, safer, and more useful way to catalog our shared knowledge, but it might mean that I can once again leave Instagram as the group is literally the only reason I'm on the platform. I'm also hoping that I don't wind up having to do much troubleshooting; we will see.
|
||||
|
||||
I am also working towards the [Google data analytics professional certificate](https://www.coursera.org/professional-certificates/google-data-analytics) because it seems like it ought to be fun, especially learning SQL (which I refuse to pronounce *sequel*) and R. If it turns out to be useful career-wise, great, but that's not why I'm doing it.
|
||||
|
||||
|
||||
|
||||
[^1]: And no, I don't mean give a portion to charity. The fact that you are rich should not mean that you get an outsized say in what issues get addressed. Get over yourself.
|
@ -4,10 +4,10 @@ layout: layouts/base.njk
|
||||
title: Nathan Upchurch | Tags
|
||||
structuredData: none
|
||||
---
|
||||
<h1>Here are some things I like to talk about.</h1>
|
||||
<h1>Some things I like to talk about:</h1>
|
||||
|
||||
<p class="page-block nodropcap">
|
||||
Click on a tag to see all posts on the topic.
|
||||
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">
|
||||
|
@ -16,7 +16,6 @@ If, however, *not* getting me a gift seems unconscionable, as best as I can dete
|
||||
If, like my mother, the non-consumable items below seem too boring to you to satisfy the gift-giving itch, I'd always be delighted to receive anything from the [tea](#Tea), [edible](#Edible), or [incense](#Incense) sections.
|
||||
|
||||
## ADHD proofing / accessibility
|
||||
* [A Braun wall clock](https://www.amazon.com/Braun-Analogue-Sweeping-Movement-Diameter/dp/B0CJFWHJQX?th=1) - A couple of wall clocks in the house would be great for keeping an eye on the time without needing to extract my phone from my pocket, risking distraction, especially when my hands are buried in a sink full of dishes or covered in incense dough.
|
||||
* [A door organizer](https://www.amazon.com/Delamu-Organizers-Organization-Essentials-D5xW18xH50/dp/B0C4LPSQP3?th=1)
|
||||
* [A lid organizer for food containers](https://www.amazon.com/dp/B07FNRXFTD/?psc=1)
|
||||
* [Drawer organizing containers](https://www.amazon.com/dp/B07F7K5DP1/?th=1)
|
||||
@ -31,7 +30,6 @@ If, like my mother, the non-consumable items below seem too boring to you to sat
|
||||
* [Transactual](https://transactual.org.uk/) - A trans-led UK based organization working towards a world where trans people can live safely, in dignity and with access to the healthcare they need.
|
||||
|
||||
## Edible
|
||||
* [Smoked finishing salt](https://www.amazon.com/Maldon-Smoked-Salt-Flakes-Ounce/dp/B00CMX5BVQ) - a beautiful way to finish a dish, and I'm fresh out.
|
||||
* Vegan haggis - I just miss haggis, and I remember vegan / vegetarian haggis being quite good. I did make a batch of my own once with TVP and it was nice, but it took ages to make.
|
||||
* Vegan mooncakes from [Little Moon Bakehouse](https://littlemoonbakehouse.com/)
|
||||
|
||||
@ -49,7 +47,6 @@ If, like my mother, the non-consumable items below seem too boring to you to sat
|
||||
|
||||
## Incense making
|
||||
* [Oak moss](https://www.amazon.com/Oak-Moss-Herb-Natural-Prunastri/dp/B0B4KL6WSJ)
|
||||
* [One of those terrifying Chinese grinders](https://www.amazon.com/dp/B09ZPGRSZ9/?th=1) - for grinding woods to powder.
|
||||
* [Powdered ruffle lichen / dagad phool](https://www.amazon.com/dp/B0BYB8XVPZ/?psc=1)
|
||||
* [Vacuum filtration kit](https://www.amazon.com/dp/B09LB81M25/?psc=1) - For washing the gums off of resins.
|
||||
|
||||
|
@ -13,7 +13,7 @@ import {
|
||||
dateSuffixAdder,
|
||||
monthMap,
|
||||
timeFormatter,
|
||||
} from "./public/js/modules/mastodonDateTools.js";
|
||||
} from "./public/js/modules/dateTools.js";
|
||||
|
||||
const figoptions = {
|
||||
figcaption: true,
|
||||
@ -74,11 +74,12 @@ export default async function (eleventyConfig) {
|
||||
eleventyConfig.addPlugin(pluginBundle);
|
||||
|
||||
// Filters
|
||||
eleventyConfig.addFilter("readableDate", (dateObj, format, zone) => {
|
||||
// Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens
|
||||
return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }).toFormat(
|
||||
format || "dd LLLL yyyy",
|
||||
);
|
||||
eleventyConfig.addFilter("niceDate", (date) => {
|
||||
var day = new Date(date).getUTCDate();
|
||||
var monthIndex = new Date(date).getUTCMonth();
|
||||
var year = new Date(date).getUTCFullYear();
|
||||
|
||||
return `${day}${dateSuffixAdder(day)} of ${monthMap[monthIndex]}, ${year}`;
|
||||
});
|
||||
|
||||
eleventyConfig.addFilter("htmlDateString", (dateObj) => {
|
||||
|
@ -20,9 +20,10 @@
|
||||
Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono,
|
||||
Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New,
|
||||
Courier, monospace;
|
||||
--meta-font-family: "Fraunces", serif;
|
||||
--meta-font-size: var(--step--1);
|
||||
--meta-font-family: "Manrope", sans-serif;
|
||||
--meta-font-size: var(--step--2);
|
||||
--meta-font-style: normal;
|
||||
--meta-font-variation-settings: "wght" 500;
|
||||
--ui-letter-spacing: calc(var(--space-3xs) * 0.5);
|
||||
}
|
||||
|
||||
@ -51,7 +52,7 @@
|
||||
--color-gray-20: #e0e0e0;
|
||||
--color-gray-90: #333333;
|
||||
|
||||
--card-color: white;
|
||||
--card-color: rgba(250, 250, 250, 1);
|
||||
--contrast-color: #027860;
|
||||
--background-color: #faf5f5;
|
||||
--rss-orange: rgb(255, 152, 0);
|
||||
@ -156,7 +157,7 @@
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--color-gray-20: #e0e0e0;
|
||||
--color-gray-20: #253848;
|
||||
--color-gray-90: #dad8d8;
|
||||
--card-color: #333333;
|
||||
--contrast-color: #04c49e;
|
||||
@ -270,6 +271,9 @@ nav {
|
||||
grid-column: var(--span-grid);
|
||||
padding-bottom: var(--space-l);
|
||||
}
|
||||
ol {
|
||||
padding-left: 0;
|
||||
}
|
||||
section {
|
||||
display: grid;
|
||||
grid-column: var(--span-grid);
|
||||
@ -291,10 +295,10 @@ section {
|
||||
}
|
||||
.page-block {
|
||||
grid-column: var(--span-grid);
|
||||
font-size: var(--step-1);
|
||||
/* font-size: var(--step-1); */
|
||||
margin: 0;
|
||||
padding-bottom: var(--space-l);
|
||||
line-height: calc(var(--step-1) * 0.5 + var(--step-1));
|
||||
/*line-height: calc(var(--step-1) * 0.5 + var(--step-1));*/
|
||||
&:has(+ a > button) {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
@ -302,12 +306,11 @@ section {
|
||||
ul {
|
||||
margin: 0;
|
||||
grid-column: var(--span-grid);
|
||||
padding-bottom: var(--space-s);
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration-color: var(--contrast-color);
|
||||
text-decoration-thickness: var(--link-decoration-thickness);
|
||||
/*text-decoration-thickness: var(--link-decoration-thickness);*/
|
||||
transition: var(--transition-normal);
|
||||
}
|
||||
/* https://www.a11yproject.com/posts/how-to-hide-content/ */
|
||||
@ -346,9 +349,9 @@ h1 {
|
||||
"wght" 500,
|
||||
"SOFT" 10,
|
||||
"WONK" 1;
|
||||
font-size: var(--step-5);
|
||||
font-size: var(--step-4);
|
||||
font-style: normal;
|
||||
line-height: calc(var(--step-5) * 0.25 + var(--step-5));
|
||||
line-height: calc(var(--step-4) * 0.25 + var(--step-4));
|
||||
padding-bottom: var(--space-l);
|
||||
}
|
||||
h2 {
|
||||
@ -417,7 +420,7 @@ figure > div > iframe {
|
||||
border-top-left-radius: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
box-shadow: var(--space-2xs) var(--space-2xs) 0 0 var(--contrast-color);
|
||||
/* box-shadow: var(--space-2xs) var(--space-2xs) 0 0 var(--contrast-color); */
|
||||
}
|
||||
|
||||
html.barebones,
|
||||
@ -429,7 +432,7 @@ body.barebones {
|
||||
figcaption {
|
||||
font-size: var(--step--1);
|
||||
font-style: italic;
|
||||
padding-top: var(--space-s);
|
||||
padding-top: var(--space-3xs);
|
||||
text-align: center;
|
||||
strong {
|
||||
font-variation-settings: "wght" 600;
|
||||
@ -444,7 +447,7 @@ button {
|
||||
font-variation-settings: var(--font-variation-ui);
|
||||
letter-spacing: var(--ui-letter-spacing);
|
||||
margin: var(--space-xl) 0 0 0;
|
||||
padding: var(--space-2xs) var(--space-xs);
|
||||
padding: 0 var(--space-xs);
|
||||
text-transform: uppercase;
|
||||
transition: var(--transition-normal);
|
||||
white-space: nowrap;
|
||||
@ -621,15 +624,16 @@ code {
|
||||
content: " ";
|
||||
}
|
||||
}
|
||||
hr.footnotes-sep {
|
||||
hr {
|
||||
border: var(--border-hr);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Dropcap */
|
||||
main > section > article > p:not(.nodropcap):first-of-type:first-letter {
|
||||
float: left;
|
||||
font-size: var(--step-6);
|
||||
padding: 0.5rem 0.5rem 0.5rem 0.5rem;
|
||||
font-size: var(--step-5);
|
||||
padding: var(--space-2xs);
|
||||
color: var(--contrast-color);
|
||||
border: solid 2px var(--contrast-color);
|
||||
font-family: var(--font-family-headline);
|
||||
@ -721,48 +725,49 @@ nav ul {
|
||||
}
|
||||
|
||||
/* Posts list */
|
||||
.postlist-item-container {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
gap: var(--space-xl);
|
||||
}
|
||||
.postlist-item {
|
||||
align-items: flex-start;
|
||||
background-color: var(--card-color);
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: flex-start;
|
||||
padding: var(--space-m) 1.1rem var(--space-m) 1.1rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.postlist,
|
||||
.links-nextprev {
|
||||
container: postlist / inline-size;
|
||||
}
|
||||
|
||||
.postlist-item {
|
||||
align-items: flex-start;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
}
|
||||
.postlist-item-container {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
gap: var(--space-s);
|
||||
}
|
||||
.post-image {
|
||||
width: var(--space-4xl);
|
||||
height: var(--space-4xl);
|
||||
object-fit: cover;
|
||||
object-position: 50% 50%;
|
||||
}
|
||||
.post-image-container {
|
||||
border-radius: var(--border-radius);
|
||||
box-shadow: var(--box-shadow);
|
||||
height: 15rem;
|
||||
margin-left: calc(var(--space-l) * -1);
|
||||
max-height: 15rem;
|
||||
height: var(--space-4xl);
|
||||
max-height: var(--space-4xl);
|
||||
overflow: hidden;
|
||||
width: 15rem;
|
||||
width: var(--space-4xl);
|
||||
}
|
||||
|
||||
.postlist-date,
|
||||
.postlist-item:before {
|
||||
color: var(--color-gray-90);
|
||||
font-size: var(--meta-font-size); /* 13px /16 */
|
||||
font-size: var(--meta-font-size);
|
||||
/*margin: var(--space-2xs) 0;*/
|
||||
}
|
||||
.postlist-date {
|
||||
word-spacing: -0.5px;
|
||||
}
|
||||
.postlist-link {
|
||||
font-size: var(--step-5); /* 19px /16 */
|
||||
font-size: var(--step-5);
|
||||
padding-right: 0.5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
@ -785,53 +790,31 @@ nav ul {
|
||||
display: flex;
|
||||
flex-flow: column wrap;
|
||||
}
|
||||
.post-image {
|
||||
width: 15rem;
|
||||
height: 15rem;
|
||||
object-fit: cover;
|
||||
object-position: 50% 50%;
|
||||
}
|
||||
|
||||
sup {
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
@container postlist (max-width: 500px) {
|
||||
.postlist-item {
|
||||
flex-flow: column wrap;
|
||||
}
|
||||
.post-image-container {
|
||||
margin-left: 0;
|
||||
margin-top: calc(var(--space-l) * -1);
|
||||
width: 100%;
|
||||
}
|
||||
.post-image-container img.post-image {
|
||||
width: calc(100cqw - var(--space-m));
|
||||
}
|
||||
.postlist-link {
|
||||
padding: 0;
|
||||
}
|
||||
.postlist-link h3 {
|
||||
padding-top: var(--space-m);
|
||||
}
|
||||
.postlist-link p {
|
||||
margin-top: var(--space-xs);
|
||||
}
|
||||
}
|
||||
|
||||
/* Tags */
|
||||
a.post-tag {
|
||||
color: var(--text-color-tag);
|
||||
padding-right: var(--space-5xs);
|
||||
background-color: var(--color-gray-20);
|
||||
border-radius: 1rem;
|
||||
color: var(--text-color);
|
||||
font-family: var(--meta-font-family);
|
||||
font-variation-settings: "wght" 300;
|
||||
margin-top: var(--space-3xs);
|
||||
margin-right: var(--space-3xs);
|
||||
padding: 0 var(--space-3xs);
|
||||
text-decoration: none;
|
||||
}
|
||||
a.post-tag:before {
|
||||
content: "#";
|
||||
}
|
||||
a.post-tag:visited {
|
||||
color: var(--text-color-tag);
|
||||
color: var(--text-color);
|
||||
}
|
||||
a.post-tag:hover {
|
||||
color: var(--text-color-tag);
|
||||
color: var(--text-color);
|
||||
}
|
||||
.tag-feed-icon {
|
||||
fill: var(--rss-orange);
|
||||
@ -849,11 +832,10 @@ a.post-tag:hover {
|
||||
list-style-type: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
.taglist li {
|
||||
margin: 0em 0.5em 1.25em 0em;
|
||||
}
|
||||
.taglist li a {
|
||||
font-size: var(--step-2);
|
||||
display: inline-block;
|
||||
font-size: var(--step--1);
|
||||
margin: 0 var(--space-2xs) var(--space-2xs) 0;
|
||||
}
|
||||
|
||||
.postlist-item > .post-tag {
|
||||
@ -871,7 +853,6 @@ a.post-tag:hover {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: center;
|
||||
padding-left: var(--space-s);
|
||||
}
|
||||
|
||||
.post-metadata p,
|
||||
@ -881,23 +862,50 @@ time,
|
||||
.metadata {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
font-family: var(--meta-font-family);
|
||||
font-size: var(--meta-font-size);
|
||||
font-style: var(--meta-font-style);
|
||||
font-variation-settings: var(--meta-font-variatoin-settings);
|
||||
line-height: calc(var(--step--1) * 0.5 + var(--step--1));
|
||||
font-variation-settings: var(--meta-font-variation-settings);
|
||||
line-height: calc(var(--meta-font-size) * 0.5 + var(--meta-font-size));
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
.post-metadata time {
|
||||
.post-metadata {
|
||||
padding-left: 0.15rem;
|
||||
}
|
||||
|
||||
@container postlist (max-width: 500px) {
|
||||
.postlist-item {
|
||||
flex-flow: column wrap;
|
||||
}
|
||||
.post-image-container {
|
||||
margin-left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.post-image-container img.post-image {
|
||||
width: 100cqw;
|
||||
}
|
||||
.postlist-link {
|
||||
padding: 0;
|
||||
}
|
||||
.postlist-link h3 {
|
||||
padding-top: var(--space-m);
|
||||
}
|
||||
.postlist-link p {
|
||||
margin-top: var(--space-xs);
|
||||
}
|
||||
.post-metadata {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.profilePic:not(.links-container > img.profilePic) {
|
||||
height: var(--space-xl);
|
||||
width: var(--space-xl);
|
||||
border-radius: 100%;
|
||||
height: var(--space-xl);
|
||||
margin-right: var(--space-s);
|
||||
width: var(--space-xl);
|
||||
}
|
||||
|
||||
/* Direct Links / Markdown Headers */
|
||||
|
BIN
public/img/IMG_20250122_172636_762_copy.webp
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
public/img/extruders/extr1_compressed.webp
Normal file
After Width: | Height: | Size: 534 KiB |
BIN
public/img/extruders/extr1_tip_compressed.webp
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/img/extruders/extr2_compressed.webp
Normal file
After Width: | Height: | Size: 527 KiB |
BIN
public/img/extruders/extr2_tip_compressed.webp
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
public/img/extruders/extr3_3x_tip_compressed.webp
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
public/img/extruders/extr3_compressed.webp
Normal file
After Width: | Height: | Size: 505 KiB |
BIN
public/img/extruders/extr3_plunger_compressed.webp
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
public/img/extruders/extr3_tip_compressed.webp
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
public/img/extruders/extr4_compressed.webp
Normal file
After Width: | Height: | Size: 529 KiB |
BIN
public/img/extruders/extr4_tip_compressed.webp
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
public/img/extruders/vise_compressed.webp
Normal file
After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 85 KiB |