~hedy's blogroll - BlogFlock The blogroll listed on my website. https://home.hedy.dev/blogroll/ 2026-08-10T04:15:49.628Z BlogFlock Seirdy, erock, James' Coffee Blog, Sloum, Manuel Moreale RSS Feed, Protesilaos Stavrou: Master feed with all updates, Ploum.net, ~hedy, Baty.net MarkText - Baty.net https://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.net https://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.net https://baty.net/notes/2026/08/photography-substacks/ 2026-08-09T13:04:27.000Z <p>Yes, I know, &quot;Substack is horrible...&quot; 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.net https://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 updates https://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 Blog https://jamesg.blog/2026/08/09/evening-2 2026-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&amp;&amp;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&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> A diminishing portfolio - Baty.net https://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.net https://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 &quot;Middlemarch&quot;, but I've slowed down</li> <li><strong>WATCHING</strong>: &quot;Gone&quot; 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, &quot;When did THING happen?&quot;, 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 &quot;Family Day&quot; 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.net https://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 updates https://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 Blog https://jamesg.blog/2026/08/08/html-day-2026 2026-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&amp;&amp;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&amp;&amp;(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 Blog https://jamesg.blog/2026/08/07/the-sound-of-writing 2026-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&amp;&amp;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&amp;&amp;(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 updates https://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 Blog https://jamesg.blog/2026/08/06/morning-2 2026-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&amp;&amp;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&amp;&amp;(document.onreadystatechange=e,c())}}}})();</script> Metaphor and fact in religiosity - Protesilaos Stavrou: Master feed with all updates https://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&amp;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.net https://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 Blog https://jamesg.blog/2026/08/05/space-making 2026-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">&lt;</span><span class="nt">style</span><span class="p">&gt;</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">&lt;/</span><span class="nt">style</span><span class="p">&gt;</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 Blog https://jamesg.blog/2026/08/05/space-2 2026-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 Blog https://jamesg.blog/2026/08/05/museums-2 2026-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 updates https://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>