Compare commits

...

22 Commits

Author SHA1 Message Date
0b9b30f6c2 Blah 2024-08-13 21:57:03 -05:00
e4f4a0ba26 Add masto ID 2024-08-05 09:26:26 -05:00
db56e011eb Add article 2024-08-04 21:02:38 -05:00
54bd9ad9ec Fix typo 2024-08-04 21:02:31 -05:00
3d672ce033 Edit index page 2024-08-04 21:02:11 -05:00
2c93d9199e Styling updates; Add author image to posts
mastodon comments inside cards, added fleuron to indicate end of article
2024-08-04 19:01:05 -05:00
621ad15006 Add more closely cropped author profile pic 2024-08-04 18:58:35 -05:00
345a62ea47 Add article 2024-08-04 18:58:07 -05:00
cdb82fe827 Article correction 2024-07-31 10:48:24 -05:00
7f80d0615c Fix fluid scaling 2024-07-28 23:34:11 -05:00
2913703074 Fix punctuation 2024-07-28 23:33:56 -05:00
777d33a4bb Add article 2024-07-28 23:33:37 -05:00
0cdf1e297b Add masto ID to "poison" 2024-07-16 18:48:48 -05:00
b09aa47d06 Add new post 2024-07-16 18:35:01 -05:00
7b00d49d43 Style blockquotes 2024-07-16 18:34:51 -05:00
62f6268651 Fix mastodon comment author URL 2024-07-16 18:34:31 -05:00
0387793868 update readme 2024-07-09 12:58:50 -05:00
ed1acf8cc8 update readme 2024-07-09 12:33:53 -05:00
bd04a9be19 Fix broken link 2024-07-09 12:30:44 -05:00
77067c7e01 update readme 2024-07-09 12:24:21 -05:00
ccdaea6d80 update readme 2024-07-09 12:19:41 -05:00
836463ad92 Move docs to wiki; update readme 2024-07-09 12:15:30 -05:00
27 changed files with 327 additions and 149 deletions

View File

