~hedy's blogroll - BlogFlockThe blogroll listed on my website.
https://home.hedy.dev/blogroll/2026-08-10T04:15:49.628ZBlogFlockSeirdy, erock, James' Coffee Blog, Sloum, Manuel Moreale RSS Feed, Protesilaos Stavrou: Master feed with all updates, Ploum.net, ~hedy, Baty.netMarkText - Baty.nethttps://baty.net/notes/2026/08/marktext/2026-08-09T16:40:47.000Z<p><a href="https://marktext.me/">MarkText — The Markdown editor that gets out of your way</a> is available for macOS, Windows, and Linux. I grabbed the Flatpak today and first impressions are good. Worth a look.</p>
<p>(h/t <a href="https://alexjj.com/">Alex</a>)</p>
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: MarkText">✍️ Reply by email</a></p>Pico.sh - Baty.nethttps://baty.net/notes/2026/08/pico-sh/2026-08-09T16:03:50.000Z<p>I've gotta try <a href="https://pico.sh/">pico.sh</a>, don't I? I mean, I already deploy all my sites via rsync, so I'm mostly there, anyway.</p>
<p>(h/t <a href="https://sal-blog.pgs.sh/blog/pico-sh-cool/">Sal</a>)</p>
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Pico.sh">✍️ Reply by email</a></p>Photography Substacks - Baty.nethttps://baty.net/notes/2026/08/photography-substacks/2026-08-09T13:04:27.000Z<p>Yes, I know, "Substack is horrible..." etc., but I'll set that aside for a moment to point out that <a href="https://photoni.st/">Photoni.st</a> has created a collated list of <a href="https://photoni.st/subs/">more than 600 photographers on Substack</a>. Lots of them I'd not seen before.</p>
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Photography%20Substacks">✍️ Reply by email</a></p>Sunday, August 9, 2026 - Baty.nethttps://baty.net/journal/09Aug26/2026-08-09T10:40:01.000Z<p>You may have noticed that I haven't been putting images atop these journal posts. There are a couple reasons for that. First, it's kind of a pain to find a photo I want to use and then add the date/weather overlay. It's not <em>hard</em>, it's just friction that I'm finding difficult to overcome. Second, they're mostly decorative, and I dislike using decorative images on posts. Sure, it is a way to share photos, but I have other ways of doing that. If I want to highlight a photo, I can just make a post about it. Anyway, not using featured images on journal posts feels like a simplifying, decluttering move and that's where my head is right now.</p>
<hr />
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Sunday%2C%20August%209%2C%202026">✍️ Reply by email</a></p>Emacs: conditionally expand abbrev-mode definitions - Protesilaos Stavrou: Master feed with all updateshttps://protesilaos.com/codelog/2026-08-09-emacs-expand-abbrev-mode-definitions-conditionally/2026-08-09T00:00:00.000Z<p>In this ~15-minute video I show how to add conditions to <code class="language-plaintext highlighter-rouge">abbrev-mode</code>
abbreviations that you define. The idea is to have those abbrevs
expand only in certain cases. I use three examples, which I think
cover the common needs.</p>
<h2>Code samples</h2>
<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">defun</span> <span class="nv">my-french-p</span> <span class="p">()</span>
<span class="s">"Return non-nil if `current-input-method' is French."</span>
<span class="p">(</span><span class="nb">and</span> <span class="nv">current-input-method</span>
<span class="p">(</span><span class="nv">string-match-p</span> <span class="s">"french"</span> <span class="nv">current-input-method</span><span class="p">)))</span>
<span class="p">(</span><span class="nv">define-abbrev</span> <span class="nv">global-abbrev-table</span> <span class="s">"welcome"</span> <span class="s">"je t'en prie"</span> <span class="no">nil</span> <span class="ss">:enable-function</span> <span class="nf">#'</span><span class="nv">my-french-p</span><span class="p">)</span>
<span class="p">(</span><span class="nb">defvar</span> <span class="nv">my-notes-directory</span> <span class="p">(</span><span class="nv">expand-file-name</span> <span class="s">"~/.emacs.d/abbrev-test/"</span><span class="p">)</span>
<span class="s">"Directory where my notes are."</span><span class="p">)</span>
<span class="p">(</span><span class="nb">defun</span> <span class="nv">my-notes-directory-p</span> <span class="p">()</span>
<span class="s">"Return non-nil if we are in `my-notes-directory' or its subdirectories."</span>
<span class="p">(</span><span class="k">let</span> <span class="p">((</span><span class="nv">current-directory</span> <span class="p">(</span><span class="nv">expand-file-name</span> <span class="nv">default-directory</span><span class="p">)))</span>
<span class="p">(</span><span class="nv">string-prefix-p</span> <span class="nv">my-notes-directory</span> <span class="nv">current-directory</span><span class="p">)))</span>
<span class="p">(</span><span class="nv">define-abbrev</span> <span class="nv">global-abbrev-table</span> <span class="s">"prot"</span> <span class="s">"p’rǒt"</span> <span class="no">nil</span> <span class="ss">:enable-function</span> <span class="nf">#'</span><span class="nv">my-notes-directory-p</span><span class="p">)</span>
<span class="p">(</span><span class="nb">defun</span> <span class="nv">my-notes-keycast-mode-p</span> <span class="p">()</span>
<span class="s">"Return non-nil if `keycast-mode-line-mode' is enabled."</span>
<span class="p">(</span><span class="nv">bound-and-true-p</span> <span class="nv">keycast-mode-line-mode</span><span class="p">))</span>
<span class="p">(</span><span class="nv">define-abbrev</span> <span class="nv">global-abbrev-table</span> <span class="s">"prot"</span> <span class="s">"Protesilaos, also known as Prot"</span> <span class="no">nil</span> <span class="ss">:enable-function</span> <span class="nf">#'</span><span class="nv">my-notes-keycast-mode-p</span><span class="p">)</span>
</code></pre></div></div>Evening - James' Coffee Bloghttps://jamesg.blog/2026/08/09/evening-22026-08-09T00:00:00.000Z
<p><em>Herein, three chapters from today: two reflecting on the evening, and one looking back to the morning.</em></p><p>⁂ ⁂ ⁂</p><p>The sun shines through the window onto the coffee table — my typewriter and the Lucky Cat next to my typewriter are both illuminated; the cat waves at a fast, steady pace as the solar panel that receives the energy from the beaming sun. I look outside and see the shadows of the trees in the nearby field; the blue, blue sky with the occasional cloud floating behind the trees. I think how much I love the countryside. I smile. Joining a Zoom with a friend; listening to EDM while I catch up.</p><p>Looking around the room, I notice way the sun-kissed textured glass reflects on my guitar. I have never noticed that before. There is always something new to see, even in the most familiar of places.</p><p>⁂ ⁂ ⁂ </p><p>Thirty minutes later, I think about time: how the sun has moved, shining no longer on my typewriter but another part of the room. I still have the impression of the way the sun was shining before in my mind. Where the sun is now invites me to look out the window. I see the way the sun peeks through a cloud on the horizon. Much of the sky is blue; a paler blue that feels like it is mixed with white radiates around the sun. I think about the movement of time: how the sun moved and I, too, moved, but in a different way: I moved forward with conversation and sharing ideas – sharing the energy I have, just as the sun does.</p><p>⁂ ⁂ ⁂</p><p>Feeling relaxed and the tiredness that comes from a busy weekend – during which I made many web pages, seen new pieces of art, and felt the energy of being around both small groups of friends and around huge crowds – I look at my notes from this morning, the vignettes written as I watched and lived with the country side.</p><p>The smell of cinnamon in the coffee shop was delightful. The taste of the coffee I ordered – a decaf flat white – reminded me of my trip to Paris last year; I drank the coffee after coming in from the rain, and while looking out onto the trees. I have been so glad about the rain and the cooler weather over the last few days; I think Nature, and myself, both needed the change in weather.</p><p>This morning I also listened to Audrey Hobert’s music, whose latest album I have thoroughly enjoyed. I am only on my third or so listen so far, and look forward to the moment when I can sing entire songs of hers by heart.</p><p>Later in the morning, I started writing a poem; playing with words, with form, with structure. I smiled as I looked at the hills from a place where I can see more of the horizon than any other, where I can see for miles.</p><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a2892cea3ec255d3',t:'MTc4NjMwMzgyNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
A diminishing portfolio - Baty.nethttps://baty.net/notes/2026/08/a-diminishing-portfolio/2026-08-08T11:15:10.000Z<figure>
<img src="https://baty.net/img/2026/20260808-enthusiasms.webp" alt="We go through life with a diminishing portfolio of enthusiasms" />
<figcaption></figcaption>
</figure>
<p>You said it, Jim.</p>
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: A%20diminishing%20portfolio">✍️ Reply by email</a></p>Saturday, August 8, 2026 - Baty.nethttps://baty.net/journal/08Aug26/2026-08-08T09:52:19.000Z<div class="compact status">
<ul>
<li><strong>STATUS</strong>: Back on Linux, today.</li>
<li><strong>TODO</strong>: Nothing planned. Isn't that wonderful?!</li>
<li><strong>READING</strong>: Still working through "Middlemarch", but I've slowed down</li>
<li><strong>WATCHING</strong>: "Gone" on BritBox</li>
</ul>
</div>
<p>As repetitive and unimpressive as this blog can get, it's still the one place I have consistently put things for nearly 26 years. When I ask myself, "When did THING happen?", I often find the answer here. Maybe that's enough of a reason to continue, even though I haven't really been feeling like it, lately.</p>
<hr />
<p>My stepson writes test harnesses for the EV support systems at GM. We got to tour the engineering building yesterday during "Family Day" in Pontiac. It's ginormous and impressive. There was a parking lot full of classic cars. Also impressive. Not only did I not take any photos, I didn't even bring a camera. Something is wrong with my hobby.</p>
<hr />
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Saturday%2C%20August%208%2C%202026">✍️ Reply by email</a></p>Blogging and blog setups - Baty.nethttps://baty.net/notes/2026/08/blogging-and-blog-setups/2026-08-08T09:05:50.000Z<p>I still think about this <a href="https://rakhim.org/honestly-undefined/19/">from Rakhim</a> (2020):</p>
<p><img src="https://baty.net/img/2026/20260808-blogging.jpg" alt="Blogging vs blog setups comic" /></p>
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Blogging%20and%20blog%20setups">✍️ Reply by email</a></p>Poem: Of Protesilaos (inspired by Bertolt Brecht) - Protesilaos Stavrou: Master feed with all updateshttps://protesilaos.com/poems/2026-08-08-of-protesilaos/2026-08-08T00:00:00.000Z<p>Inspired by Bertolt Brecht’s “Von armen B.B.” (For poor B.B.).</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Of Protesilaos
Protesilaos, rare in name and temperament
Hailing from the ghost village
in the land of the cypress tree
My refugee mother and contrarian father
raised me where rudderless ships
travel between worlds
Born in the age of the dragon
with eyes of indeterminate colour
like the liminality I traverse
In salt I am forever covered
and Mediterranean zest I bring
to the solitary highlands I inhabit
Stable as the falcon valley rocks
I keep in my company wolf and sheep
My house stands between ancient oaks
where eagles fly above the canes
Peaceful dove and crafty crow alike
find shelter in my midst
The burden of duty I always carry
to inspire through earnest deed
earthbound action of skyward thought
In slow pace content I am to discern
the common in the multitude
and many through the one
Transanimated hope I am
and ever-growing grapevine
From fact to myth I proceed
with equanimous heart
to offer people gifts galore
that were never mine to keep
When the brightest dog barks
while frogs are silent
in the river of milk I dive
to reach at the furthest edges
the temple few can fathom
where my next mission awaits
</code></pre></div></div>HTML Day 2026 - James' Coffee Bloghttps://jamesg.blog/2026/08/08/html-day-20262026-08-08T00:00:00.000Z
<style media="(prefers-color-scheme: dark)">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #49483e }
.highlight { background: #272822; color: #F8F8F2 }
.highlight .c { color: #959077 } /* Comment */
.highlight .err { color: #ED007E; background-color: #1E0010 } /* Error */
.highlight .esc { color: #F8F8F2 } /* Escape */
.highlight .g { color: #F8F8F2 } /* Generic */
.highlight .k { color: #66D9EF } /* Keyword */
.highlight .l { color: #AE81FF } /* Literal */
.highlight .n { color: #F8F8F2 } /* Name */
.highlight .o { color: #FF4689 } /* Operator */
.highlight .x { color: #F8F8F2 } /* Other */
.highlight .p { color: #F8F8F2 } /* Punctuation */
.highlight .ch { color: #959077 } /* Comment.Hashbang */
.highlight .cm { color: #959077 } /* Comment.Multiline */
.highlight .cp { color: #959077 } /* Comment.Preproc */
.highlight .cpf { color: #959077 } /* Comment.PreprocFile */
.highlight .c1 { color: #959077 } /* Comment.Single */
.highlight .cs { color: #959077 } /* Comment.Special */
.highlight .gd { color: #FF4689 } /* Generic.Deleted */
.highlight .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
.highlight .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #F8F8F2 } /* Generic.Error */
.highlight .gh { color: #F8F8F2 } /* Generic.Heading */
.highlight .gi { color: #A6E22E } /* Generic.Inserted */
.highlight .go { color: #66D9EF } /* Generic.Output */
.highlight .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
.highlight .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #959077 } /* Generic.Subheading */
.highlight .gt { color: #F8F8F2 } /* Generic.Traceback */
.highlight .kc { color: #66D9EF } /* Keyword.Constant */
.highlight .kd { color: #66D9EF } /* Keyword.Declaration */
.highlight .kn { color: #FF4689 } /* Keyword.Namespace */
.highlight .kp { color: #66D9EF } /* Keyword.Pseudo */
.highlight .kr { color: #66D9EF } /* Keyword.Reserved */
.highlight .kt { color: #66D9EF } /* Keyword.Type */
.highlight .ld { color: #E6DB74 } /* Literal.Date */
.highlight .m { color: #AE81FF } /* Literal.Number */
.highlight .s { color: #E6DB74 } /* Literal.String */
.highlight .na { color: #A6E22E } /* Name.Attribute */
.highlight .nb { color: #F8F8F2 } /* Name.Builtin */
.highlight .nc { color: #A6E22E } /* Name.Class */
.highlight .no { color: #66D9EF } /* Name.Constant */
.highlight .nd { color: #A6E22E } /* Name.Decorator */
.highlight .ni { color: #F8F8F2 } /* Name.Entity */
.highlight .ne { color: #A6E22E } /* Name.Exception */
.highlight .nf { color: #A6E22E } /* Name.Function */
.highlight .nl { color: #F8F8F2 } /* Name.Label */
.highlight .nn { color: #F8F8F2 } /* Name.Namespace */
.highlight .nx { color: #A6E22E } /* Name.Other */
.highlight .py { color: #F8F8F2 } /* Name.Property */
.highlight .nt { color: #FF4689 } /* Name.Tag */
.highlight .nv { color: #F8F8F2 } /* Name.Variable */
.highlight .ow { color: #FF4689 } /* Operator.Word */
.highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */
.highlight .w { color: #F8F8F2 } /* Text.Whitespace */
.highlight .mb { color: #AE81FF } /* Literal.Number.Bin */
.highlight .mf { color: #AE81FF } /* Literal.Number.Float */
.highlight .mh { color: #AE81FF } /* Literal.Number.Hex */
.highlight .mi { color: #AE81FF } /* Literal.Number.Integer */
.highlight .mo { color: #AE81FF } /* Literal.Number.Oct */
.highlight .sa { color: #E6DB74 } /* Literal.String.Affix */
.highlight .sb { color: #E6DB74 } /* Literal.String.Backtick */
.highlight .sc { color: #E6DB74 } /* Literal.String.Char */
.highlight .dl { color: #E6DB74 } /* Literal.String.Delimiter */
.highlight .sd { color: #E6DB74 } /* Literal.String.Doc */
.highlight .s2 { color: #E6DB74 } /* Literal.String.Double */
.highlight .se { color: #AE81FF } /* Literal.String.Escape */
.highlight .sh { color: #E6DB74 } /* Literal.String.Heredoc */
.highlight .si { color: #E6DB74 } /* Literal.String.Interpol */
.highlight .sx { color: #E6DB74 } /* Literal.String.Other */
.highlight .sr { color: #E6DB74 } /* Literal.String.Regex */
.highlight .s1 { color: #E6DB74 } /* Literal.String.Single */
.highlight .ss { color: #E6DB74 } /* Literal.String.Symbol */
.highlight .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #A6E22E } /* Name.Function.Magic */
.highlight .vc { color: #F8F8F2 } /* Name.Variable.Class */
.highlight .vg { color: #F8F8F2 } /* Name.Variable.Global */
.highlight .vi { color: #F8F8F2 } /* Name.Variable.Instance */
.highlight .vm { color: #F8F8F2 } /* Name.Variable.Magic */
.highlight .il { color: #AE81FF } /* Literal.Number.Integer.Long */ .highlight .nn, .highlight .n{color: light-dark(black, var(--dark-foreground-color)) }</style><style media="(prefers-color-scheme: light)">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #F00 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #04D } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
.highlight .no { color: #800 } /* Name.Constant */
.highlight .nd { color: #A2F } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #00F } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #666 } /* Literal.Number.Bin */
.highlight .mf { color: #666 } /* Literal.Number.Float */
.highlight .mh { color: #666 } /* Literal.Number.Hex */
.highlight .mi { color: #666 } /* Literal.Number.Integer */
.highlight .mo { color: #666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #00F } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666 } /* Literal.Number.Integer.Long */</style>
<style>
@font-face {
font-family: 'MonaspaceArgon';
src: url('/assets/fonts/MonaspaceArgon-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
pre, code {
font-family: 'MonaspaceArgon', ui-monospace, monospace;
}
</style>
<p><em>A tale of </em><a href="https://2026.html.energy/" rel="noreferrer"><em>HTML Day 2026</em></a><em> in three chapters: of poetry, of play, and of reflection.</em></p><p>⁂ ⁂ ⁂ </p><blockquote>the calm that comes from writing a web page in a quiet room, the loudest sounds being the wind blowing and the sound of keys typing, and of being on a call with friends and people from around the world who all came together to make a web page; of seeing what everyone made; and learning new ways to present information; HTML mixes the presentational and the textual, the visual and the technical, the poetic and the prosaic; of the silence that came when the call ended and we all rushed to say thank you in the chat.<br/><br/>a moment to reflect on the fun had in the last half hour; of making something I may otherwise not have made; of doing so in a space someone created, as part of a larger event; an event in the spirit of the web: global.</blockquote><p>I wrote this in my notes shortly after attending the first of two <a href="https://zacharykai.net/events/htmlday" rel="noreferrer">HTML Day online sessions today</a>, hosted by <a href="https://zacharykai.net" rel="noreferrer">Zachary</a>. The morning ended up being a lot busier than expected, with my showing up around half an hour late. With that said, I had a list of ideas for a web page and all the energy that came from looking forward to this event in my heart. Although I had such a list, however, I explored a new idea when I opened up my code editor and started to write.</p><p>I wanted to make a web page that spoke about the moment before making a web page: of inspiration, of excitement, of anticipation. I opted to focus on writing words in the HTML document, using as few tags and styles as possible. My page ended up being something of a story, interspersed with questions, thoughts, and invitations to the reader.</p><p><a href="https://playground.jamesg.blog/html-day-morning-2026.html">Here is what I made.</a> </p><p>This morning was one of my first experiments with using white-space more playfully in prose and poetry. It was so much fun!</p><p>In the last ten or so minutes of the session, many people shared the web pages they made, too. This was one of the highlights of the hour: seeing a page about poetry, a scaffolding for a web zine, colourful web pages, and so much more.</p><p>⁂ ⁂ ⁂ </p><blockquote>Friends embracing each other with hugs in the park; bagpipes are played wonderfully in the background. A person glides through the park while wearing roller skates. A crowd of people led by a saxhorn band sing Auld Lang Syne, and alternate between stopping and starting in different dance poses as the music plays with a jazzy flare; bagpipes enter, colourful flags move. There are three tiers of the park, each with people looking down. People applaud in unison across the park when the song comes to an end. “For our first time through, that was pretty amazing,” said the band leader. ~~~ two hours before HTML Day Edinburgh.</blockquote><p>I volunteered to host <a href="https://html-day-edi.neocities.org/" rel="noreferrer">HTML Day Edinburgh</a> this year for the first time, which was so fun.</p><p>On the way to the event, I started thinking about an idea I had earlier this morning: what if I made a web page that looked like a letter that someone could open and read? I thought this would be a fun way to send e-cards to friends for their birthdays. I don’t currently do this, but I would if I had made the e-cards cards myself. I ended up building the scaffolding of this idea in the session.</p><p>Three of us met up in a coffee shop to talk about, and work on, web pages. For the first half an hour or so, we all chatted, and then we got to taking notes and exploring ideas. We had a few WiFi issues, and so much more of the session was devoted to conversation than I had expected. With that said, we made the most of the time. Indeed, it felt like we had momentum to chat about the web and technology that could have greatly surpassed the two hours set for the session.</p><p>Before I left for the event, I took a photo of the envelopes I use to send letters to friends. I used Apple Photos to create a “sticker” of the envelope – a cut-out of only the envelope that was in the image. I used that photo on my web page. I first thought it would be fun to hover over the envelope to reveal the note I had written. But then I realised it might be better to have a button so the visitor had something to click. Using a checkbox and a CSS <code>:has</code> selector, I made the image change from the envelope to the letter when the <code>label</code> (styled like a button) associated with the checkbox was clicked.</p><p><a href="https://playground.jamesg.blog/html-day-edinburgh-2026.html">Here is what I made.</a> </p><p>There are likely many ways I can improve this page. I used a <code>background-image</code> so I could control the image via CSS on hover and later with the checkbox, but I am not sure about the code I wrote for sizing the background image. The web page doesn’t work particularly well on mobile. With that said, I am delighted with what I made: a little thank you note to HTML Day. I might use this template to send an e-card to a friend some time later this weekend.</p><p>As I wrote to a few people during the event: “We’re HTMLing in Edinburgh.”</p><p>HTMLing should be a verb.</p><p>⁂ ⁂ ⁂ </p><p>There were two online HTML Day events: one that more accommodating for people in time zones in the Asia / Pacific region (which coincided with morning in Europe), and one that was later in the day for people in Europe and early in the morning for folks in the Americas. The second online HTML Day event was scheduled for one hour after the Edinburgh one finished, so, I reasoned earlier this week, I <em>could</em> attend both online sessions. But, to do so, I would likely have to go to another coffee shop and use their WiFi.</p><p>Between the Edinburgh and second online HTML Day session, I went to a bookshop and enjoyed perusing the shelves, exploring areas of the bookshop I don’t usually visit. I spent much time greatly admiring the Natural History section, where the Nature books were. I was intrigued by Walden being in a section labelled Natural History. I guess I had never thought about where Walden would be on a shelf. A little part of me daydreamed about having a work on the same shelf.</p><p>With fifteen minutes to go and a few options for coffee shops to go to, I started to venture out. Two coffee shops I wanted to go to were full, so I went to the third option on my mental list. There was no WiFi, but it didn’t matter: I had a great view of the busy city street (the Fringe just started; Edinburgh is so busy!), and I was excited to make a web page while having no means of accessing the internet.</p><p>I went back to my list of ideas, but a new idea that was not on the list came to mind (ironically, I didn’t write down the envelope idea either; that one seemed to be stuck in my mind). I thought about a page where I could write some affirmations. I was inspired by the <a href="https://jamesg.blog/rest">rest</a> page on my website which reminds the reader – and the author, me – that rest is important. I thought I could start with this and write a few more affirmations.</p><p><a href="https://playground.jamesg.blog/html-day-online-evening-2026.html">Here is what I made.</a> </p><p>I opted to keep the code simple, using CSS mainly to add a bit of colour and spacing to the page. I wrote the affirmations that came to mind, and even added a few vignettes that I wrote while looking out the window. Edinburgh was so full of life today. And I think I was able to bring some HTML energy to the mix too. I was not able to join the corresponding videoconference that was happening for the second online HTML Day, but I am glad I was able to make a web page in that time. I felt like I was participating even though I wasn’t on the call.</p><p>After all the bustle of the day, I walked over North Bridge Street in Edinburgh for the first time since it was fully re-opened. The bridge, which had been under restoration for eight years, was enveloped in scaffolding for the longest time. But today, I was able to walk over with no scaffolding. Looking around, I saw views of Edinburgh I have never seen before. I never thought I would be able to see the sea in the distance from North Bridge, which is in the centre of the city. That experience was truly delightful.</p><p>⁂ ⁂ ⁂ </p><p><em>Three HTML pages written in three places: one page at home and two in coffee shops, between which I went to an art exhibition and a book shop. One page was written with exploration and poetry at the forefront of my mind, the next written with play and friendship and community, and the last written in reflection, in a time when a quiet moment was exactly what I needed.</em></p><p>Reflecting on the affirmations page I made today, I wrote this in my notes:</p><blockquote>It’s [this is] what I needed to make in the moment.</blockquote><p>I am not sure I fully grasp what this thought means yet, but I thought it was significant so I wrote it down.</p><p>⁂ ⁂ ⁂ </p><p>I mentioned earlier in this post that I had a list of ideas of things I could make that I wrote this week. Here is the list, in case you are curious. Perhaps an idea below will inspire you to make something: to create your own HTML energy.</p><ul><li>A new blogroll</li><li>A website you can scroll in two directions (islands of poems; of web pages?)</li><li>A poem written with CSS selectors that does something on the page<ul><li>“You’re an amazing human.”</li></ul></li><li>IndieWeb wiki edits represented as emojis — edits vs. new pages;<ul><li>This could work with any wiki</li></ul></li><li>Making a welcome letter to the web</li><li>A gallery of all my favourite words</li><li>Plain text poems</li><li>What if style sheets cascaded visually?<ul><li>Like a poem<ul><li>And a river</li></ul></li></ul></li><li>poetics.js — replace one word with another</li><li>Word-effects.css — like Apple’s animated text</li><li>Birthday cards, type-written — use envelope I normally use; hand-written font</li><li>A site that displays all of Taylor Swift’s eras tour mashups</li><li>Tab-to-advance poetry</li><li>Can you embed a css file with <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed">https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed</a>?</li><li>A website that makes me feel calm</li><li>CSS animation — can I make a circle that pulses in colour slightly</li><li>Use a monospace font</li><li>A site that looks like an airline ticket — a ticket to a new web</li><li>A checklist of things to do when you rename your website</li><li>A page with buttons that you can press</li><li>What would a website look like as a museum?</li><li>A list of a hundred things a blog can be<ul><li>An anthology of yourself</li><li>A collection of stories</li><li>The beginning of a novel</li><li>A home for your words</li><li>An archive of your writings</li><li>The place where you start a conversation</li><li>Where you publish your midnight musings</li></ul></li><li>A zine made with HTML<ul><li>Visions for the web<ul><li>What if I told you that you can make the web better?</li><li>Yes, you. Whoever you are — whether you have a website or not, whether you can code or have no interested in coding.</li><li>You can make a difference for one big reason: the web is for everyone. That means you!</li></ul></li></ul></li></ul><p>Happy HTML Day!</p><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a28100b8ed6bf0b9',t:'MTc4NjIxODEzMQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
<a class="tag" href="https://2026.html.energy/">HTML Day 2026</a>
<a class="tag" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed">https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/embed</a>
<a class="tag" href="https://html-day-edi.neocities.org/">HTML Day Edinburgh</a>
<a class="tag" href="https://jamesg.blog/rest">rest</a>
<a class="tag" href="https://playground.jamesg.blog/html-day-edinburgh-2026.html">Here is what I made.</a>
<a class="tag" href="https://playground.jamesg.blog/html-day-morning-2026.html">Here is what I made.</a>
<a class="tag" href="https://playground.jamesg.blog/html-day-online-evening-2026.html">Here is what I made.</a>
<a class="tag" href="https://zacharykai.net">Zachary</a>
<a class="tag" href="https://zacharykai.net/events/htmlday">HTML Day online sessions today</a>
The sound of writing - James' Coffee Bloghttps://jamesg.blog/2026/08/07/the-sound-of-writing2026-08-07T00:00:00.000Z
<p>Writing is a sample of the sonorous inner monologue of life: a handful of the words that seem to mean something; that carry with them weight: greeting, friendship, questions, realisations, hopes, dreams, anxieties; sounds that carry life, and how we use language to coalesce all that we take in, transforming our ideas into something others can read in their own voices.</p><p>As I write, I sit on the precipice of three voices: one I create, one I imagine, and the other that you, the reader, fill in. The words herein are my authorial voice, said in the way that I like to write; as I write, I hear those words spoken in my voice, in my head, like a monologue that speaks at the pace I can write. As you read, you may hear them in your own voice, too. Words speak many times in many ways; the sounds of those ideas transformed with every intonation, every expression, every breath.</p><p>The sound of writing is in the music of the strings reverberating as I play my favourite songs, singing as longly, passionately, as the moment calls for; just as the sound of writing is in the silence of the bedroom wherein I like to write at night, and the room in which the sun shines through and I hear my computer knocking the table slightly because it is placed unevenly, placed such because I was practicing guitar and words started to flow and I knew I had to write them down. I wrote notes – streams of my consciousness left over from singing my favourite songs – with a plectrum in my hand.</p><p>The sound of writing is in the voices that are within earshot as I walk around the world and realise that we all have our own stories. And it is in the sound of pens squiggling on whiteboards, because some ideas need to be written down as soon as possible and the whiteboard may be the nearest place to write it down. Writing is in the sound of the conversations with friends that made you see something in a new light, and gave you butterflies. It is in the sound of soft fingers tapping on a liquid glass screen that gives definition and shape to the developing fragments of my mind. I catch fireflies with my pen.</p><p>I think about whether anticipation – the moment before the writing begins – has a sound. What does excitement sound like? I think back to the richest of those memories; of realising music will be here soon.</p><p>The sound of writing is in the voice in my head composing a sentence while I sing a song I love, while I ponder the dialogue between creative works and creative mediums – how our writing can be in conversation with the past and the present and the future: the Gatsbys and the broken statues and the love stories.</p><p>You hear the sound of my words in the year two thousand and twenty six; each word – each sentence – each story – steeped in time, coming alive when read, just as music comes alive when played; an artefact of a moment that carries itself through time, through words. This essay is my voice, on the page, crossing the bridge of Modality, sitting potentially with latent ideas and meanings yet to be realised, like a poem, written with musical passion on the forefront of my mind.</p><p><em>This blog post was written in response to the prompt “The sound of writing.” from </em><a href="https://vanderwal.net" rel="noreferrer"><em>Thomas</em></a><em>, with steams of thought noted down while I took breaks between playing songs by Taylor Swift on my guitar (thank you </em><a href="https://www.youtube.com/@NenaShelbyMusic" rel="noreferrer"><em>Nena Shelby for the amazing play alongs</em></a><em> that help me find my voice), and compiled into a story for you to read – to hear in your thoughts – shortly thereafter.</em></p><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a277b8c658a726c3',t:'MTc4NjEyMDgxMg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
<a class="tag" href="https://vanderwal.net">Thomas</a>
<a class="tag" href="https://www.youtube.com/@NenaShelbyMusic">Nena Shelby for the amazing play alongs</a>
Interpretation of “The red river” by Eleonora Zouganeli - Protesilaos Stavrou: Master feed with all updateshttps://protesilaos.com/interpretations/2026-08-07-zouganeli-red-river/2026-08-07T00:00:00.000Z<p>I have long now enjoyed listening to singer Eleonora Zouganeli, though
I had not discovered a song of hers that would seamlessly fit these
philosophical interpretations I do. That was until I listened again to
<em>The red river</em> (Το κόκκινο ποτάμι). This is a song I have been aware
of for years though never considered in depth. Here is the official
release: <a href="https://www.youtube.com/watch?v=ev_sQGJXuyI">https://www.youtube.com/watch?v=ev_sQGJXuyI</a>. I prefer this
version instead: <a href="https://www.youtube.com/watch?v=03hcrVsD07A">https://www.youtube.com/watch?v=03hcrVsD07A</a>.</p>
<p>Below are the original lyrics, my faithful translation of them into
English, and further commentary.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Το κόκκινο ποτάμι
Ερμηνεία: Ελεωνόρα Ζουγανέλη
Στίχοι: Κώστας Μπαλαχούτης
Μουσική: Χρήστος Παπαδόπουλος
Πριν σε βρω σ'έχασα
Μια στιγμή δεν ξέχασα
Το ποτάμι μάτωσε
Η αγάπη δάκρυσε
Η ζωή μας όλη ένας ποταμός
Αλλιώτικος Θεός που μας χωρίζει
Μία όχθη εδώ στην άλλη το θεριό
Σαν δάκρυ στο καιρό που με ορίζει
Η φωνή μου όλη έγινε κραυγή
Το αίμα στην πληγή στο νου αφρίζει
Μία όχθη εδώ στην άλλη το θεριό
Σαν δάκρυ στο καιρό που με ορίζει
Μη μου λες γιατί
Γίνε ουρανός και γη
Μες τη σκοτεινιά
Φώτισε μου τα κελιά
Πριν σε βρω σε έχασα
Μια στιγμή δεν ξέχασα
Το ποτάμι μάτωσε
Η αγάπη δάκρυσε
Σαν το ναυαγό αφού δεν είσαι εδώ
Που να'βρω ουρανό και που πατρίδα
Μέσα στη βροχή σαν το τρελό σκαρί
Που σκίζει το νερό χωρίς ελπίδα
Νιώσε τη στιγμή πριν έρθει η αυγή
Με μίσος και οργή σαν καταιγίδα
Σαν το ναυαγό αφού δεν είσαι εδώ
Που να'βρω ουρανό και που πατρίδα
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The red river
Singer: Eleonora Zouganeli
Lyrics: Kostas Balachoutis
Music: Christos Papadopoulos
Before I found you I lost you
A single moment I did not forget
The river bled
love cried
Our entire life a river
Different god who divides us
A side here the beast on the other
like tear in the era that defines us ["era" could also be "weather"]
My entire voice has become a shout
The blood in the wound froths at the mind
A side here the beast on the other
like tear in the era that defines us
Do not tell me why
Become sky and earth
In the darkness
Lighten my rooms
Before I found you I lost you
A single moment I did not forget
The river bled
love cried
Like shipwrecked as you are not here
Where to find sky and where homeland
In the rain like the crazy boat
That cuts through water without hope
Feel the moment before dawn arrives
With hatred and rage like storm
Like shipwrecked as you are not here
Where to find sky and where homeland
</code></pre></div></div>
<p>The lyrics of <em>The red river</em> are fairly cryptic. I suspect it is due
to the author’s profound realisation, which only occurs to those who
pay close attention to their world: you can fall in love with someone
who is unreachable. You lost them before you had even met them, in the
sense that there was never a chance for you two to make anything out
of your brief encounter.</p>
<p>The unreachable person is the one you meet on the street, on the other
side of the road, with whom you somehow establish eye contact despite
the boisterous crowd around you and the rapid pace at which you are
both walking in while moving in opposite directions. You do not know
their name, what language they speak, where they came from and where
they are going. Nothing! All you have is eye contact so intense and so
unlikely that it electrifies you. Such is the impression that you do
not forget this person. You call them “Eyes” for short.</p>
<p>Eyes may be someone you would never like to spend time with. People
eventually lose interest if the vibes are not in tune, no matter how
powerful the initial force that brought them together. Though you
choose to believe that Eyes is the one, the perfect match.</p>
<p>The river here reminds us of the momentary encounter that cannot
persist. Each moment moves downstream as others take its place. You
wish you had more time to realise what had just transpired. You would
have done anything to change the course of things. You would turn
around, stop the traffic, push the crowd aside, call the attention of
Eyes, and express yourself in earnest: “I did not know I was searching
for you my whole life”. Yet those thoughts occur too late. You realise
that the currents have already pulled you away. You kept marching
onwards and so did Eyes.</p>
<p>Bleeding comes from the wound left behind by this encounter. At first,
it pains to know that Eyes was made manifest as a fleeting figure and
not a companion. It is initially hard to accept that you too had the
same quality: a nameless body moving along a nameless field of bodies.
Your ego reduces to nothing as you come to terms with the fact that
you are a droplet in the river.</p>
<p>Even if you think you matter greatly right now, you as a fully fledged
person eventually becomes irrelevant. Hair recedes and turns grey.
Wrinkles appear and you no longer shine. Your beauty for which you
could have been proud turns into that which you may wish to conceal.
Physical prowess and intellectual capacity eventually diminish, no
matter how intensely you try to cling on to them. All goes until you
are no more. The deeds for which you are known may persist in some
form, though long-term your name stops pointing to a relatable person
with feelings and all but to a symbol of authorship, a mere identifier
for a corpus of work.</p>
<p>The mindful person will witness the bleeding of their ego fairly early
in life. The rest will also experience it in some form later in life
once they understand how they no longer are players in the game.</p>
<p>However, the river does not only describe the world that keeps
changing. It also captures that which remains constant. The river is
at once a symbol of change and non-change, constancy and
non-constancy. The flowing waters tell us about continuous flow. Yet
flux as such points to the common in the multitude of the flowing
waters. Change as change is identity.</p>
<p>It is for this reason that Eyes remains Eyes in the poetic first
person’s heart despite all these years that have gone by. Eyes, too,
is a symbol: the authentic, the eternal in the momentary, that which
is common in the multitude of all attractions.</p>
<hr />
<p>This was the interpretation for today. Now a brief note that is
tangential to the aforementioned.</p>
<p>A few months ago I met a fellow Greek person (Greek-Cypriot to be
precise) who was excited to learn that I am a philosopher. A “Greek
philosopher” who is actually alive already makes for inexhaustible
meme-worthy material. I keep shaving though, which kind of ruins it
for them, but they will have to manage.</p>
<p>This person was keen to ask me all sorts of questions. Though before
we started our discussion, we had this brief exchange, which is
relevant to the present song as well as practically every other piece
I have interpreted:</p>
<ul>
<li>I am a philosopher.</li>
<li>Wow! We [the Greeks] do not have philosophers anymore!</li>
<li>And what do you think the [Greek] songmakers are?</li>
</ul>
<p>I then went on to explain that once you listen attentively to a song,
you realise that it opens up a whole world of possibilities, each of
which is another world. Even the Eurovision style songs that you may
underestimate will make you think much more than what the lyrics
state. This is because one word is worth a thousand images (and an
image is worth a thousand words, of course).</p>
<p>Not all songs will speak to you. The events they are inspired by and
the feelings they communicate may seem alien. You can reason about
them, though you do not experience them viscerally. For example, I do
not feel anything special when I listen to the average Taylor Swift
song. Her quality is undeniable. It just happens that I cannot relate
to a heartbroken teenage girl (yes, Taylor Swift covers more themes,
but you get the idea).</p>
<p>People make the mistake of searching for the eternal in that which is
grand. Pay close attention and you will find it right in front of you.</p>Morning - James' Coffee Bloghttps://jamesg.blog/2026/08/06/morning-22026-08-06T00:00:00.000Z
<p>Warm tea, wiki edits, and zines sent by a friend that arrived earlier this week welcome me to the morning. Yesterday there was a rain shower more intense than any I have seen for a while; a powerful wind blew through the air. Now, the day is calm: the sky is cloudy and a light breeze sways the leaves on the trees to and fro. Birds call. My tea is empty. I should make another cup.</p><p>I look around the room and think of how different times bring life to different parts of the place. My guitar sings in the late afternoon. My typewriter goes click-clack in the early mornings when I like to write letters to friends. The sounds of my computer keyboard permeate through the weekday; clicks corresponding to connections, essays, reflections, thoughts, ideas. My silent waving lucky cat brings joy all day. The colour of my bookshelves that hold stories that have brought joy, excitement, laughter, and peace, comforts me; the colour of the plants make me feel calm. I need to water them today.</p><p>I think about how I am surrounded by the potential of music, and words, and Nature all the time when I sit here – there is always something creative on the periphery. I didn’t intentionally design the room this way; rather, the room grew this way over time, with little changes and additions as my interests grew and changed. Just like my website, to an extent: slowly growing with me, through days bright and cloudy, with words written in museums, in cafes, and while sitting on my favourite chair, on which I sit right now, looking at the world through the lens of morning.</p><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a26c8e174c4e839b',t:'MTc4NjAwMzcyMA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
Metaphor and fact in religiosity - Protesilaos Stavrou: Master feed with all updateshttps://protesilaos.com/commentary/2026-08-06-metaphor-fact-religiosity/2026-08-06T00:00:00.000Z<p>For years now I have adopted the view that religious narratives are
fundamentally allegorical even when they contain elements of fact.
Their goal is, nonetheless, thoroughly practical: to provide a
framework within which society can flourish in a manner that is
sustainable (i.e. viable over the long-term). The allegories help form
the baseline of values and core teachings upon which a corpus of
prescriptive statements is established.</p>
<h2>Memorable and teachable</h2>
<p>Any narrative that contributes to such a framework has to have
mnemonic and didactic value. Stories that are hard to remember cannot
spread through word of mouth and shall not be easily communicated to
people. This is a major problem for intergenerational relations,
because the parent will not be teaching the child as much as they
could. Same principle for stories that do not contain lessons that are
widely applicable: people will not find those stories useful and will
eventually ignore them.</p>
<p>This approach emphasises the role of the tutelary figure: the teacher,
the scholar, the priest, the hierarch, the shaman, always depending on
the specifics of the culture in question. This person performs the
vital function of harmonising the private good with the common good in
what we may generalise as the wellness of the place with the wellness
of the space. The tutelary figure is the person that uses religion as
a system for their teachings, adapting insights to the particularities
of present life as well as the individual qualities of each member of
the social whole they are addressing.</p>
<p>A myth, for example, is not an event that actually happened. It is not
a statement of fact in and of itself. The tutelary figure, owning to
their experience, can discern the meaning of the myth, the moral of
the story, to comment on quotidian affairs, such as to give
personalised guidance on one’s struggles in life. Through this
tutelage, the lesson drawn from the myth becomes relatable because it
applies to immediately recognisable phenomena.</p>
<h2>Facts and their constraints</h2>
<p>Facts, then, are interesting details that can reinforce the effect of
narratives. Though the totality of religion cannot be factual, as that
necessarily means that religion must be filled with accompanying data
sets or relevant resources: those are not mnemonic, for instance.</p>
<p>Facts may render stories specific to their context: if a story is tied
to the given details of the place and people involved, then it may not
be as generalisable. A story about an artisan’s craft in ancient
China, for instance, might not apply to a modern European if it is all
about details of that field of endeavour during that specific era. The
generalisation will have to be done beyond those specificities.</p>
<p>Data sets about such details are no mere supporting material though.
They are an integral part of a wider approach to how things are
handled. Consider a scientific paper, for example: in principle, it is
all about facts. The paper’s data has to be verifiable by independent
means and its findings shall be reproducible elsewhere. Without
verifiability and reproducibility, there are no facts that can be
relied upon. They are, at best, curious artefacts potentially worthy
of further investigation.</p>
<p>Imagine that if religion is factual, it too has to be consistent with
the practice that frames the scientific paper, meaning that each of
its claims is substantiated by details which themselves are
peer-reviewed and thoroughly examined in independent settings. And
those facts have to be applicable today as well as for the
indeterminate future, so their reproducibility remains robust to
changes in the environment.</p>
<p>I am not aware of any religion that is purely factual of the sort here
considered. Religions claim to be factual on some accounts and admit
to their allegorical nature on others. Though once this point is
granted, then one can only wonder where exactly the boundaries are set
and whether the goalposts will keep shifting if expedient.</p>
<h2>From facts to ideology</h2>
<p>My claim that religion is fundamentally allegorical is not to discount
religion, but to salvage it because it is a potent tool for social
cohesion. I wish to carve for religion a place that keeps it relevant
long-term, given the obvious descriptive power and potential for
innovation that science, its putative competitor, has. To me, religion
and science apply to different facets of life and are thus compatible
once each focuses on its strengths.</p>
<p>This approach also saves science from the trap of scientism, namely,
the ideology of fastening upon the scientific corpus cultural
teachings that themselves cannot be strictly aligned with the
scientific method because they then lose their mnemonic and didactic
value.</p>
<p>A defining feature of our era is said scientism. People try to find
all-encompassing guidance for their daily life in tenuous factoids of
the sort “a paper found such and such”, “scientists may have found how
this and that are related”. People rush to use those preliminary
findings as the basis for far-reaching claims that the data does not
support. They do not even know how to treat the source material with
the requisite scepticism.</p>
<p>It is common for those under the sway of scientism to rely on an
implicit metaphysics while pretending to eschew metaphysics
altogether, thinking they are practical and believing they are smart
by avoiding “all that nonsense”. As a result, the average person
overestimates their competence and ventures to do things that are
potentially self-destructive.</p>
<p>Scientism debases both science and culture because it stands at an
awkward intermediate state between the two, combining their parts in
the worst possible way.</p>
<p>I want to help people find focus in their life instead of getting
pulled in to futile squabbles over science versus religion, my
religion versus your religion, and so on. I see myself as the figure
who has responsibility to inspire—and at times to challenge—people
to aim for a state of clarity, instead of giving them grist for the
mill they are caught in. I am not converting anyone to anything: they
will know what to do once they put things in order.</p>
<p>Against this backdrop, I extend what I have written thus far with
commentary on the article titled <a href="https://vnderthejunipertree.blogspot.com/2026/08/on-becoming-magus.html">On becoming a magus</a>
from the <em>Under The Juniper Tree</em> blog (hereinafter referred to as
“the blog” in the interest of brevity). It gives me the pretext to
expound on what I was anyway going to cover. Using excerpts from the
blog makes my points more relatable, so I do not need to draw my own
examples: I can rely instead on what another person states since it is
representative of broader patterns of thought that I have encountered.</p>
<h2>Metaphor and symbolism</h2>
<p>From the blog:</p>
<blockquote>
<p>The magician, in the tarot world, is represented as someone in robes
(Jesuschrist) able to control the four elements: air (swords), fire
(wands), earth (pentacles) and water (coups). He is shown displaying
these things in a table, in calmness.</p>
<p>Tomberg is his Meditations on the Tarot, expounds about this topic
and how occultist like Eliphas Levi said that Jesuschrist was the
ultimate magician and that the rest of us mortal wouldn’t ever be
more than warlocks.</p>
</blockquote>
<p>Should we take this literally? Are the four elements a statement of
fact? What does that entail for chemistry? Can I describe the desk and
computer hardware I am now using in terms of the four elements and
have this be a reproducible description? Can I, for example, have a
precise measurement of the earth and wind present in my keyboard?</p>
<p>I think the four elements are metaphorical as a simplification of a
much more complex reality. Using this metaphor, I can come up with
lots of interesting stories about the world which may make people
think about different parts of their everyday life. I like the four
elements in that regard. If, however, I take the four elements
literally, then I carry the burden of proof to demonstrate exactly
what those elements mean, how do we study them, where do we use them,
and so on.</p>
<p>Same principle for Jesus as the ultimate magician. If this is a
statement of fact, then we have to contend with all sorts of questions
that essentially ask how can we prove that any given person actually
is who they claim to be (e.g. son of God, the trinity, etc.).</p>
<p>If Jesus is the ultimate magician who is, ipso facto, superior to all
of us, then it is entirely possible that he is a pretender and not the
real deal, without us ever knowing how to tell the difference. I do
not actually believe this, but such is the possibility we have to
entertain. A pretender could even be malevolent, such as to cause
confusion, sow hatred, trigger holy wars, and sit back to see the
world burn.</p>
<p>How would we, the lesser people, even have the acumen to correctly
rank the magicians, so that we can tell who is the ultimate among
them? And which even are the criteria for said ranking? Even in
something as mundane as football, it is futile to define the “Greatest
Of All Time”, “the best midfielder ever”, and so on. If you do not
believe me, start a poll online and you will get all sorts of
conflicting accounts. Who is right, who is wrong, and how do we make
that judgement call? And this is just football, mind you, not “the
ultimate magician”.</p>
<p>These and many more are questions that naturally follow from the basic
notion that Jesus qua ultimate magician is a fact. We cannot hold back
those questions because then we are no longer rigorous with our claims.</p>
<p>If, however, we take this metaphorically we again have lots of
interesting topics to discuss about common issues, while recognising
that we are formulating stories that fit our needs. Jesus as the
ultimate magician thus becomes a valuable story-telling device for the
present and the future.</p>
<p>When we admit that we are reading resources in a spirit of openness to
interpretation, we remind people not to obsess over the specifics of
what is in front of them. We emphasise the teachings and invite
everyone to think for themselves or, anyhow, to not take every
statement or symbol at face value.</p>
<p>Furthermore, we adapt the lessons to the prevailing realities.
Interpretation becomes a tool that empowers us. We are not limited to
the scope that the facts delimit.</p>
<p>Continuing from the blog:</p>
<blockquote>
<p>I am a firm believer of the phenomenology of magick; as a christian
it couldn’t be otherwise; Solomon had control over demons (or
djinns), Elijah called fire upon the prophets of Baal, and my dear
St. Theresa D’Avila levitated and mastered the inner self out of
abandonment and trust; centuries of grimmoires have been preserved
to this day, like the Lesser and the Greater Key of Solomon, the
entire tradition of the Ars Goetia and the book of Honorius to talk
with God amongst other tests.</p>
</blockquote>
<p>Consider the story of Elijah here. If God literally rained fire on
those who practised a different religion, why can we not believe that
this is also happening nowadays in roughly the same part of the world
for basically the same reasons? And if we cannot think of the modern day
equivalent of Elijah, perhaps we will surmise that God skipped the
prophets and opted for politicians this time? There are countless such
questions, each with far-reaching implications.</p>
<p>Furthermore, if this is a literal event, then it raises questions
about God, such as whether he has favourites among the people and why
would that be, that he seems to have no problem with innocent children
burning alive and their settlements reduced to rubble, and much more.
Is fire the best way to convince people?</p>
<p>Plus everything I mentioned above about validating the claimed facts.</p>
<p>I am not searching for answers here. I am pointing out what happens
once you commit to a literal reading of the stories.</p>
<p>If, however, we take it metaphorically then we have a useful story in
our hands: for instance, we can speak about how one’s unflinching
commitment makes them extraordinary, which is a practical lesson for
everybody.</p>
<p>Same idea for St. Theresa levitating. What does that even mean in a
factual reading of the story? Was she suspending the force of gravity?
And if so, what was holding her body together? Was it some piece of
equipment instead? Who developed it and what was the underlying
technology? We can ask endless such questions and continue
scrutinising the answers as we search for verifiable and reproducible
evidence. Absent the evidence, the only charitable reading is that of
allegory. Otherwise, we have to admit that we do not know the facts
and are filling in the blanks with what we wish to see there.</p>
<p>If we say that this is all magic that we simply cannot comprehend,
then we are faced with the challenge of putting forth a description
about—and attendant belief in—something we claim is indescribable.
If it can be talked about, it is describable. If it can be described,
it can be done so with greater accuracy. If, moreover, it can be
demonstrated, then it can be measured. So we are back to examining
facts and building up the requisite capacity. And if it is not
demonstrable, then the supposed events are allegorical, which is
perfectly fine.</p>
<h2>Symbols and practicality</h2>
<p>From the blog:</p>
<blockquote>
<p>I consider that everything is real when it comes to this kind of
topics: I do not deny the existence of Hera, but her condition; for
me it’s just a fallen angel or a nephilim instead of a goddes, and
the same goes with the gods of my ancestors - Baal is just a minor
nephilim, or son of the angels that left the sky.</p>
</blockquote>
<p>What does “real” mean though? Metaphors are also real because they
describe that which is common in phenomena. But we understand that the
metaphor itself is not factual: its relation to reality consists in
representing the abstraction from the multitude of relevant patterns.</p>
<p>For example, Aesop’s fable of the ant and the grasshopper pertains to
everyday experiences of people even though we are neither ants nor
grasshoppers. Aesop did not record a historical event but only a story
he made up; a story with mnemonic and didactic value.</p>
<p>If, however, we claim something like “Hera is real” and by that we
mean that she is a figure of some kind, be it an angel or whatever,
then we again need to withstand the scrutiny of fact-checking. This
would distract from the symbolism. It would be akin to saying “the
story of the ant and the grasshopper actually happened”.</p>
<p>Hera is not a person. There is no lady in the sky waiting for us to do
something for her. Hera is a symbol that we invent—and are open
about our myth-making practice and our poetry—to encapsulate in a
few words (again, mnemonic and didactic value) a long list of beliefs
that a society may consider important because it has tested them
through aeons of experimentation, such as:</p>
<ul>
<li>Children need a mother figure in their midst.</li>
<li>Families benefit from having a just matriarch figure around (e.g.
the grandmother in an extended family that everybody loves and
listens to).</li>
<li>The extended family distributes the workload, making it easier to
raise children and take care of the elderly, while still handling
everyday work.</li>
<li>Societies are stable long-term when social reproduction
(biological + cultural continuity) extends from the family, to the
neighbourhood, and continues outward.</li>
<li>Resilience long-term is about sustainable intergenerational relations.</li>
</ul>
<p>We do not have to appeal to Hera to make those and related points. A
secular teaching at some public school can have the same effect.
However, history shows us that religious communities are the most
enduring across continents. So, communicating this in religious terms
will likely remain relevant long-term.</p>
<p>At any rate, Hera is a symbol: a name or alias for a long list of
beliefs which themselves are about day-to-day issues. Anything else is
going to engender countless questions like I hinted at in the previous
section.</p>
<p>Names/aliases/symbols are part of our everyday affairs. Imagine if
instead of “Protesilaos” we have to use all possible descriptors of
me: that would make for an incredibly tedious discussion. Extend that
to everything we name and you quickly realise how language will not be
usable if it cannot employ these mental shortcuts.</p>
<p>We rely on names/aliases/symbols to keep things focused. At some
level, we accept imprecision for the sake of usability. Strictly
speaking, “Protesilaos” is inaccurate because it applies equally to a
child and to an adult, even though those are different people in terms
of their body, their interests, their knowledge, and more. Same idea
for “Protesilaos” from yesterday and “Protesilaos” right now because
there still are differences between them that the name itself does not
capture. For example, yesterday’s guy had not written this article and
thus had not created the relevant synapses in his brain.</p>
<p>Coming back to religion, metaphors empower us to keep things focused
by avoiding unnecessary details. Otherwise, we exhaust the attention
span of people and, as such, we cannot instil in them what they need
to learn (again, mnemonic and didactic value).</p>
<p>Furthermore, saying that Hera is real, in the sense of a person or
angel or whatever, we now introduce a discussion about otherworldly
forms of being. This discussion is factual or metaphorical? If it is
factual, then we have to have the relevant evidence. If it is an
allegory, then we have to question what purpose does it serve and
whether that is constructive or not in light of social affairs.</p>
<h2>The significance of faith</h2>
<p>From the blog:</p>
<blockquote>
<p>For the magi not only needs discipline and knowledge, but also trust
and faith, faith in something greater than himself, faith in a world
that can’t be reduced to debt and GPI and politics, faith in the
fact that, as Borges said, there are more things.</p>
</blockquote>
<p>Indeed, there are more things. Such as other people in present time
and other people on an intergenerational scale. There is the country
and the environment, and all of the species, and so on. Recognising
the others is a prerequisite for the aforementioned framework of
sustainability.</p>
<p>The defining feature of our era is that “more things” are subordinated
to the practice of ruthless short-term profit maximisation and its
concomitant pursuit of perpetual growth, which is how forests are
decimated and oceans are polluted, people are uprooted from their
ancestral lands through structural poverty or brute force or the
sabotage of drugs, waters are exploited in the interest of oligarchs,
and so on.</p>
<p>Faith in other things needs to be couched in terms of the
practicalities of sustainability within the confines of the world we
live in. It is not about other beings in other dimensions. Faith in
other people, for example, brings forth concerns for justice. Faith in
generations embeds a sense of duty and of restraint beyond one’s self.
This continues for other topics, but the core idea is the same: it is
about recognising that we are not alone here and that we have to keep
things orderly for the present and the indeterminate future. Sanctity,
then, is a shorthand for saying at minimum: respect the person,
respect the community, respect those who were before and those who
will come after, respect the environment, live within your means. Et
cetera.</p>
<p>Faith in Hera as a given figure, however, or the nephilim, or whether
Elijah actually wielded fire, or if Jesus qua ultimate magician is
literal and he actually controls the four elements, inevitably invites
the kind of endless scepticism that disorients us from the goal of
sustainability for our communities. Instead of taking the symbolism
and adapting it to our life, to teach young and old folks alike, we
run into controversies about the one and only truth; controversies
that humanity has never resolved—and how could it when it cannot
even define the best footballer ever? And, no, I am not joking.</p>
<p>None of this is limited to religion, by the way. It is how the curious
and persistent intellectual shifts their attention away from the
practicalities of daily life into questioning every possible detail
they are aware of. Overthinking is guaranteed to happen if you are
strict about “the truth”, because you need to be rigorous throughout
and to apply the highest possible standard in your scrutiny.
Overthinking is not a viable path because our body prevents us from
withdrawing into a world of pure thought until we can figure out
everything: the body demands action, so we accept our condition as
embodied mind.</p>
<p>A sustainable option for the uncompromising thinker is to learn how to
thrive in liminality: to live between fact and fiction, to study the
data while also discerning in it abstract structure, with one foot in
the world of practicality and another in the world of thought.</p>
<p>Those granted, faith performs the vital function of keeping people
involved and committed to the collective good. This is what religion
can do best. The average believer is not questioning their precepts:
those are not negotiable for the very practical reason that the person
who is not ready to think things through will make a mess out of their
own life, just how the person under the sway of scientism does. The
precepts are there to give people support on all those issues where
they need it.</p>
<p>And here, too, the typical modern person errs because they conflate
the freedom of opinion with the capacity to live with the consequences
of one’s thoughts/deeds. Everybody can speak their mind, but few will
actually commit to the unflinching pursuit of their thoughts and live
accordingly. Fewer still will do it even if it involves great personal
cost, like in the cases of Socrates and Baruch Spinoza.</p>
<h2>An empty shirt</h2>
<p>When we make a literal reading of symbols and names, we end up in a
situation where we have insufficient evidence to support our claims.
It is why such an approach tends to beget fanaticism, which escalates
into coercion, as it lacks the means of persuasion through reason.</p>
<p>The 20th century Greek poet Giorgos Seferis alludes to pointless
squabbles and campaigns in his poem <a href="https://www.greek-language.gr/digitalResources/literature/tools/concordance/browse.html?cnd_id=1&text_id=3175">Ελένη (Helen)</a>,
which concludes with why would people do all this warfare and constant
struggle:</p>
<blockquote>
<p>για ένα πουκάμισο αδειανό για μιαν Ελένη</p>
<p>[for an empty shirt for a Helen]</p>
</blockquote>
<p>“Helen” here is a reference to Helen of Troy. She is the stated reason
for the Trojan War. Helen is not an actual person. She is a symbol, a
metaphor, an artistic device to communicate something deeper. In Helen
we find the recklessness of people, for example: people who kill each
other over unattainable trophies.</p>
<p>Helen is a myth, which remains ever-relevant. There is such a Helen
right now in the Middle East, where the United States is waging a war
on Iran over unclear goals and with no coherent strategy. A Helen
exists in Eastern Europe for similar reasons, for the Russians, the
Ukrainians, and those in the European Union.</p>
<p>In the context of religiosity, Helen as the empty shirt is what we get
when we lose sight of the teachings and insist on the reality of the
names or stated claims. This is not mere distraction though. It is far
more pernicious, as it begets the kind of fanaticism that says “my god
is more real than your practices” and then brings fire and steel on
them. It is the same fanaticism that in many parts of the world
continues to haunt those who believe in something different; the
fanaticism that makes the perpetrators feel righteous and justified
about all the atrocities they commit.</p>
<p>We do not get such phenomena in discussions that stick to the facts or
in those conversations which at the outset admit to their allegorical
character. Where we find unreasonableness is when symbols are taken
literally. This happens with religion, though it also happens with
sport when our team’s colours become our identity that pits us against
all other supporters via hooliganism, or in art when we wage culture
wars over whether the Helen character in Christopher Nolan’s Odyssey
movie can be a black woman or not (again, Helen is fiction, not an
actual Greek woman of antiquity). These are all empty shirts, which
nevertheless have the potential to lead to actual harm.</p>
<p>The intellectual’s responsibility is to stay focused on the essence,
avoid empty shirts, and communicate with others dispassionately so
that they also focus on what is the deeper issue.</p>
<h2>A matter of initiative</h2>
<p>With those granted, we are left with how I originally concluded my
previous article about <a href="https://protesilaos.com/commentary/2026-08-03-way-wizard/">the way of the wizard</a> (2026-08-03):</p>
<blockquote>
<p>Perhaps, then, the safest option is become a wizard yourself.</p>
</blockquote>
<p>The wizard I have in mind is the philosopher (literally “friend of
wisdom”) who learns to deal with that which is liminal; the person who
goes beyond the apparent tension between fact and fiction, religion
and science.</p>
<p>The point here is not to demand personal accountability for systemic
phenomena as that would be unfair, but to suggest that those who are
concerned about what is happening around them have to start from
somewhere.</p>
<p>If we see the world that envelops us erode before our eyes and if we
believe that we have the means to do something, then we act to the
best of our abilities with the hope that others will be inspired to do
the same. In the process, we recognise that there may be compromises
along the way and that efforts will have to continue over the
long-term.</p>
<p>This is how I approach it for my immediate environment: I have no
material resources to donate and no army of volunteers to mobilise. I
am just a dude with a blog living in a remote mountainous region. I
have ideas that I am sharing without strings attached. Fundamentally,
I remind people to not take themselves too seriously because that is
how they self-destruct or destroy others.</p>
<p>Maybe those combined with my admittedly limited efforts to make
connections and maintain a semblance of community can amount to
something. Though there is a chance that they will not achieve
anything because I simply am not the right person for this sort of
initiative. I cannot know unless I try in earnest. Since there is
nobody else I know who is leading by example, I will do my part and
see what happens.</p>
<p>It is my style to not make promises or talk big: I do what I have
thought through very carefully, live with the consequences of my
actions without regrets, and then I comment at length on what I have
learnt.</p>Wednesday, August 5, 2026 - Baty.nethttps://baty.net/journal/05Aug26/2026-08-05T09:53:47.000Z<p>I've stepped away from blogging and social media for nearly a week. RSS feeds have been my only consumption engine. I like it this way. Mastodon starts to feel repetitive after a while. My blogging has been repetitive for 20 years. It's a little depressing how little has changed. How little <em>I've</em> changed. I may decide to quit blogging altogether, but, repetitive or not, I feel invisible when I'm not writing <em>somewhere</em>.</p>
<hr />
<p><a href="mailto:jack@baty.net?subject=[Baty.net] Re: Wednesday%2C%20August%205%2C%202026">✍️ Reply by email</a></p>Space (making) - James' Coffee Bloghttps://jamesg.blog/2026/08/05/space-making2026-08-05T00:00:00.000Z
<style media="(prefers-color-scheme: dark)">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #49483e }
.highlight { background: #272822; color: #F8F8F2 }
.highlight .c { color: #959077 } /* Comment */
.highlight .err { color: #ED007E; background-color: #1E0010 } /* Error */
.highlight .esc { color: #F8F8F2 } /* Escape */
.highlight .g { color: #F8F8F2 } /* Generic */
.highlight .k { color: #66D9EF } /* Keyword */
.highlight .l { color: #AE81FF } /* Literal */
.highlight .n { color: #F8F8F2 } /* Name */
.highlight .o { color: #FF4689 } /* Operator */
.highlight .x { color: #F8F8F2 } /* Other */
.highlight .p { color: #F8F8F2 } /* Punctuation */
.highlight .ch { color: #959077 } /* Comment.Hashbang */
.highlight .cm { color: #959077 } /* Comment.Multiline */
.highlight .cp { color: #959077 } /* Comment.Preproc */
.highlight .cpf { color: #959077 } /* Comment.PreprocFile */
.highlight .c1 { color: #959077 } /* Comment.Single */
.highlight .cs { color: #959077 } /* Comment.Special */
.highlight .gd { color: #FF4689 } /* Generic.Deleted */
.highlight .ge { color: #F8F8F2; font-style: italic } /* Generic.Emph */
.highlight .ges { color: #F8F8F2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #F8F8F2 } /* Generic.Error */
.highlight .gh { color: #F8F8F2 } /* Generic.Heading */
.highlight .gi { color: #A6E22E } /* Generic.Inserted */
.highlight .go { color: #66D9EF } /* Generic.Output */
.highlight .gp { color: #FF4689; font-weight: bold } /* Generic.Prompt */
.highlight .gs { color: #F8F8F2; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #959077 } /* Generic.Subheading */
.highlight .gt { color: #F8F8F2 } /* Generic.Traceback */
.highlight .kc { color: #66D9EF } /* Keyword.Constant */
.highlight .kd { color: #66D9EF } /* Keyword.Declaration */
.highlight .kn { color: #FF4689 } /* Keyword.Namespace */
.highlight .kp { color: #66D9EF } /* Keyword.Pseudo */
.highlight .kr { color: #66D9EF } /* Keyword.Reserved */
.highlight .kt { color: #66D9EF } /* Keyword.Type */
.highlight .ld { color: #E6DB74 } /* Literal.Date */
.highlight .m { color: #AE81FF } /* Literal.Number */
.highlight .s { color: #E6DB74 } /* Literal.String */
.highlight .na { color: #A6E22E } /* Name.Attribute */
.highlight .nb { color: #F8F8F2 } /* Name.Builtin */
.highlight .nc { color: #A6E22E } /* Name.Class */
.highlight .no { color: #66D9EF } /* Name.Constant */
.highlight .nd { color: #A6E22E } /* Name.Decorator */
.highlight .ni { color: #F8F8F2 } /* Name.Entity */
.highlight .ne { color: #A6E22E } /* Name.Exception */
.highlight .nf { color: #A6E22E } /* Name.Function */
.highlight .nl { color: #F8F8F2 } /* Name.Label */
.highlight .nn { color: #F8F8F2 } /* Name.Namespace */
.highlight .nx { color: #A6E22E } /* Name.Other */
.highlight .py { color: #F8F8F2 } /* Name.Property */
.highlight .nt { color: #FF4689 } /* Name.Tag */
.highlight .nv { color: #F8F8F2 } /* Name.Variable */
.highlight .ow { color: #FF4689 } /* Operator.Word */
.highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */
.highlight .w { color: #F8F8F2 } /* Text.Whitespace */
.highlight .mb { color: #AE81FF } /* Literal.Number.Bin */
.highlight .mf { color: #AE81FF } /* Literal.Number.Float */
.highlight .mh { color: #AE81FF } /* Literal.Number.Hex */
.highlight .mi { color: #AE81FF } /* Literal.Number.Integer */
.highlight .mo { color: #AE81FF } /* Literal.Number.Oct */
.highlight .sa { color: #E6DB74 } /* Literal.String.Affix */
.highlight .sb { color: #E6DB74 } /* Literal.String.Backtick */
.highlight .sc { color: #E6DB74 } /* Literal.String.Char */
.highlight .dl { color: #E6DB74 } /* Literal.String.Delimiter */
.highlight .sd { color: #E6DB74 } /* Literal.String.Doc */
.highlight .s2 { color: #E6DB74 } /* Literal.String.Double */
.highlight .se { color: #AE81FF } /* Literal.String.Escape */
.highlight .sh { color: #E6DB74 } /* Literal.String.Heredoc */
.highlight .si { color: #E6DB74 } /* Literal.String.Interpol */
.highlight .sx { color: #E6DB74 } /* Literal.String.Other */
.highlight .sr { color: #E6DB74 } /* Literal.String.Regex */
.highlight .s1 { color: #E6DB74 } /* Literal.String.Single */
.highlight .ss { color: #E6DB74 } /* Literal.String.Symbol */
.highlight .bp { color: #F8F8F2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #A6E22E } /* Name.Function.Magic */
.highlight .vc { color: #F8F8F2 } /* Name.Variable.Class */
.highlight .vg { color: #F8F8F2 } /* Name.Variable.Global */
.highlight .vi { color: #F8F8F2 } /* Name.Variable.Instance */
.highlight .vm { color: #F8F8F2 } /* Name.Variable.Magic */
.highlight .il { color: #AE81FF } /* Literal.Number.Integer.Long */ .highlight .nn, .highlight .n{color: light-dark(black, var(--dark-foreground-color)) }</style><style media="(prefers-color-scheme: light)">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #F00 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #04D } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #00F; font-weight: bold } /* Name.Class */
.highlight .no { color: #800 } /* Name.Constant */
.highlight .nd { color: #A2F } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #00F } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #00F; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #A2F; font-weight: bold } /* Operator.Word */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #666 } /* Literal.Number.Bin */
.highlight .mf { color: #666 } /* Literal.Number.Float */
.highlight .mh { color: #666 } /* Literal.Number.Hex */
.highlight .mi { color: #666 } /* Literal.Number.Integer */
.highlight .mo { color: #666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #00F } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666 } /* Literal.Number.Integer.Long */</style>
<style>
@font-face {
font-family: 'MonaspaceArgon';
src: url('/assets/fonts/MonaspaceArgon-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
pre, code {
font-family: 'MonaspaceArgon', ui-monospace, monospace;
}
</style>
<div class="highlight"><pre><span></span><span class="p"><</span><span class="nt">style</span><span class="p">></span>
<span class="w"> </span><span class="p">.</span><span class="nc">navigation</span><span class="o">,</span><span class="w"> </span><span class="nt">details</span><span class="o">,</span><span class="w"> </span><span class="nt">summary</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">display</span><span class="p">:</span><span class="w"> </span><span class="kc">none</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">@</span><span class="k">media</span><span class="w"> </span><span class="o">(</span><span class="nt">max-width</span><span class="o">:</span><span class="w"> </span><span class="nt">40em</span><span class="o">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="p">.</span><span class="nc">site-name-mobile</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">margin</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="cp">!important</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">.</span><span class="nc">navigation-full</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">align-content</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span><span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="p"></</span><span class="nt">style</span><span class="p">></span>
</pre></div>
<!--kg-card-begin: html-->
<style>
.navigation, details, summary { display: none; }
@media (max-width: 40em) {
.site-name-mobile { margin: 0 !important; }
.navigation-full { align-content: center; }
}
</style>
<!--kg-card-end: html-->
Space - James' Coffee Bloghttps://jamesg.blog/2026/08/05/space-22026-08-05T00:00:00.000Z
<p></p><p></p>
<!--kg-card-begin: html-->
<style>
.navigation, details, summary { display: none; }
@media (max-width: 40em) {
.site-name-mobile { margin: 0 !important; }
.navigation-full { align-content: center; }
}
</style>
<!--kg-card-end: html-->
Museums - James' Coffee Bloghttps://jamesg.blog/2026/08/05/museums-22026-08-05T00:00:00.000Z
<p>Earlier this week I was thinking about inspiration – what inspires me to write? Nature, friends, what I see in the world as I walk around – all these are the basis of many of my blog posts. Museums, too, inspire me, both to think and to create. When I am in a museum, I can get lost in an artwork, ebbing between the beauty of a piece and then, afterwards, studying the work – what can I see, what do I see.</p><p>Whenever I spent time in galleries, I lose track of time. Half an hour can pass as if it were a minute. I might spend all that time in a single room, perhaps with only a few works that really stand out to me. I wonder if the more I look, the more I make a memory of a piece or a place, ready for me whenever I want to spend time with art. For instance, writing this paragraph reminded me of an exhibit of British landscape paintings I attended at the Courtauld Institute earlier this year. I remember spending so much time in the room, eager to see every painting, each one as fascinating as the last.</p><p><a href="https://dead.garden/blog/museum--guestbooks.html">Jo</a>’s blog post on museums and guestbooks made me think of museums as creative spaces: as a place not only to see art, but to make art, too. For me, I like to keep my notes handy, ready to capture anything I observe: a particular painting that stands out, a sound, an idea for a story, a point I will want to research later. I also love seeing people sketch and draw, practicing techniques and creating art from what they see. Jo’s blog post made me think of photography in a similar way: taking photos as part of a creative practice. In Jo’s case, the photos transform what is in the gallery, giving them a new perspective by product of the medium.</p><p>Every time I visit a gallery I see something new within the old, even if I have visited a dozen or more times before. Museums feel like a home away from home.</p>
<a class="tag" href="https://dead.garden/blog/museum--guestbooks.html">Jo</a>
Emacs: the ‘speedbar’ built-in file explorer (Emacs 31) - Protesilaos Stavrou: Master feed with all updateshttps://protesilaos.com/codelog/2026-08-05-emacs-speedbar-file-explorer/2026-08-05T00:00:00.000Z<p>In this video I demonstrate the built-in ‘speedbar’ command. This is
the file explorer that Emacs ships with. Starting with Emacs 31, the
‘speedbar’ can be configured to appear on the side of the frame.
Whereas the default is to show up in a separate frame. To me, the
default is impractical, whereas the new option turns ‘speedbar’ into a
very useful piece of functionality.</p>