@@ -1,69 +1,37 @@
# nathanupchurch.com
My blog, based on the very helpful eleventy-base-blog v8.
# My 11ty Blog
My blog, originally based on the very helpful eleventy-base-blog v8, although it has come a long way from its humble beginnings. For documentation, check [the wiki](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki).
![](https://upchur.ch/piwigo/i.php?/upload/2023/09/22/20230922131353-32037f24-la.png)
## Features
### Design
* Fluid type and spacing systems for responsive pages with zero breakpoints
* Dark mode
* Graceful but unobtrusive page transitions
* Pretty variable typefaces
* Pretty 401 and 403 error pages
## Documentation
### Fediverse Integration
* Mastodon [toot embedding](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki/Home#embed-a-toot-from-mastodon-using-the-toot-shortcode)
* [Commenting](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki/Home#adding-comments-via-mastodon) via Mastodon
### Metadata
Site metadata such as author info, title, etc. lives in _data/metadata.js. Links on the /me page, and default post images are also configured here.
### Indieweb
* [Auto-generated linktree-style page](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki#me) for the blog owner with support for custom attributes such as: `rel="me"`
* Built in support for [webring links](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki#webrings)
* Auto-generated, **styled** RSS feeds
* All blog posts
* Each individual tag
* /now page that nicely handles posts tagged with "now"
#### /me
Links at /me are configured in `metadata.js` like so:
``` javascript
socialLinks: [
{
title: "My Blog",
linkURL: "https://nathanupchurch.com",
linkDisplay: "My Blog",
iconURL: "/img/logo.svg"
}
]
```
Any links added here will render on the /me page.
### Technical
* Reusable web components:
* Card
* Mastodon comment
* Profile picture
* Embedded toot
#### Webrings
Webrings configured in `metadata.js` will display in the footer of most pages beneath the copyright notice:
``` javascript
webrings: [
{
name: "Fediring",
ringURL: "https://fediring.net/",
previousURL: "https://fediring.net/previous?host=nathanupchurch.com",
nextURL: "https://fediring.net/next?host=nathanupchurch.com"
}
]
```
Any links added here will render on the /me page.
### Quality of Life
* Copyright notice, default post image, alt text, and author details defined in `metadata.js`.
* "Read Next" highlighting the previous blog post at the bottom of every post
* robots.txt tells AI scrapers to GTFO
### Add a cowsay to a post
You can use the `cowsay` filter to output a captioned `<figure>` containing a copy of an output from the cowsay program. Instead of using the usual three backticks, this method is accessible to visually impaired users thanks to the automatic captioning. Here's how to do it:
1. Add a copy of the cowsay output you'd like to display to _data/cowList.js. Be sure and escape any backslashes.
2. Use the filter like this: `{{ cowList.name | cowsay | safe }}`.
The `safe` filter is necessary so that Eleventy doesn't sanitize our HTML.
### Embed a toot in a post
Embed a toot from Mastodon using the `toot` shortcode:
```
{% toot "instance", "tootID" %}
```
For example:
```
{% toot "lounge.town", "112672230453089386" %}
```
Embedded toots are live, so if the toot or instance is not reachable, the toot will not be shown on the page. I haven't built any error handling for this yet.
### Adding comments via Mastodon
Simply add a toot ID to a post's frontmatter using the `mastodon_id` key in order to enable commenting via Mastodon:
```
mastodon_id: "111688829907363670"
```
The toot at the given ID will be embedded in a comment section at the bottom of the post; users can reply to the post on Mastodon and their replies will automatically be embedded on the post.
Like embedding a toot, comments are live and rely on the instance and toots / comments to be reachable on the remote server.
I also have not added any error handling for this, nor have I added any sort of moderation at this point.
### Weird and Wonderful
* [Accessible cowsay output embedding](https://upchur.ch/gitea/n_u/nathanupchurch.com/wiki#add-a-cowsay-to-a-post)

View File

@@ -8,7 +8,7 @@ export default {
name: "Nathan Upchurch",
email: "blog@upchur.ch",
url: "https://nathanupchurch.com/me",
profilePic: "/img/CN20191025_301_Srt_SQUARE.jpg"
profilePic: "/img/CN20191025_301_Srt_SQUARE_crop.jpg"
},
copyrightNotice: "© Nathan Upchurch 2022 - 2024",
defaultPostImageURL: "/img/vasilina-sirotina-1NMPvajSt9Q-unsplash_copy.avif",

View File

@@ -2,7 +2,7 @@
layout: layouts/base.njk
showPostListHeader: yep
---
<h1>Welcome to Nathans Website and Blog.</h1>
<p class="nodropcap page-block">Hi there, Im Nathan Upchurch. Welcome to my personal website and blog, where I write about tech, free and open source software, design, vegan cooking, incense, music, and all sorts of <a href="/tags">other topics</a> that I find interesting. Learn more <a href="about">about me</a>, see <a href="now">what Ive been up to lately</a>, or have a look at my latest posts below.</p>
<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 <a href="./tags/incense/">incense,</a> <a href="./tags/foss-floss/">free and open source software,</a> design, <a href="./tags/vegan-cooking/">vegan cooking,</a> music, and all sorts of <a href="/tags">other topics</a> that I find interesting. Learn more <a href="about">about me,</a> see <a href="now">what Ive been up to lately,</a> or have a look at my latest blog posts below.</p>
{{ content | safe }}

View File

@@ -8,12 +8,18 @@ layout: layouts/base.njk
{% if not hideMetadata %}
<div class="post-metadata">
{% if author %}
{% if author.profilePic %}
<img class="profilePic" src="{{ author.profilePic }}">
{% endif %}
<div class="post-metadata-copy">
<p>{% if author.url %}<a href="{{ author.url }}">{% endif %}
{% if author.name %}{{ author.name }},&nbsp;{% endif %}{% if author.url %}</a>{% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></p>
{% else %}
{% if metadata.author.profilePic %}
<img class="profilePic" src="{{ metadata.author.profilePic }}">
{% endif %}
<div class="post-metadata-copy">
<p>{% if metadata.author.url %}<a href="{{ metadata.author.url }}">{% endif %}
{% if metadata.author.name %}{{ metadata.author.name }},&nbsp;{% endif %}{% if metadata.author.url %}</a>{% endif %}<time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></p>
@@ -32,6 +38,7 @@ layout: layouts/base.njk
</li>
{%- endfor %}
</ul>
</div>
</div>
{% endif %}
{{ content | safe }}

View File

@@ -15,6 +15,7 @@
</section>
<template id="comment-template">
<wc-card>
<wc-comment
author_name=""
author_url=""
@@ -23,6 +24,7 @@
publish_date=""
sharp_corner="">
</wc-comment>
</wc-card>
</template>
<script type="module">
@@ -38,8 +40,7 @@ const renderComment = (comment, target, parentIdm) => {
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.account.acct == "{{ metadata.mastodonUser }}" ? "https://{{ metadata.mastodonHost }}/@{{ metadata.mastodonUser }}" : comment.account.acct}`);
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);

View File

@@ -6,8 +6,7 @@ eleventyNavigation:
---
<article>
<h1>About me and this website Ive built.</h1>
<h2>All about Nathan</h2>
<p>Im a prolific vegan home cook, classical trombonist, 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, speaker of subpar elementary Spanish, incense appreciator, writer, electronics hobbyist, designer, programmer, music producer, print lover, and human with too many interests and too little time.</p>
<p>Im a prolific vegan home cook, classical trombonist, 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, speaker of subpar elementary Spanish, incense maker and appreciator, writer, electronics hobbyist, designer, programmer, music producer, print lover, and human with too many interests and too little time.</p>
<p>This is my personal website and blog, a little corner of the internet where I can talk about whatever I like without worrying about maintaining a personal brand, or constraining subject matter to those topics which might help advance my career or establish me as a thought leader. Im here to express myself as a human and have fun writing about topics I enjoy. If youd like to learn more about my professional accomplishments and work, Ill link my professional website here soon.</p>

View File

@@ -0,0 +1,57 @@
---
title: "Grand Dame: A Breakthrough Incense Blend?"
description: "An attempt at a lavender incense stick goes remarkably well thanks to an unusual technique."
date: 2024-07-28
tags:
- Incense
synopsis: "An attempt at a lavender incense stick goes remarkably well thanks to an unusual technique."
imageURL: /img/sending-incense-samples.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.
mastodon_id: "112867886475498806"
---
I wrote two letters today, sealing each into a cotton envelope alongside a colorful cardboard straw, taped at both ends, containing two minuscule sticks of incense. I'm very excited about what's in those straws: incense sticks resulting from a blend I've dubbed *Grand Dame.*
---
*A quick note:
You can [see everything I've written on incense here,](../../tags/incense/) or [subscribe to just incense posts via RSS.](../../feeds/incense.xml)*
*Correction: When this article was first published, I wrongly attributed the suggestion that Yi-Xin's "Heart of Lavender" isn't likely to use lavender essential oil to Irene of [rauchfahne.de](https://blog.rauchfahne.de/en/) who has since let me know that it wasn't her who suggested this.*
---
[![An uncapped fountain pen on top of a pretty, gold-foiled pad of paper beside some envelopes with stamps featuring coffee drinks on them.](/img/sending-incense-samples.webp "If you're going to snail-mail, you might as well do it in style.")](/img/sending-incense-samples.webp)
These sticks are interesting for a couple of reasons. First, they make use of ambrette seeds, which are mentioned in places such as [incensemaking.com,](https://incensemaking.com/aromatics/musk-seeds/) but there's precious little information available about people *actually using them* in incense. The sticks also involve an experimental technique that I used to try to achieve a lavender fragrance similar to that in Yi-Xin's *Heart of Lavender.*
## Ambrette
Ambrette seeds, or musk seeds, are used in perfumery as a natural alternative to animal musk. Far be it from me to deprive an innocent creature of any of its organs, no matter how fragrant, I have been curious about this ingredient for some time as a way to imbue incense with a measure of animalic depth and complexity.
One of the factors that makes traditional incense making so difficult is that most plants reek to high heaven when burned unless you very precisely control the ratio of the ingredient and the temperature at which it burns. Knowing that tonka beans are notorious for smelling less than rosy when used in too high a concentration, I treated the ambrette seeds with a similar trepidation. Through experimentation, I've found that ambrette seeds make their presence well known at as little as two percent of a total blend.
Ambrette seed really does need to be a part of a blend. Upon lighting, it's one of the first ingredients you'll notice, and as a stick of *Grand Dame* was burning while I wore a mask during a visit to Dave of [The World Makes Scents](https://theworldmakesscents.com/) in his workshop (a great time that I plan to write about soon - thanks Dave!), the ambrette was one of the few notes that made it through the tight fibers of a KN95. In isolation, the burning musk seeds aren't pretty, but I really think they add something special to the blend as a whole.
## The Experiment
I've been a bit obsessed with Yi-Xin's [*Heart of Lavender*](https://craft-incense.com/products/lavenwood) since I first tried it. You see, creating floral incense is notoriously difficult; burning flowers rarely produce a fragrance that's even remotely pleasant, and when they do, it's still tricky to get the blend right. As Ken of Yi-Xin wrote on the *Heart of Lavender* product page:
>Blending lavender flowers into incense basically makes the scent quite herbaceous and sharp. So it took a lot of tweaking and some special techniques to get correct.
He also hints at one of these special techniques:
>Firstly, the base ingredient is a specially processed Stanford Cedar material that integrated lavender in a very unique way
Whatever Ken is doing to those ingredients, it produces a beautiful lavender stick which somehow circumvents the sharpness he describes altogether. It's practically *juicy* — floral, but fruity and tart like a plum. As an incense maker, how you could know that this is possible and *not* try to do it is beyond me, so I came up with an idea and tested my hypothesis in *Grand Dame.* The best guess I could muster as to how he'd managed to avoid that familiar scent of burning plant material that is usually part and parcel of, well, burning plant material, was that he must have either omitted it entirely or significantly reduced the quantity used. If I recall, someone mentioned to me at one point that *Heart of Lavender* didn't strike them as containing any significant quantity of essential oil, and I had forgotten that hydrosols exist, which left me with the idea that perhaps Ken had used a tincture.
I started out by soaking whole dried lavender flowers in [Pisco,](https://catanpisco.com/) which smelled incredible. I soon did a little reading on tinctures, however, and found that I was going about it all wrong. The proof of the Pisco and the ratio of flowers to Pisco were both too low, and I'd need to wait several weeks to see how my tincture had turned out in any case. At this point, I bought an ounce of lavender tincture to experiment with. I combined the entire bottle with six grams of stunning powdered [Juniperus Virginiana from The World Makes Scents;](https://theworldmakesscents.com/products/premium-super-fine-red-cedar-powder-juniperus-virginiana) after stirring well and letting the mixture sit for twenty-four hours, I removed the lid from the jar and allowed the liquid to evaporate. The result of a quick burn test was thrilling: the trail of cedar produced the beautiful, fruity lavender fragrance that I'd hoped for.
Now that I had some lavender fragranced wood, I decided to make some sticks from it. To the cedar, I added benzoin for sweetness and for its fixative properties, acacia gum to help modulate burn temperature and to strengthen the sticks, cinnamon, borneol, a small amount of powdered lavender, the ambrette seed, and guar gum to bind. In my opinion, the sticks turned out very well.
Weeks later, I reflected on the original purpose of my tincture experiment while taking a look at the last of my *Heart of Lavender* sticks from Yi-Xin. As I did, I realised something: these sticks are *dark.* There had to be a significant amount of lavender flowers in them.
[![A dark stick of "Heart of Lavender" seen through a printer's loupe.](/img/heart-of-lavender.webp "There's no way this doesn't contain a significant amount of lavender flowers.")](/img/heart-of-lavender.webp)
Here is a comparison between *Grand Dame* and *Heart of Lavender*:
[![The two sticks seen through a printer's loupe. Mine is significantly lighter in color.](/img/incense-stick-comparison.webp "Left: Grand Dame; Right: Heart of Lavender. Quite a difference. ")](/img/incense-stick-comparison.webp)
With that, while it produces a lovely stick, I think my tincture idea is out of the window. Knowing that Ken was taught by [Kyarazen,](https://www.kyarazen.com/) who writes on traditional Chinese incense techniques as does his student [Dr. Incense,](https://dr-incense.com/) I wonder whether the cedar and lavender might have been processed by [steaming](https://dr-incense.com/blogs/dr-incense-blog/traditional-processing-of-aloeswood) them together. At any rate, despite my disappointment at failing to discover how Ken of Yi-Xin made his lavender incense so good, I did manage to find a way of achieving a similar result, and I'm keen to hear what some of my fellow incense-heads think providing those samples arrive in good condition. It continues to be an interesting line of enquiry as tinctures are expensive, even when you make them yourself, so I'd be grateful to discover a more frugal alternative. I've also started some more tinctures to play with, one with osmanthus and another using jasmine. I'll let you know how those work out.

View File

@@ -0,0 +1,37 @@
---
title: "Learning to Love Myrrh: Myrrh & Rose Incense"
description: "I finally figure out how to make myrrh work in a composition."
date: 2024-08-05
tags:
- Incense
synopsis: "I finally figure out how to make myrrh work in a composition."
imageURL: /img/pexels-david-roberts-940521-8323579.webp
imageAlt: A beautiful light-pink dog rose, rosa canina.
mastodon_id: "112909867440319574"
---
Myrrh can be a challenging note. I've seen the resins collected from various members of the Commiphora genus described as everything from loamy, bitter, and mushroomy, to reminiscent of cleaning fluid or a dental clinic; whatever impression you take from the fragrance of myrrh resin, there's no denying that it's unique; there is no mistaking myrrh. While I'm rarely a fan of myrrh alone, or as the predominant note in a sparse composition, I've always felt that there is something compelling about it. Despite its overall unpleasantness, I find heated myrrh resin to produce a dark, mysterious, and somehow sexy fragrance. When balanced well, such as in *Mystic Jade* from Shoyeido's *Magnifiscents* collection, it adds a wonderful, earthy warmth to a composition that's hard to beat.
For some time I've struggled to incorporate myrrh into a stick that I can be proud of; it isn't a resin that you can just drop into a composition with the expectation that it'll work. My experiments with commiphora kua, opoponax, and wightii have all ended in disappointment… until recently.
I've long had an inkling that myrrh would pair well with rose. It's challenging to incorporate flowers into combustible incense; some say it's close to impossible to do without winding up with an incense that smells of acrid burning plant material with, if you're lucky, a touch of whatever flower you've added. Certainly, I have realized that often other methods of incorporating floral fragrances work best. Recently I have discovered, however, that if you start with very good material, and methodically try varying ratios in a series of trail-burning tests, you may wind up surprised by how close a fragrance you can achieve to the fragrance of fresh flowers while minimizing acrid notes. For instance, in my testing, I found that a combination of 30% Rosa Canina and 70% Santalum Spicatum, both very high quality powders given to me by [Dave of *The World Makes Scents*,](../visiting-chicago-incense-maker-dave-of-the-world-makes-scents/) smells absolutely wonderful.
[![A beautiful light-pink dog rose, rosa canina.](/img/pexels-david-roberts-940521-8323579.webp "Rosa Canina in bloom, by [David Roberts on Pexels](https://www.pexels.com/photo/close-up-shot-of-a-dog-rose-in-bloom-8323579/)")](/img/pexels-david-roberts-940521-8323579.webp)
With that knowledge, I composed a stick featuring myrrh, rose, and sandalwood. While the build isn't perfect, I'm already really enjoying the small batch of sticks that I made only a few days ago. The fragrance is gentle and powdery, with a hint of smoke, a soft rose note and that fruitiness that occurs when rose petals are heated. Benzoin lends a subtle sweetness alongside the sandalwood, while the myrrh adds it's unmistakable fragrance and a bittersweet molasses note. The whole ensemble is lifted and brought together by a smidgen of borneol camphor. The myrrh reduces the need for binders, so I've gone with a weak binder, acacia gum, which also helps to firm up and strengthen the extruded sticks once dried.
## The Build
Note that this is a test build that produces less than four grams of dough; you may want to double the amount.
|Ingredient|Grams|% of Build|
|-|-|-|
|Myrrh Resin (Commiphora Kua) |0.2|5.6%|
|Rose Petal (Rosa Canina)|1|27.9%|
|Sandalwood (Santalum Spicatum)|2|55.9%|
|Benzoin Siam|0.14|3.9%|
|Acacia Gum|0.2|5.6%|
|Borneol Camphor|0.04|1.1%|
## Thoughts
I really like this stick, but I do think that it could stand some improvement. Some spices might round out the profile a little, maybe a little clove and cinnamon. It's not the *cleanest* fragrance in the world, likely due to both the myrrh and the high ratio of flowers, but I have been finding it incredibly moreish nonetheless. I hope someone will try to make this and let me know their thoughts!

26
content/blog/poison.md Normal file
View File

@@ -0,0 +1,26 @@
---
title: "Poison"
description: "Reflecting on eating, and cooking, habits in light of Pete Wells' stepping down from his role as Times restaurant critic."
date: 2024-07-16
tags:
- Quick Thoughts
- Restaurants
- Vegan Cooking
synopsis: Reflecting on eating, and cooking, habits in light of Pete Wells' stepping down from his role as Times restaurant critic."
imageURL: /img/pexels-davideibiza-1771809.webp
imageAlt: Amber glass bottles with poison warnings.
mastodon_id: "112798801312124662"
---
I recently happened across the article in which Pete Wells [announces that he will be stepping down](https://www.nytimes.com/2024/07/16/dining/pete-wells-steps-down-food-critic.html?unlocked_article_code=1.7k0.R2zu.sGv5x7hNrfba) from his role as Times' restaurant critic. Health stood tall among the reasons behind the decision:
> My scores were bad across the board; my cholesterol, blood sugar and hypertension were worse than Id expected even in my doomiest moments. The terms pre-diabetes, fatty liver disease and metabolic syndrome were thrown around.
I've been having a similar reckoning. In 2013 I turned vegan. At the time, this meant that you had better either learn to cook or learn to love whatever meager offerings you were lucky enough to find in the miniscule corner of your local grocery store reserved for you and the other crusties: gluten deniers; allergy sufferers; and so on. Rather than endure the pasty, sour blocks of potato starch that then passed for 'vegan cheese', I started to develop my cooking skills in earnest, and not just at home; I would work in kitchens, never as a cook, but as a cocktail bartender and later a barista, both at places upscale enough to warrant cocktail or coffee stations in the kitchen. I learned a lot from those places, especially in the cocktail bar where the chef and I practically stepped on each others toes. From the talented people in that kitchen, I learned what it was to deglaze a pan, how to balance salt, fat, and acid in a dish, and that a dish is over-seasoned when you can *feel* the salt on your tongue. Through these experiences, and through consistent practice at home, I became a very competent home cook.
Using what I've learned in kitchens and from my own practice and research, I can make a Beyond Meat / Impossible style ground beef analogue at home. I can make a competent béchamel sauce with home-made cultured vegan butter, throw together a romesco, red sauce, or salsa verde at a moment's notice, and whip up fresh falafel, tamales, mushroom stroganoff, a Thai green curry, or South Indian sambar on a weeknight without so much as looking at a recipe. All of it poison, I increasingly realize.
Restaurants are places where the preparation of food, necessary to sustain life, meets with a profit motive. In order to retain custom, restaurant dishes are designed with aspirations of meeting the zenith of human tastes, forged thousands of years ago when scraping together sufficient calories of plant and animal matter to see one through the day was no mean feat. If you are among the lucky sliver of the human population that can participate in today's world of plenty, however, restaurant food doesn't only fill those key nutritional silos that drive the most intense of cravings; it utterly overwhelms them, and the consequences from overindulging can be dire.
Learning to cook this way has done me a tremendous disservice. The talented people who I've learned from over the years have inculcated into me, as gospel truth, techniques to create food that delights the palate and utterly destroys the body.
Since giving up smoking, I've learned that the craving never really leaves you entirely. As I glance down at my beautiful little marble pinch-bowl piled high with large white crystals of kosher salt, I wonder whether this craving will never truly leave me also?

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

View File

@@ -0,0 +1,33 @@
---
title: "Visiting Chicago Incense Maker Dave of The World Makes Scents"
description: "I had the pleasure of meeting Dave at The World Makes Scents studio in Bridgeport, Chicago."
date: 2024-08-04
tags:
- Incense
- Chicago
synopsis: "I had the pleasure of meeting Dave at The World Makes Scents studio in Bridgeport, Chicago."
imageURL: /img/pexels-harris-rigorad-478484242-25261413.webp
imageAlt: The Chicago flag.
mastodon_id: "112906515155787958"
---
Whether due to trauma inflicted by gas-station sticks laden with synthetic patchouli oil or the stigma unfairly landed upon the fragrant sticks by association with generations of teenagers seeking to obscure the olfactory remnants of their smoky intemperance, in the part of the world that I currently occupy, incense remains a niche interest — not only with respect to those who enjoy it; fewer yet ever attempt the art of incense-making. Western incense makers seem to huddle together into whatever dusty corner of the internet they can occupy, often knowing each other by handle and legal name alike, where together they scratch and scrape into one small pile whatever little crumbs of knowledge regarding this ancient craft are to be had in languages written with Latin-script alphabets. You can imagine, then, how thrilled I was to be invited by Dave of [The World Makes Scents](https://theworldmakesscents.com/) to see the studio that he shares with his wife, Raksmey.
The workshop is situated in an arts complex: part gallery, and part studio and event space. The walls are lined with pieces from the artists who let space there; as your footsteps echo across the lacquered wooden floors, you can't help but allow your attention to be arrested every few steps by some piece or another. In particular, I recall several striking pieces not far from The World Makes Scents' small studio featuring large nude figures at the fore of a shallow depth of field, a lenticular effect making the images appear to shift and change as you walk by them.
When we reached the studio a stick from a recent test batch was burning; coated with coarsely ground orange zest, it emitted an impressively clear and sweet note of orange oil. Dave told me the story of how Raksmey learned to make incense from women at a Buddhist temple near her home in Cambodia, how the two met, traveled through Vietnam together, rescued their pet dog from perilous circumstances, and disembarked from a plane in the U.S. right as the pandemic was entering the American collective consciousness. It's not my story to tell, so I'll leave it there, but the tale of how the pair came to be making such lovely incense in Chicago's Bridgeport neighborhood is nothing short of miraculous, and likely the most compelling pandemic hobby success story I've heard.
Since first sampling their incense through [the incense exchange subreddit,](https://www.reddit.com/r/IncenseExchange/) I had been impressed with how clean the fragrances were from their cones. I had chalked this up to the cones' golf-tee shape, which keeps the ember from becoming too large, and consequently, the burn temperature from becoming too high; seeing how the materials were processed, however, showed me how much more there was to the story. As if sourcing high quality fragrant materials wasn't enough of a challenge, processing them when they arrive is fraught.
Incense materials should, ideally, be reduced down to a particle size of 100 microns or less. The fastest methods of grinding introduce heat, which breaks down fragrant oils, and renders resins sticky and impossible to work with. Most small incense makers throughout history have thus resorted to processes such as stone grinding or the even more agonizingly slow filing of fragrant woods. Quietly humming in the background was Dave's solution to this conundrum: an array of ball mills, like giant rock-tumblers designed to carefully mill heat-sensitive materials such as black powder for firearms and pyrotechnics; the machines each consist of a rubber-lined drum atop a pair of motorized rollers that turns the drum continuously. The material to be ground is loaded into the machine alongside a series of stainless-steel balls that collide with material inside the spinning drum to break down everything from dried rose petals to cedar wood into a stunningly fine powder. The process takes hours, sometimes days, but at least it's hands-off. Following this, the ground plant matter is run through a series of increasingly fine sieves stacked atop a machine that shakes them so violently that it will soon be bolted to the floor of the studio. Suitably fine material will be used to produce incense; the rest will undergo the process once more.
The results of this procedure are striking; among the samples I left with was a bag of ground patchouli leaf, the texture of talcum powder, so redolent with its natural oils and aromatics that it almost smelled of fresh mint and myrrh resin. Once ground, ingredients are blended together with a small amount of binder; water is then added to form a dough. If destined to become cones, the dough is loaded into a sort of caulking-gun, which is used to extrude a long sausage which will be cut at regular intervals and shaped by hand into those signature golf-tee cones. To make sticks, the dough is packed into a large hand-cranked extrusion machine, capable of extruding some eight to ten noodles of incense at a time which are collected onto a wooden board before being straightened and transferred to a screen for drying. When the cones or sticks have dried completely, they are packaged by hand, labeled, and sent out to incense appreciators world-over.
Of course, the recipes that result in various fragrant doughs to extrude don't spring from nowhere; research and development is an area for which Dave clearly has a great interest and affinity. A whirlwind in the workshop, he produced innumerable ingredients, from wormwood to various frankincense varieties, sprinkling them atop a burning coal to give an impression of the fragrance of each as it burns. The small space housed many drawers and shelves of powders, tinctures, and oils, experiments both successful and otherwise. Vanilla was present in every form and variety as a part of the development process for an upcoming product, from simple extracts to pastes and a high end powdered variety that smelled rich, complex, and tobacco-like. Boxes of incense samples were produced from makers across the globe, from independent makers to large incense houses; all styles were represented, from Tibetan rope incense to bakhoor.
Very much in-line with the brand's emphasis on transparency, Dave's openness regarding processes and ingredients was impressive in an industry where players keep secrets close to their chests. Further, scaling up incense making into a viable business is no mean feat when you're not willing to compromise on quality. Even the famed Singapore incense maker [Kyara Zen wrote](https://www.kyarazen.com/incense-stick-making-a-walk-through/) of this difficulty:
> The truth is, Ive not been able to scale up production as everythings still very much purely hand made, from converting the raw material into powder, to the ingredient blending, to the extrusion, drying, collection etc.
Outside of large incense houses that use industrial hammer mills to break down whole aromatics, it's a painstaking endeavor to produce even small amounts of incense for personal enjoyment, let alone managing to increase output and reduce labor time such that it's viable to sell the incense you make. There is a reason quick and easy to make "hand dipped" incense is seen so often in stores despite its clear inferiority to its traditionally made, non-synthetic counterpart. What Dave and Raksmey have achieved in such a short time is nothing short of remarkable.
I'm very grateful to Dave for the invitation, for showing me the studio, offering a fascinating insight into The World Makes Scents' incense production methods, and for all of the incredible samples and goodies I left with. It's a wonderful thing to be able to meet with another incense maker and share knowledge and enthusiasm over the topic, and hopefully we'll be able to meet again soon; I'll no doubt have some samples to share myself when that time arrives!

View File

@@ -4,13 +4,13 @@ eleventyNavigation:
key: Now
order: 4
---
<article>
<article class="post">
<h1>Now: Whats Been Going on Lately?</h1>
{% set now = collections.now | last %}
<h2>{{ now.data.title }}</h2>
{{ now.content | safe }}
<p class="metadata">Updated: {{ now.date | readableDate }} |&nbsp;<a href="https://nownownow.com/about">What is a now page?</a></p>
</article>
<p class="metadata">Updated: {{ now.date | readableDate }} |&nbsp;<a href="https://nownownow.com/about">What is a now page?</a></p>
{% set postsCount = collections.now | removeMostRecent | length %}
{% if postsCount > 1 %}

View File

@@ -6,7 +6,7 @@ date: 2024-02-26
imageURL: /img/pexels-pixabay-277458_copy.webp
imageAlt: A series of clocks on tall black poles in a clearing in front of some trees.
---
I spent about a month working on my blog, while [not blogging on the thing](../blog/up-to-my-eyeballs/), but Im very pleased about the new changes. The biggest new feature as a result of the work is the ability to comment on my posts via Mastodon!
I spent about a month working on my blog, while [not blogging on the thing](https://nathanupchurch.com/blog/up-to-my-eyeballs/), but Im very pleased about the new changes. The biggest new feature as a result of the work is the ability to comment on my posts via Mastodon!
After a failed batch, I went back to basics and made some plain Palo Santo incense that turned out very, very well. I expect Ill write a post about it soon. I also caved and got three varieties from [Yi-Xin Craft Incense](https://craft-incense.com/pages/about-the-artist)s February collection. Not only is his stuff consistently gorgeous, its also great reference incense for those masochists who like to make their own. If you want to know what a *good* stick can be, you cant go wrong with one of Kens.

View File

@@ -1,4 +1,5 @@
import { DateTime } from "luxon";
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
import markdownIt from "markdown-it";
import markdownItFootnote from "markdown-it-footnote";
import markdownItAnchor from "markdown-it-anchor";
@@ -36,6 +37,17 @@ export default async function(eleventyConfig) {
eleventyConfig.addWatchTarget("content/**/*.{svg,webp,png,jpeg}");
// Official plugins
/*
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
extensions: "html",
formats: ["webp"],
widths: [270,540,810,1080],
defaultAttributes: {
loading: "lazy",
decoding: "async",
},
urlPath: "/img/",
});*/
eleventyConfig.addPlugin(pluginRss);
eleventyConfig.addPlugin(pluginSyntaxHighlight, {
preAttributes: { tabindex: 0 }
@@ -60,6 +72,8 @@ export default async function(eleventyConfig) {
});
// Shortcodes
// Cowsay
eleventyConfig.addNunjucksFilter("cowsay", cowText => {
const cowCaptionReplacementTable = [
[`
@@ -89,6 +103,7 @@ export default async function(eleventyConfig) {
`;
});
// Embed a toot
eleventyConfig.addAsyncShortcode("toot", async function(instance, ID) {
const tootData = await fetch(
`https://${instance}/api/v1/statuses/${ID}`

View File

@@ -30,7 +30,7 @@
"homepage": "https://upchur.ch/gitea/n_u/nathanupchurch.com",
"devDependencies": {
"@11ty/eleventy": "3.0.0-alpha.13",
"@11ty/eleventy-img": "^3.1.0",
"@11ty/eleventy-img": "5.0.0-beta.10",
"@11ty/eleventy-navigation": "^0.3.5",
"@11ty/eleventy-plugin-bundle": "^1.0.4",
"@11ty/eleventy-plugin-rss": "^1.2.0",

View File

@@ -18,10 +18,9 @@
--font-variation-default: "opsz" 18, "wght" 310, "SOFT" 40, "WONK" 0;
--font-variation-ui: "wght" 500;
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
--meta-font-family: var(--font-family-ui);
--meta-font-size: var(--step--2);
--meta-font-family: "Fraunces", serif;
--meta-font-size: var(--step--1);
--meta-font-style: normal;
--meta-font-variation-settings: var(--font-variation-ui);
--ui-letter-spacing: calc(var(--space-3xs) * 0.5);
}
@@ -58,45 +57,45 @@
--text-color-tag: var(--contrast-color);
/* Font Size Scaling Tokens - https://utopia.fyi/ */
--step--2: clamp(0.7813rem, 0.7747rem + 0.0326vi, 0.8rem);
--step--1: clamp(0.9375rem, 0.9158rem + 0.1087vi, 1rem);
--step-0: clamp(1.125rem, 1.0815rem + 0.2174vi, 1.25rem);
--step-1: clamp(1.35rem, 1.2761rem + 0.3696vi, 1.5625rem);
--step-2: clamp(1.62rem, 1.5041rem + 0.5793vi, 1.9531rem);
--step-3: clamp(1.944rem, 1.771rem + 0.8651vi, 2.4414rem);
--step-4: clamp(2.3328rem, 2.0827rem + 1.2504vi, 3.0518rem);
--step-5: clamp(2.7994rem, 2.4462rem + 1.7658vi, 3.8147rem);
--step-6: clamp(3.3592rem, 2.8691rem + 2.4507vi, 4.7684rem);
--step-7: clamp(4.0311rem, 3.36rem + 3.3555vi, 5.9605rem);
--step-8: clamp(4.8373rem, 3.9283rem + 4.5448vi, 7.4506rem);
--step--2: clamp(0.8681rem, 0.8163rem + 0.259vw, 0.96rem);
--step--1: clamp(1.0417rem, 0.9525rem + 0.446vw, 1.2rem);
--step-0: clamp(1.25rem, 1.1092rem + 0.7042vw, 1.5rem);
--step-1: clamp(1.5rem, 1.2887rem + 1.0563vw, 1.875rem);
--step-2: clamp(1.8rem, 1.4937rem + 1.5317vw, 2.3438rem);
--step-3: clamp(2.16rem, 1.7264rem + 2.1681vw, 2.9297rem);
--step-4: clamp(2.592rem, 1.9891rem + 3.0144vw, 3.6621rem);
--step-5: clamp(3.1104rem, 2.2838rem + 4.1331vw, 4.5776rem);
--step-6: clamp(3.7325rem, 2.6116rem + 5.6044vw, 5.722rem);
--step-7: clamp(4.479rem, 2.9727rem + 7.5312vw, 7.1526rem);
--step-8: clamp(5.3748rem, 3.3658rem + 10.0449vw, 8.9407rem);
/* Space Scaling Tokens - https://utopia.fyi/ */
--space-3xs: clamp(0.3125rem, 0.3125rem + 0vi, 0.3125rem);
--space-2xs: clamp(0.5625rem, 0.5408rem + 0.1087vi, 0.625rem);
--space-xs: clamp(0.875rem, 0.8533rem + 0.1087vi, 0.9375rem);
--space-s: clamp(1.125rem, 1.0815rem + 0.2174vi, 1.25rem);
--space-m: clamp(1.6875rem, 1.6223rem + 0.3261vi, 1.875rem);
--space-l: clamp(2.25rem, 2.163rem + 0.4348vi, 2.5rem);
--space-xl: clamp(3.375rem, 3.2446rem + 0.6522vi, 3.75rem);
--space-2xl: clamp(4.5rem, 4.3261rem + 0.8696vi, 5rem);
--space-3xl: clamp(6.75rem, 6.4891rem + 1.3043vi, 7.5rem);
--space-3xs: clamp(0.3125rem, 0.2773rem + 0.1761vw, 0.375rem);
--space-2xs: clamp(0.625rem, 0.5546rem + 0.3521vw, 0.75rem);
--space-xs: clamp(0.9375rem, 0.8319rem + 0.5282vw, 1.125rem);
--space-s: clamp(1.25rem, 1.1092rem + 0.7042vw, 1.5rem);
--space-m: clamp(1.875rem, 1.6637rem + 1.0563vw, 2.25rem);
--space-l: clamp(2.5rem, 2.2183rem + 1.4085vw, 3rem);
--space-xl: clamp(3.75rem, 3.3275rem + 2.1127vw, 4.5rem);
--space-2xl: clamp(5rem, 4.4366rem + 2.8169vw, 6rem);
--space-3xl: clamp(7.5rem, 6.6549rem + 4.2254vw, 9rem);
/* One-up pairs - https://utopia.fyi/ */
--space-3xs-2xs: clamp(0.3125rem, 0.2038rem + 0.5435vi, 0.625rem);
--space-2xs-xs: clamp(0.5625rem, 0.4321rem + 0.6522vi, 0.9375rem);
--space-xs-s: clamp(0.875rem, 0.7446rem + 0.6522vi, 1.25rem);
--space-s-m: clamp(1.125rem, 0.8641rem + 1.3043vi, 1.875rem);
--space-m-l: clamp(1.6875rem, 1.4049rem + 1.413vi, 2.5rem);
--space-l-xl: clamp(2.25rem, 1.7283rem + 2.6087vi, 3.75rem);
--space-xl-2xl: clamp(3.375rem, 2.8098rem + 2.8261vi, 5rem);
--space-2xl-3xl: clamp(4.5rem, 3.4565rem + 5.2174vi, 7.5rem);
--space-3xs-2xs: clamp(0.3125rem, 0.066rem + 1.2324vw, 0.75rem);
--space-2xs-xs: clamp(0.625rem, 0.3433rem + 1.4085vw, 1.125rem);
--space-xs-s: clamp(0.9375rem, 0.6206rem + 1.5845vw, 1.5rem);
--space-s-m: clamp(1.25rem, 0.6866rem + 2.8169vw, 2.25rem);
--space-m-l: clamp(1.875rem, 1.2412rem + 3.169vw, 3rem);
--space-l-xl: clamp(2.5rem, 1.3732rem + 5.6338vw, 4.5rem);
--space-xl-2xl: clamp(3.75rem, 2.4824rem + 6.338vw, 6rem);
--space-2xl-3xl: clamp(5rem, 2.7465rem + 11.2676vw, 9rem);
/* Custom pairs - https://utopia.fyi/ */
--space-s-l: clamp(1.125rem, 0.6467rem + 2.3913vi, 2.5rem);
--space-s-l: clamp(1.25rem, 0.2641rem + 4.9296vw, 3rem);
/* Fluid Grid Tokens - https://utopia.fyi/ */
--grid-max-width: 43.75rem;
--grid-gutter: var(--space-s-l, clamp(1.125rem, -0.0329rem + 5.7895vw, 2.5rem));
--grid-max-width: 55.50rem;
--grid-gutter: var(--space-s-s, clamp(1.25rem, 1.1092rem + 0.7042vw, 1.5rem));
--grid-columns: 12;
/* Change <img> SVG color with filter */
@@ -123,12 +122,13 @@
/* Web Component Tokens */
--wc-card-background-color: var(--card-color);
--wc-card-border-radius: var(--border-radius);
--wc-card-margin: 0 0 var(--space-s) 0;
--wc-card-box-shadow: var(--box-shadow);
--wc-link-color: var(--text-color);
--wc-link-decoration-color: var(--contrast-color);
--wc-link-decoration-thickness: var(--link-decoration-thickness);
--wc-comment-text-margin: auto auto auto 4rem;
--wc-profile-pic-size: 3rem;
--wc-comment-text-margin: var(--space-xs) 0 0 0;
--wc-profile-pic-size: var(--space-l);
--wc-profile-pic-border-radius: 10rem;
}
@@ -170,6 +170,17 @@ html {
font-size: 13px;
overflow-y: scroll;
}
blockquote p {
font-style: italic;
}
blockquote:before {
content: "“";
font-size: 10rem;
margin-left: -4rem;
margin-top: -2rem;
position: fixed;
filter: opacity(.15);
}
body {
animation: var(--slide-in-blurred-bottom);
font-size: var(--step-0);
@@ -210,6 +221,10 @@ section {
display: grid;
grid-column: 1 / span 12;
}
::selection {
background: var(--contrast-color);
color: var(--background-color);
}
.page-block {
grid-column: 1 / span 12;
font-size: var(--step-1);
@@ -254,13 +269,13 @@ h1, h2, h3 {
h1 {
font-family: var(--font-family-headline);
font-variation-settings: "opsz" 100, "wght" 500, "SOFT" 10, "WONK" 1;
font-size: var(--step-6);
font-size: var(--step-5);
font-style: normal;
line-height: calc(var(--step-6) * 0.25 + var(--step-6));
line-height: calc(var(--step-5) * 0.25 + var(--step-5));
}
h2 {
font-size: var(--step-3);
font-variation-settings: "opsz" 50, "wght" 300, "SOFT" 60, "WONK" 1;
font-size: var(--step-2);
font-variation-settings: "opsz" 50, "wght" 350, "SOFT" 20, "WONK" 1;
padding-bottom: var(--space-l);
padding-top: var(--space-xl);
}
@@ -319,9 +334,8 @@ html.barebones, body.barebones {
}
figcaption {
font-size: var(--meta-font-size);
font-style: var(--meta-font-style);
font-variation-settings: var(--meta-font-variation-settings);
font-size: var(--step--1);
font-style: italic;
padding-top: var(--space-s);
text-align: center;
}
@@ -392,14 +406,13 @@ wc-comment::part(author-link), wc-toot::part(author-link) {
text-decoration: none;
}
wc-comment::part(main) {
margin-bottom: var(--space-l);
padding: var(--space-m);
}
wc-comment::part(publish-date), wc-toot::part(publish-date) {
font-family: var(--meta-font-family);
font-size: var(--meta-font-size);
font-style: var(--meta-font-style);
font-variation-settings: var(--font-variation-settings);
margin-top: -.25rem;
}
wc-toot::part(main) {
color: white;
@@ -563,7 +576,7 @@ nav ul {
.postlist-date,
.postlist-item:before {
color: var(--color-gray-90);
font-size: var(--step--1); /* 13px /16 */
font-size: var(--meta-font-size); /* 13px /16 */
}
.postlist-date {
word-spacing: -0.5px;
@@ -663,8 +676,18 @@ a.post-tag:hover {
/* Post Metadata */
.post-metadata {
display: flex;
flex-flow: row nowrap;
padding: var(--space-m) 0 var(--space-l) 0;
}
.post-metadata-copy {
display: flex;
flex-flow: column nowrap;
justify-content: center;
padding-left: var(--space-s);
}
.post-metadata p, .post-metadata ul, .post-metadata ul li, time, .metadata {
display: flex;
flex-flow: row wrap;
@@ -681,6 +704,11 @@ a.post-tag:hover {
padding-left: .15rem;
}
.profilePic:not(.links-container > img.profilePic) {
width: var(--space-xl);
border-radius: 100%;
}
/* Direct Links / Markdown Headers */
a.header-anchor {
font-style: normal;
@@ -709,6 +737,12 @@ article.post {
container: article / inline-size;
}
/* Adds fleuron to article end */
article.post > p:not(blockquote > p):last-child:after {
content: "\2766";
display: inline;
font-size: var(--step-1);
}
/* Utilities */
.grid-container {
max-width: var(--grid-max-width);

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -10,6 +10,7 @@ template.innerHTML = `
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
margin: var(--wc-card-margin);
padding: var(--single-gap) 1.1rem var(--single-gap) 1.1rem;
width: 100%;
}

View File

@@ -3,9 +3,9 @@ const template = document.createElement('template');
template.innerHTML = `
<style>
#profilePic {
border-radius: var(--wc-profile-pic-border-radius);
width: var(--wc-profile-pic-size);
height: var(--wc-profile-pic-size);
border-radius: var(--wc-profile-pic-border-radius);
width: var(--wc-profile-pic-size);
height: var(--wc-profile-pic-size);
}
</style>