<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Protesilaos: Master feed with all updates</title>
    <description>Master feed with all updates</description>
    <link>https://protesilaos.com/</link>
    <atom:link href="https://protesilaos.com/master.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 25 Jun 2026 11:12:42 +0000</pubDate>
    
    
    <item>
      <title>Français: Ça qui est corrigible</title>
      <description>Un note en sujet de la condition humaine, qui est notre corrigibilité.</description>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/french/2026-06-25-qui-est-corrigible/</link>
      <guid isPermaLink="true">https://protesilaos.com/french/2026-06-25-qui-est-corrigible/</guid>
      <content:encoded><![CDATA[<p>J’écris pour pratiquer ma Français. Il y a plein des fautes en ces
notes ci. Collectivement ces sont la réflection de ma qualité en
présent.</p>

<p>Je crois que tous que je publies est corrigible. Pas seulement les
textes Françaises, dont je pratiques la langue, mais la totalité de
mes publications. Il y aucun instance de ma vie, de moi même, qui est
parfait.</p>

<p>Je ne suis pas perfectionniste parce que j’ai accepté la réalité de la
condition humaine: notre corrigibilité. Mes efforts produisent des
résultats que je les considères «assez bon». Ça veut dire qu’ils sont
quatre vingts (les Wallons disent «ûtante») pour cent de le standard.
Le standard est ça qui est le meilleure, mais même ça n’est pas
parfait.</p>

<p>Malgré mes limitations, j’ai l’attitude positif: de travailler en
continu, de compéter sincèrement, et d’accepter la réalité suivi.</p>

<p>Ça qui est corrigible est la matériel de le personne créative; le
personne qui renouvelle lui chaque jour par faire plus en plus des
fautes qui doivent être améliorer aux matériels suivant. Et la vie
continue.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Français: Les habitudes changent</title>
      <description>Je continuais pratiquer la langue Française.</description>
      <pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/french/2026-06-24-les-habitudes-changent/</link>
      <guid isPermaLink="true">https://protesilaos.com/french/2026-06-24-les-habitudes-changent/</guid>
      <content:encoded><![CDATA[<p>Les habitudes nous permettons à être efficace et à agir sans
considérant les détailles chaque fois. Néanmoins, les habitudes
doivent changer marginalement ou profondément pour notre développement
vertueuse continuel.</p>

<p>En ce sujet là, j’ai commencé à lire et à écrire en Français. Le
grand plan est de pratiquer la langue jusqu’au point de compétence.</p>

<p>J’ai appris Français à l’école et j’ai l’utilisais par mon travail
avec les touristes et après au Parlement Européenne. Grèce et Chypre,
ou j’habitais maintenant à ma maison dans les montagnes, sons
destinations touristiques.</p>

<p>Je suis un homme qui ne parler pas beaucoup. Ou, si tu préfères, qui
ne parles pas sans raison. Quand je dis quelque chose, je veux
m’exprimer correctement et précisément.</p>

<p>L’Anglais ça devenu ma langue maternelle adopté, peut-être en mémé
qualité que ma Grecque. Si je pratiquer les Français j’ai l’espoir que
depuis quelques ans je deviendrai effective à m’exprimer parfaitement.</p>

<p>Celles sont les premières journées. Les mots ces reviennent. J’ai le
patience et la détermination de continuer. Chaque contribution a plein
des erreurs: ses sont la vrai réflection de ma qualité en présent.</p>

<p>Tous que je veux ultimement est la vérité. Très bien!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Français: Pour écrire, pour pratiquer</title>
      <description>Je veux pratiquer la langue Française. Cet article simple est mon primer contribution on ce projet.</description>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/french/2026-06-23-pour-ecrire-pour-pratiquer/</link>
      <guid isPermaLink="true">https://protesilaos.com/french/2026-06-23-pour-ecrire-pour-pratiquer/</guid>
      <content:encoded><![CDATA[<p>Ça fait déjà plusieurs années que j’ai parlai en Français. J’ai oublié
tout le mots… Donc c’est difficile de m’exprimer en sujets que
m’intéresses comme la philosophie que j’appliquais chaque jour. Ce que
je peux faire aujourd’hui est d’écrire. Mon objectif est de pratiquer
la langue: de présenter les idées simples.</p>

<p>Comme je veux devenir plus capable à m’exprimer en Français, je ne
vais pas chercher pour les réponses en ligne. Pour moi, c’est
préférable d’avoir des erreurs. Rétrospectivement, je pourrai comparer
mes textes pour voir ma progrès.</p>

<p>Ma méthode de créativité s’appelle “alla prima”. J’ai pris la terme
par l’histoire de peinture. L’objectif es de finaliser un oeuvre en
premier effort et d’accepter le résultat. Mémé ci est une méthode
nominalement artistique, je crois que son application est plus
générale. Quand j’ai joue en bout (foot? football?), par exemple, je
n’avais pas l’option de théoriser: chaque action demandais l’esprit
décisive et le caractère qui est content avec les imperfections. La
performance dépend en tous les préparations pour le match.</p>

<p>Je suis un artiste, un athlète, un philosophe, et plus, si tu veux.
C’est facile de trouver les thèmes qui ont commun.</p>

<p>J’habitai en montagne de Chypre. Il n’y a pas des gens ici qui parlent
Français. Si je trouverai quelqu’un ça va être à l’Internet. Peut
être, c’est comme ça pour tous mes intérêts. “Pas de problème; pas de
souci!” Cela est mon attitude en face des phénomènes quotidiennes. Et
concernant les erreurs en cet article là? Tu connais ma réponse: pas
de problème; pas de souci!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: With moonward fist</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-06-23-with-moonward-fist/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-06-23-with-moonward-fist/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>With moonward fist
measured steps I make
to silence the voice
that delights in pity
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>On the strategic consequences of the US-Iran deal</title>
      <description>The US-Iran negotiations are part of a wider shift towards a new world order.</description>
      <pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-06-22-strategic-consequences-us-iran-deal/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-06-22-strategic-consequences-us-iran-deal/</guid>
      <content:encoded><![CDATA[<p>Representatives from the United States and Iran are already meeting in
Switzerland to agree on a permanent end to the war. Many important
details remain unknown, though the way things are set is already
giving us an indication of what to expect.</p>

<p>Both sides can claim victory. Though it is only a Pyrrhic one: another
such moment of glory and they will be destroyed. Iran’s military and
civilian infrastructure has been degraded, while its economy is
reeling. They can keep on fighting, if necessary, at the expense of
their longer-term wellness. Similarly, the Americans do not have the
capacity to persist on a war of attrition, given their exposure to
many other fronts around the globe.</p>

<p>Israel, one of the belligerents, is noticeably absent from the talks.
This may be presented as a diplomatic debacle, though I think it is a
win. The Israelis retain maximum flexibility to consolidate what they
have gained over the past months. They see their wars as integral to
their survival, while the Americans are merely fighting for extra
profits. Whether with Benjamin Netanyahu in charge or another
government, there is no way for Israel to give up on its campaign in
Lebanon and its ongoing operations on Palestinian lands.</p>

<p>For their part, the Iranians have hitherto maintained an expansionist
agenda. They have instrumentalised Shia populations and other groups
in the wider region in order to extend control beyond their borders.
The series of events since October 7 leading up to the present have
made Iran’s foreign policy posture untenable. There is no land
corridor anymore between the Iranian heartland and the Eastern
Mediterranean. Whatever support the regime expresses towards Hezbollah
cannot be sustained and shall become increasingly tokenistic.</p>

<p>Israel understands this dynamic and is thus galvanised to inflict
maximum damage in Southern Lebanon at a relatively low cost. Israel
does not have enthusiastic friends in the international community
while support for it even among American voters is decreasing. Still,
the logic of geopolitics demands that it pursues its ends with
determination. Electorates have short memories. Whatever is lost now
on the popularity front can be regained. What matters is the situation
on the ground, where Israel remains dominant. The ongoing negotiations
in Switzerland cannot undo this reality: only more war can, for which
there is little appetite.</p>

<p>The Arab nations in the Gulf stand at a crossroads. The presence of
American armed forces in the region did not prove beneficial to them.
Their economies suffered greatly from the conflict. They still have
options though: to continue as part of the Western security-financial
architecture or to diversify their foreign policy with a pivot towards
the Chinese and South-East Asian countries (where there are large
Muslim populations, no less). The latter may be the only viable option
given that (i) America has no pressing need for Middle Eastern oil
while the Asians depend on it, and (ii) Iran is capable enough to
pummel US bases around its borders. The Arabs do not gain from being
Western protectorates the way Israel does.</p>

<p>Of great significance is the outcome of the negotiations with regard
to the Strait of Hormuz: will free passage be the norm or are we
moving towards a new arrangement where transit fees are imposed. To
return to the status quo ex ante, the Americans will have to remain in
the region or some equivalent power structure will need to be
established. However that is done, it does not resolve the tensions
that produced this war. Iran wants a permanent cessation of
hostilities and the best guarantee to that end is the withdrawal of
enemy forces from its neighbourhood. Consequently, we will likely have
a new normal in Hormuz where Iran and regional partners are imposing
tolls or other restrictions.</p>

<p>The Hormuz precedent is bound to change the face of maritime trade
over the medium-to-long-term. Every country that has access to a
chokepoint will have a strong incentive to assert its sovereignty in
pursuit of immediate gains. And while free trade can be construed as a
vestige of Western colonialism, which can then be criticised as such,
the turn to sovereignism will necessarily engender the conditions for
the resurgence of wanton piracy at the high seas. The reason for that
is that major trading partners will have to find ways to keep trade
routes profitable at the expense of the various sovereignists holding
on to the chokepoints. Ergo commercial ships accompanied by military
vessels and equipped with the appropriate hardware and ergo the need
for safe havens, aka colonies, along the shipping lanes.</p>

<p>Put differently, these are not the machinations of some shadowy
imperialism. It is how things work. International trade, colonialism,
and piracy are facets of the same phenomenon, namely, access to and
distribution of resources across countries. Which facet is more
relevant depends on the prevailing norms.</p>

<p>The international order lacks a sovereign. Its laws are implemented on
the basis of convenience. With the Americans no longer having the
capacity to police the globe, the notion of a rules-based society of
nations is becoming increasingly unrealistic. The United Nations do
not have the means to enforce their collective will. The cracks are
obvious in Palestine, for example. All the UN officials can do is make
strongly worded pronouncements, which can be safely ignored.</p>

<p>The multipolar world order is inexorably on the rise. It will not
necessarily be a prettier place. Yes, it signals the end of
Americanism and Western supremacy more broadly, though it also is the
death knell of the UN, at least in terms of substance. International
law will give way in earnest to localised arrangements of power which
shall be codified in inter-state covenants without reference to an
overarching framework of legality. Thus an ever-more divided world is
upon us.</p>

<p>Away from the fray of the Middle East, yet directly linked to the
transition towards multipolarity, is the situation in Ukraine. The
Russians are making slow yet steady advances in the Donbas region,
where even the BBC is now reporting that the <a href="https://www.bbc.com/news/articles/c9w2g0ewk95o">Ukrainian position is
dire</a>. This despite
the positive press that drone strikes on Russian civilian
infrastructure have in the West. European leaders know this is a
shadow play. They want to keep Zelenskyy afloat to service their own
interests. Though it is becoming apparent that Russia is winning on
the ground and will only settle for peace on its own terms. Again, a
multipolar world is not necessarily going to be pretty.</p>

<p>What unfolds in Iran reverberates in Eastern Europe and the Levant.
Donald Trump is a master of distraction who effectively hides the
decline of the USA behind personal theatrics. He understands that he
speaks to a low attention span audience and has optimised his policy
orientations accordingly. What matters is the impression, the brand of
a deal-maker and decisive leader who makes his supporters feel good
about themselves. People forget how things were very quickly.
Illusionist gimmicks have yielded domestic success though geopolitics
is not done with smoke and mirrors. President Trump does not wield the
power he would like to have. International affairs continue to evolve
as more spheres of influence are taking form.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: relaxing at home</title>
      <description>Take a rest while at home.</description>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-06-21-relaxing-at-home/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-06-21-relaxing-at-home/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: modus-themes version 5.3.0</title>
      <description>Information about the latest version of my highly accessible themes for GNU Emacs.</description>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-06-21-emacs-modus-themes-5-3-0/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-06-21-emacs-modus-themes-5-3-0/</guid>
      <content:encoded><![CDATA[<p>I just published the latest stable release of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
themes</a>. The change log
entry is reproduced further below. For any questions, you are welcome
to <a href="https://protesilaos.com/contact/">contact me</a>. I will now work to
apply these same changes to emacs.git, so please wait a little longer
for the updates to trickle down to you.</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">modus-themes</code> (also built into Emacs 28+)</li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a></li>
  <li>Change log: <a href="https://protesilaos.com/emacs/modus-themes-changelog">https://protesilaos.com/emacs/modus-themes-changelog</a></li>
  <li>Colour palette: <a href="https://protesilaos.com/emacs/modus-themes-colors">https://protesilaos.com/emacs/modus-themes-colors</a></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/modus-themes-pictures">https://protesilaos.com/emacs/modus-themes-pictures</a></li>
  <li>Git repositories:
    <ul>
      <li>GitHub: <a href="https://github.com/protesilaos/modus-themes">https://github.com/protesilaos/modus-themes</a></li>
      <li>GitLab: <a href="https://gitlab.com/protesilaos/modus-themes">https://gitlab.com/protesilaos/modus-themes</a></li>
    </ul>
  </li>
  <li>Backronym: My Old Display Unexpectedly Sharpened … themes.</li>
</ul>

<hr />

<h2>5.3.0 on 2026-06-21</h2>

<p>The Modus themes are in a stable state. To my mind, they provide the
best “default theme” experience across the 40+ original themes I have
carefully designed.</p>

<p>Modus is also a platform for making themes for Emacs. There are plenty
of derivatives already. I am linking to them through the project’s
README.md and am always happy to mention more packages—just let me
know.</p>

<p>This version does not include many user-facing changes. Most of my
work focused on making internal refinements.</p>

<h3>Load the themes through the <code class="language-plaintext highlighter-rouge">early-init.el</code></h3>

<p>The Modus themes can now be loaded through the <code class="language-plaintext highlighter-rouge">early-init.el</code> file.
The idea is to avoid the flash of light that occurs under certain
conditions during startup.</p>

<p>This feature is the result of several changes to helper functions,
especially those contributing to the <code class="language-plaintext highlighter-rouge">modus-themes-generate-palette</code>
function that Modus derivatives may be relying on.</p>

<p>Thanks to Steven Allen for an intermediate refinement in pull request
194 and to Mike Olson for another relevant tweak in pull request 199:</p>

<ul>
  <li><a href="https://github.com/protesilaos/modus-themes/pull/194">https://github.com/protesilaos/modus-themes/pull/194</a></li>
  <li><a href="https://github.com/protesilaos/modus-themes/pull/199">https://github.com/protesilaos/modus-themes/pull/199</a></li>
</ul>

<p>Steven’s contribution no longer exists in the code base due to other
changes I made, but was still useful at the time.</p>

<p>Both changes are small, meaning that their authors do not need to
assign copyright to the Free Software Foundation.</p>

<p>Also thanks to Jacod “Jake” Gordon for reminding me to apply one of
the new functions to the <code class="language-plaintext highlighter-rouge">org-habit</code> faces. This was done in issue
197: <a href="https://github.com/protesilaos/modus-themes/issues/197">https://github.com/protesilaos/modus-themes/issues/197</a>.</p>

<h3>The underline for widget fields has the correct colour</h3>

<p>Relevant faces use the palette entry for <code class="language-plaintext highlighter-rouge">border</code> (invoke the command
<code class="language-plaintext highlighter-rouge">modus-themes-preview-colors</code> or <code class="language-plaintext highlighter-rouge">modus-themes-preview-colors-current</code>
to view the entries in a theme’s palette).</p>

<p>A popular package that makes use of <code class="language-plaintext highlighter-rouge">widget.el</code> widgets is <code class="language-plaintext highlighter-rouge">notmuch</code>.</p>

<p>Thanks to ukiran03 for the contribution, which was done in pull
request 193: <a href="https://github.com/protesilaos/modus-themes/pull/193">https://github.com/protesilaos/modus-themes/pull/193</a>.
The change is small, meaning that ukiran03 does not need to assign
copyright to the Free Software Foundation.</p>

<h3>A palette can now have a <code class="language-plaintext highlighter-rouge">bg-popup</code> entry</h3>

<p>This gives users and derivative themes the option to pick a suitable
value for popup interfaces, such as those of the <code class="language-plaintext highlighter-rouge">company</code> and <code class="language-plaintext highlighter-rouge">corfu</code>
packages.</p>

<p>Thanks to aikrahguzar for making this suggestion in issue 70 of my
<code class="language-plaintext highlighter-rouge">ef-themes</code> repository (the <code class="language-plaintext highlighter-rouge">ef-themes</code> are built on top of the
<code class="language-plaintext highlighter-rouge">modus-themes</code> since Modus version <code class="language-plaintext highlighter-rouge">5.0.0</code>, Ef version <code class="language-plaintext highlighter-rouge">2.0.0</code>):
<a href="https://github.com/protesilaos/ef-themes/issues/70">https://github.com/protesilaos/ef-themes/issues/70</a>.</p>

<h3>Support for faces or packages</h3>

<ul>
  <li><code class="language-plaintext highlighter-rouge">lin</code> by Protesilaos.</li>
  <li><code class="language-plaintext highlighter-rouge">pulsar</code> by Protesilaos.</li>
  <li><code class="language-plaintext highlighter-rouge">institution-calendar</code> by Protesilaos.</li>
  <li><code class="language-plaintext highlighter-rouge">markdown-ts-mode</code> by Rahul Martim Juliato and Stéphane Marks.</li>
  <li><code class="language-plaintext highlighter-rouge">trust-manager</code> by Eshel Yaron.</li>
  <li><code class="language-plaintext highlighter-rouge">typst-ts-mode</code> by Ziqi Yang. Thanks to Pranshu Sharma for
suggesting its inclusion in issue 208: <a href="https://github.com/protesilaos/modus-themes/issues/208">https://github.com/protesilaos/modus-themes/issues/208</a>.</li>
  <li>new <code class="language-plaintext highlighter-rouge">elfeed</code> faces since the maintenance of the project was assumed
by Daniel Mendler, Karthik Chikmagalur, and Ihor Radchenko. To this
end, thanks to Steven Allen for pull request 217 that added the
<code class="language-plaintext highlighter-rouge">elfeed-show-*</code> faces: <a href="https://github.com/protesilaos/modus-themes/pull/217">https://github.com/protesilaos/modus-themes/pull/217</a></li>
</ul>

<h3>Internal refinements to the <code class="language-plaintext highlighter-rouge">modus-themes-with-colors</code> macro</h3>

<p>It now correctly handles the order of default palette colours and
user-defined palette overrides. Thanks to JD Smith for the
contribution in pull request 191: <a href="https://github.com/protesilaos/modus-themes/pull/191">https://github.com/protesilaos/modus-themes/pull/191</a>.</p>

<p>The change is small, meaning that JD does not need to assign copyright
to the Free Software Foundation.</p>

<h3>The <code class="language-plaintext highlighter-rouge">multiple-cursors</code> are fine even when a bar is used</h3>

<p>When the <code class="language-plaintext highlighter-rouge">cursor-type</code> is configured to be a <code class="language-plaintext highlighter-rouge">bar</code>, the fake cursors
produced by the <code class="language-plaintext highlighter-rouge">multiple-cursors</code> package will still look right.
Thanks to Elias Gabriel Perez for the change to the
<code class="language-plaintext highlighter-rouge">mc/cursor-bar-face</code> in pull request 213: <a href="https://github.com/protesilaos/modus-themes/pull/213">https://github.com/protesilaos/modus-themes/pull/213</a>.</p>

<h3>The <code class="language-plaintext highlighter-rouge">blink-matching-paren-offscreen</code> is the same as <code class="language-plaintext highlighter-rouge">show-paren-match</code></h3>

<p>This is for thematic consistency. Thanks to Troy Brown for suggesting
this change in issue 209: <a href="https://github.com/protesilaos/modus-themes/issues/209">https://github.com/protesilaos/modus-themes/issues/209</a>.</p>

<h3>Get <code class="language-plaintext highlighter-rouge">vc-annotate</code> look right</h3>

<p>The built-in <code class="language-plaintext highlighter-rouge">vc-annotate</code> command relies on a user option to read
color values. We cannot handle this nicely at the theme level. Users
need to write their own configuration like this:</p>

<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-modus-vc-annotate</span> <span class="p">(</span><span class="k">&amp;rest</span> <span class="nv">_</span><span class="p">)</span>
  <span class="p">(</span><span class="nv">modus-themes-with-colors</span>
    <span class="p">(</span><span class="k">setq</span> <span class="nv">vc-annotate-background-mode</span> <span class="no">nil</span><span class="p">)</span>
    <span class="p">(</span><span class="k">setq</span> <span class="nv">vc-annotate-very-old-color</span> <span class="nv">fg-dim</span><span class="p">)</span>
    <span class="p">(</span><span class="k">setq</span> <span class="nv">vc-annotate-color-map</span>
          <span class="o">`</span><span class="p">((</span> <span class="mi">20.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">red</span><span class="p">)</span>
            <span class="p">(</span> <span class="mi">40.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">red-cooler</span><span class="p">)</span>
            <span class="p">(</span> <span class="mi">60.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">red-warmer</span><span class="p">)</span>
            <span class="p">(</span> <span class="mi">80.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">yellow-warmer</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">100.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">yellow</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">120.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">yellow-cooler</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">140.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">green-warmer</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">160.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">green</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">180.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">green-cooler</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">200.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">cyan-cooler</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">220.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">cyan-warmer</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">240.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">cyan</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">260.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">blue-warmer</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">280.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">blue</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">300.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">blue-cooler</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">320.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">blue-intense</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">340.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">magenta-cooler</span><span class="p">)</span>
            <span class="p">(</span><span class="mi">360.</span> <span class="o">.</span> <span class="o">,</span><span class="nv">fg-dim</span><span class="p">)))))</span>

<span class="p">(</span><span class="nv">with-eval-after-load</span> <span class="ss">'vc-annotate</span>
  <span class="p">(</span><span class="nv">my-modus-vc-annotate</span><span class="p">)</span>
  <span class="p">(</span><span class="nv">add-hook</span> <span class="ss">'enable-theme-functions</span> <span class="nf">#'</span><span class="nv">my-modus-vc-annotate</span><span class="p">))</span>
</code></pre></div></div>

<p>[ The above code is relevant as of this writing. Though remember that
  I do not keep older publications up-to-date. The only source of
  truth is the manual of the Modus themes. ]</p>

<h3>Two old user options are no longer needed</h3>

<p>The user options <code class="language-plaintext highlighter-rouge">modus-themes-completions</code> and <code class="language-plaintext highlighter-rouge">modus-themes-prompts</code>
are obsolete. They used to be relevant before the introduction of
palette overrides.</p>

<h3>Rewrote large parts of the manual</h3>

<p>I did it for clarity, but also to remove notes that were specific to
older versions of Emacs.</p>

<h3>Many new ERT tests for the project</h3>

<p>I have written many tests. They do not cover every single function,
though the plan is to do that eventually. These tests are important to
ensure that Modus is a solid platform for making derivative themes.</p>

<p>Much of this was done live: <a href="https://protesilaos.com/codelog/2026-04-10-emacs-spontaneous-live-modus-themes/">https://protesilaos.com/codelog/2026-04-10-emacs-spontaneous-live-modus-themes/</a>.</p>

<p>Thanks to Benjamin Kästner for a couple of tweaks to a relevant macro
in the tests’ file. This was done in pull request 212, with further
changes by me: <a href="https://github.com/protesilaos/modus-themes/pull/212">https://github.com/protesilaos/modus-themes/pull/212</a>.</p>

<h3>Links to projects related to Modus</h3>

<p>In the README.md I now mention projects that are related to the Modus
themes, such as derivative Emacs themes, but also ports for other
editors.</p>

<p>There is also a link to my <code class="language-plaintext highlighter-rouge">modus-themes-exporter</code> package, which I
developed during a live stream:</p>

<ul>
  <li><a href="https://github.com/protesilaos/modus-themes-exporter">https://github.com/protesilaos/modus-themes-exporter</a></li>
  <li><a href="https://protesilaos.com/codelog/2026-04-13-emacs-live-develop-modus-themes-exporter-package/">https://protesilaos.com/codelog/2026-04-13-emacs-live-develop-modus-themes-exporter-package/</a></li>
</ul>

<h3>Git commits</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git shortlog 5.2.0..5.3.0 --summary --numbered
    123	Protesilaos
     2	Benjamin Kästner
     2	Steven Allen
     1	Elias Gabriel Perez
     1	JD Smith
     1	Mike Olson
     1	ukiran03
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: ef-themes version 2.2.0</title>
      <description>Information about the latest version of my colourful-yet-legible themes for GNU Emacs.</description>
      <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-06-21-emacs-ef-themes-2-2-0/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-06-21-emacs-ef-themes-2-2-0/</guid>
      <content:encoded><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">ef-themes</code> are a collection of light and dark themes for GNU
Emacs that provide colourful (“pretty”) yet legible options for users
who want something with a bit more flair than the <code class="language-plaintext highlighter-rouge">modus-themes</code> (also
designed by me).</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">ef-themes</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/ef-themes">https://protesilaos.com/emacs/ef-themes</a></li>
  <li>Change log: <a href="https://protesilaos.com/emacs/ef-themes-changelog">https://protesilaos.com/emacs/ef-themes-changelog</a></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/ef-themes-pictures">https://protesilaos.com/emacs/ef-themes-pictures</a></li>
  <li>Git repositories:
    <ul>
      <li>GitHub: <a href="https://github.com/protesilaos/ef-themes">https://github.com/protesilaos/ef-themes</a></li>
      <li>GitLab: <a href="https://gitlab.com/protesilaos/ef-themes">https://gitlab.com/protesilaos/ef-themes</a></li>
    </ul>
  </li>
  <li>Backronym: Eclectic Fashion in Themes Hides Exaggerated Markings,
Embellishments, and Sparkles.</li>
</ul>

<p>Below are the release notes.</p>

<hr />

<h2>Version 2.2.0 on 2026-06-21</h2>

<p>This version contains two new themes and several stylistic refinements
to existing items in the collection.</p>

<h3>Enjoy <code class="language-plaintext highlighter-rouge">ef-arcadia</code> and <code class="language-plaintext highlighter-rouge">ef-atlantis</code> themes</h3>

<p><code class="language-plaintext highlighter-rouge">ef-arcadia</code> is a light theme with a green, humid feel. <code class="language-plaintext highlighter-rouge">ef-atlantis</code>
is a dark theme with aquatic colours.</p>

<h3>Improved style for <code class="language-plaintext highlighter-rouge">company</code> and <code class="language-plaintext highlighter-rouge">corfu</code> popups</h3>

<p>I have revised the colour that each theme applies to the popup
background. It should now be more consistent with all other elements
on display.</p>

<p>Thanks to aikrahguzar for suggesting a review in issue 70:
<a href="https://github.com/protesilaos/ef-themes/issues/70">https://github.com/protesilaos/ef-themes/issues/70</a>.</p>

<h3>The current line highlight for completions is easier to spot</h3>

<p>This is the background of the selected candidate in the minibuffer
while using the <code class="language-plaintext highlighter-rouge">vertico</code> package (among other similar interfaces).
The colours I am now using are more consistent with their context and
also work better as part of a popup completion interface, as noted
above.</p>

<h3>Palette refinements for several themes</h3>

<p>I have made subtle changes to a few colour values. These are fine
details. The overarching goal is to be consistent throughout.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Re: how to practice for public speaking?</title>
      <description>My response to a question about having the courage to talk in public.</description>
      <pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-06-19-re-practice-for-public-speaking/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-06-19-re-practice-for-public-speaking/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from a private exchange. I am sharing it with the
permission of my correspondent, without disclosing their identity.</p>

<hr />

<blockquote>
  <p>I was wondering how do you have the courage to become who you are
today, you know, making speech and talk to different people. I have
to do a presentation next week, and I find that even the most
trivial presentation would stress me out and ruin my whole week. Is
there any tip?</p>
</blockquote>

<p>Change takes time. Big transformations are the result of many small
tweaks whose cumulative effect eventually becomes noticeable as the
new normal. There is this expression in English that “practice makes
perfect”, which basically means that you become competent at something
the more you do it. Though you also have to be mindful of what exactly
you are doing. The technique or the method matters, otherwise you are
embedding initial errors as second nature, which then makes them
harder to correct.</p>

<p>Specifically on the topic of making a presentation, there are two core
skills involved. One is the ability to express an idea clearly. The
other is to connect with people at the interpersonal level through
language.</p>

<p>You can think of “clear expression” as a direct path to somewhere.
There are no obstacles, no branching sideways, no surprises and
distractions: it just goes from A to B. You improve this skill by
writing—and you have to write consistently. What you write about
does not matter. The point is to pick a topic that you care about and
formulate at least one relevant thought that makes sense. For example,
you can write about the job you do, the place you live, a book you
read…</p>

<p>Write as if you are addressing a stranger. So you cannot say “I like
this book because it is good”, as that contains a lot of unknown
information which may be clear in your head but does not appear in
context. Instead, you have to note how, e.g. “I like this book because
it taught me about X”. Then describe X to someone who is unfamiliar
with the given domain of knowledge.</p>

<p>You do not need to publish your writings or show them to anyone. But
it is essential for you to imagine that they are open to the public.
This helps you have the correct frame of mind to make the thought
understandable.</p>

<p>I described clarity as going from point A to point B without any
impediments. A common mistake is to overexplain things. Perhaps you do
it to prove that you really know what you are talking about. Or you
underestimate the skills of the other person. The reason is not
relevant though. When you overexplain, you effectively introduce
distractions by making the instructions too verbose and thus too
difficult to process. The essence may still be “from A you reach B”,
but this “essence” cannot be buried under piles of unimportant
details.</p>

<p>At this early stage you will not be competent at focusing on the
essentials. Just know that there will be lots of “useless additives”
in the beginning. As you write, those will gradually disappear. An
example is what you have just read. You will notice that up until this
point I have been thorough, but not frivolous with my words: I have
not mentioned anything unrelated to the point I am elaborating on, nor
have I explained every single concept I introduced.</p>

<p>The interpersonal skill is what separates interesting presentations
from boring ones. Lots of scientists, for example, are excellent at
getting all the details right but terrible at producing an interesting
presentation. This is because they do not consider a basic fact about
people: we remember big ideas and tend to forget tiny details. I can
tell you about a story I heard when I was a kid, but I already forgot
the quarterly report I got from the ministry of financial affairs.</p>

<p>Consider that our tendency to grasp the big ideas and forget the
details is also a function of time. We might have the capacity to
remember some details if they are given to us over, say, 30 seconds,
but we will not be able to keep every detail in our head over the
course of a 20-minute technical presentation. That is overwhelming.</p>

<p>Understand, then, that you are talking to people and are making a
somewhat general point. This is true even in a technical setting. For
example, a scientist should communicate their main findings and let
their paper go over the technicalities of the data. You want to give
them the big picture. It is sufficiently informative, but not too
detailed.</p>

<p>People effectively need “breathing space”. You cannot bombard them
with words non-stop. Pace yourself to be slow. Introduce brief pauses
in between periods of higher intensity. If something is monotonous,
then it is harder for people to discern patterns: they feel they are
entering a closed space, with nothing to see, which makes them lose
interest. So read/talk with the intent of varying the tones. Then you
get them to listen to you because you keep their brain active.</p>

<p>Control your breath so that you can speak properly and think clearly.
You do this if you are not rushing to finish your points. Have short
sentences. Use commas for emphasis. Again, take it slow. Read this
last sentence with a break where the comma is, like “again STOP take
it slow”. Now read it again without that stop to check how awkward it
is.</p>

<p>The ability to pause communicates confidence because you truly are in
control of the situation: you are not panicking, you are not showing
that you would rather be somewhere else, you are not trying to run
away, you are not afraid of the clock.</p>

<p>You get better at this skill by practising speech. Consider recording
yourself. Write your presentation in a way that is slow, has pauses,
and lets you vary the tones. Then read it out loud and check the
recording. Focus on the clarity of the words. If your breathing is
correct, then you have air to speak loudly.</p>

<p>With enough practice you will learn to communicate effectively even on
topics you are not prepared for, though that is the longer-term
result. Similarly, once you get better at pacing yourself, you will be
able to work on non-verbal communication: to look around the room, to
establish eye contact, to have an aura of perfect balance. Though
these come later. Right now your goal is to learn the contents of your
presentation: they are not too detailed and they are not monotonous.
Then read it properly, as I have outlined here.</p>

<p>Finally, remember that what you are feeling is normal. Everybody is
like this because public speaking—and public speaking that is
coherent and laser-focused—is not something we get by default. We
become better at it through continuous practice. Try things to the
best of your ability. You may not be good right now, but you will
improve over time. Even if you are not good at all at doing
presentations, you can still write a script for next week that
contains elements of what I have covered, such as clear points and
viable pacing.</p>

<p>In Greek we say “there is no ‘I cannot’ but only ‘I do not want to’”.
Our emphasis is on the honesty of the effort: try it sincerely and
only then decide if you can or cannot do it. But do not quit early, as
that is your fear or complacency speaking. Of course, there are things
we cannot change through practice (e.g. I cannot train to become 3
metres tall), but most things are malleable. Have this attitude and
take it one step at a time. The rest will follow naturally.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “The sea is deep” by Nana Mouskouri</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'The sea is deep'.</description>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-06-18-mouskouri-the-sea-is-deep/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-06-18-mouskouri-the-sea-is-deep/</guid>
      <content:encoded><![CDATA[<p>For this entry in the series I have picked a song of composer Manos
Chatzidakis, as it is performed by the acclaimed Nana Mouskouri:
<a href="https://www.youtube.com/watch?v=2Lp6f_T1z_o">https://www.youtube.com/watch?v=2Lp6f_T1z_o</a>. This is a wonderful
performance. Even the breeze adds to the magic of the show.</p>

<p>Below are the lyrics, my translation of them, and further comments.</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 sea is deep

Singer:  Nana Mouskouri
Lyrics:  Manos Chatzidakis
Music:   Manos Chatzidakis


The sea is deep
and love is big

I have a pain in the soul
and who will remove it

The sea is bitter
caress together and teardrop

And it rolls me foaming
to the horizon's edge

The sea is a child
it runs and I cannot reach it

Child also in its love
that as a child I lose it
</code></pre></div></div>

<p>The theme of <em>The sea is deep</em> is discerned through millennia of Greek
culture: it is about the world as admixture. The sea is the poetic
representation of the world at-large, here approximated through the
human experience. Life contains all the parts germane to the human
condition: those we like as well those we dislike.</p>

<p>Our preferences about the world are irrelevant, for we cannot enact
them. We may not opt out of the magnitudes we do not enjoy or approve
of. There is not stylistic or moral argument to be made that shall
bring about permanent changes to the functioning of the world.</p>

<p>All we can do is accept what is, be it sweet or bitter, attractive or
repulsive. Then we may work on internalising the observation that each
is exposed to vicissitudes beyond their control. Phenomena come and
go, much like waves. There is no holding onto them. Whatever we have
is not ours to keep forever: it is alienable.</p>

<p>The sea exhibits the quality of the world as admixture quite clearly.
It is a source of food, a place for recreational activities and
romantic escapades, the space for commerce and for connecting to
distant cultures… There are just so many beautiful moments we can
think of. Yet the sea is never tamed. It has no friends and plays no
favourites. In it lies the imminent threat of death and destruction,
the peerless potential to make entire realities and to undo them.</p>

<p>Our powerlessness in the face of the world does not prevent us from
working with what is available to us. We carry on living, with the
qualities we are endowed with, under the evolving circumstances that
govern our day-to-day affairs. The feebleness of ours underpins the
sense of wonder we have. It manifests as awe: the feeling that
consists of admiration and fear in tandem.</p>

<p>This poetic sea is likened to a child to emphasise its vitality and
exuberance. Its energy is always more than our own, such that we
cannot keep up with it. It is a child also in the sense that it does
not obey our longer-term plans, seeking instead change of some sort.</p>

<p><em>The sea is deep</em> speaks of love. We connect deeply with people, other
animals, places, items, and activities, even though we are well aware
that death will undo everything. Death in the literal sense, but also
the figurative end of an era. A single kiss, for example, is enjoyable
in its own right, not because there is any guarantee that there will
even be a tomorrow in which another kiss shall happen.</p>

<p>Love is a part of what we seek even with a dagger firmly planted in
our heart with nobody to remove it. In a sense, what we do is futile
as the sea will wash it all away. In another sense, it is all
important since we understand the grandeur of love through the ups and
downs.</p>

<p>To what end? The sea knows, yet has no reason to tell us. We keep
going regardless. Uncertainty does not deter us.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: testing common colour values with the doric-themes</title>
      <description>Code I use to get a preview of common colours that I need to configure for my Doric themes.</description>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-06-17-emacs-testing-doric-themes-common-colour-values/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-06-17-emacs-testing-doric-themes-common-colour-values/</guid>
      <content:encoded><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">doric-themes</code> are the minimalist counterpart of my <code class="language-plaintext highlighter-rouge">modus-themes</code>
and <code class="language-plaintext highlighter-rouge">ef-themes</code>. They define few colours and exercise restraint in how
they customise faces. This means that there rarely is a context that
has red, green, yellow, blue, magenta, and cyan. Those are reserved
for cases where colour-coding is needed. Whereas with my other themes
colour is used with the dual intent of establish rhythm and order in
addition to any colour-coding.</p>

<p>Because of this, it is difficult for me to test the relevant values.
Each Doric theme defines entries in its palette like <code class="language-plaintext highlighter-rouge">fg-red</code> and
<code class="language-plaintext highlighter-rouge">bg-blue</code>. So I decided to write a small snippet that shows text which
uses those colours in context.</p>

<p>The idea is to create faces that get the appropriate <code class="language-plaintext highlighter-rouge">:foreground</code> and
<code class="language-plaintext highlighter-rouge">:background</code> attributes with their proper values. Then write text in
a buffer that displays each face.</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nv">defconst</span> <span class="nv">test-doric-accents</span>
  <span class="o">'</span><span class="p">(</span> <span class="nv">fg-red</span> <span class="nv">fg-green</span> <span class="nv">fg-yellow</span> <span class="nv">fg-blue</span> <span class="nv">fg-magenta</span> <span class="nv">fg-cyan</span>
     <span class="nv">bg-red</span> <span class="nv">bg-green</span> <span class="nv">bg-yellow</span> <span class="nv">bg-blue</span> <span class="nv">bg-magenta</span> <span class="nv">bg-cyan</span><span class="p">))</span>

<span class="p">(</span><span class="nb">dolist</span> <span class="p">(</span><span class="nv">accent</span> <span class="nv">test-doric-accents</span><span class="p">)</span>
  <span class="p">(</span><span class="nv">custom-declare-face</span>
   <span class="p">(</span><span class="nb">intern</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"test-doric-%s"</span> <span class="nv">accent</span><span class="p">))</span>
   <span class="no">nil</span>
   <span class="s">"Test."</span>
   <span class="ss">:group</span> <span class="ss">'doric-themes</span><span class="p">))</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">test-doric-set-accent-faces</span> <span class="p">()</span>
  <span class="p">(</span><span class="nv">doric-themes-with-colors</span>
    <span class="p">(</span><span class="k">let*</span> <span class="p">((</span><span class="nv">predicate</span> <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nc">symbol</span><span class="p">)</span> <span class="p">(</span><span class="nv">string-prefix-p</span> <span class="s">"bg"</span> <span class="p">(</span><span class="nb">symbol-name</span> <span class="nc">symbol</span><span class="p">))))</span>
           <span class="p">(</span><span class="nv">foregrounds</span> <span class="p">(</span><span class="nv">seq-remove</span> <span class="nv">predicate</span> <span class="nv">test-doric-accents</span><span class="p">))</span>
           <span class="p">(</span><span class="nv">backgrounds</span> <span class="p">(</span><span class="nv">seq-filter</span> <span class="nv">predicate</span> <span class="nv">test-doric-accents</span><span class="p">))</span>
           <span class="p">(</span><span class="nv">foreground-faces</span> <span class="p">(</span><span class="nb">mapcar</span>
                              <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">accent</span><span class="p">)</span>
                                <span class="o">`</span><span class="p">(</span><span class="o">,</span><span class="p">(</span><span class="nb">intern</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"test-doric-%s"</span> <span class="nv">accent</span><span class="p">))</span>
                                  <span class="p">((</span><span class="no">t</span> <span class="ss">:foreground</span> <span class="o">,</span><span class="p">(</span><span class="nb">symbol-value</span> <span class="nv">accent</span><span class="p">)))))</span>
                              <span class="nv">foregrounds</span><span class="p">))</span>
           <span class="p">(</span><span class="nv">background-faces</span> <span class="p">(</span><span class="nb">mapcar</span>
                              <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">accent</span><span class="p">)</span>
                                <span class="o">`</span><span class="p">(</span><span class="o">,</span><span class="p">(</span><span class="nb">intern</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"test-doric-%s"</span> <span class="nv">accent</span><span class="p">))</span>
                                  <span class="p">((</span><span class="no">t</span> <span class="ss">:background</span> <span class="o">,</span><span class="p">(</span><span class="nb">symbol-value</span> <span class="nv">accent</span><span class="p">)</span> <span class="ss">:foreground</span> <span class="o">,</span><span class="nv">fg-main</span><span class="p">))))</span>
                              <span class="nv">backgrounds</span><span class="p">)))</span>
      <span class="p">(</span><span class="nb">apply</span> <span class="nf">#'</span><span class="nv">custom-set-faces</span> <span class="p">(</span><span class="nb">append</span> <span class="nv">foreground-faces</span> <span class="nv">background-faces</span><span class="p">)))))</span>

<span class="p">(</span><span class="nv">add-hook</span> <span class="ss">'doric-themes-after-load-theme-hook</span> <span class="nf">#'</span><span class="nv">test-doric-set-accent-faces</span><span class="p">)</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">test-doric-show-accents</span> <span class="p">()</span>
  <span class="p">(</span><span class="nv">interactive</span><span class="p">)</span>
  <span class="p">(</span><span class="k">let</span> <span class="p">((</span><span class="nv">buffer</span> <span class="p">(</span><span class="nv">get-buffer-create</span> <span class="s">"*test-doric-themes-accents*"</span><span class="p">)))</span>
    <span class="p">(</span><span class="nv">with-current-buffer</span> <span class="nv">buffer</span>
      <span class="p">(</span><span class="nv">erase-buffer</span><span class="p">)</span>
      <span class="p">(</span><span class="nb">dolist</span> <span class="p">(</span><span class="nv">accent</span> <span class="nv">test-doric-accents</span><span class="p">)</span>
        <span class="c1">;; Pangram from my `show-font' package...</span>
        <span class="p">(</span><span class="k">let*</span> <span class="p">((</span><span class="nv">text</span> <span class="s">"Protesilaos may find zesty owls and quiet jays vexing the black cat"</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">styled</span> <span class="p">(</span><span class="nv">propertize</span> <span class="nv">text</span> <span class="ss">'face</span> <span class="p">(</span><span class="nb">intern</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"test-doric-%s"</span> <span class="nv">accent</span><span class="p">)))))</span>
          <span class="p">(</span><span class="nv">insert</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"%s\n"</span> <span class="nv">styled</span><span class="p">)))))</span>
    <span class="p">(</span><span class="nv">display-buffer</span> <span class="nv">buffer</span><span class="p">)))</span>
</code></pre></div></div>

<p>Reload the theme for changes to take effect.</p>

<p>And, yes, I had the motivation to write this because I am developing
new themes.</p>

<h2>Doric themes sources</h2>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">doric-themes</code></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/doric-themes-pictures">https://protesilaos.com/emacs/doric-themes-pictures</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/doric-themes">https://github.com/protesilaos/doric-themes</a></li>
  <li>Backronym: Doric Only Really Intensifies Conservatively … themes.</li>
</ul>]]></content:encoded>
    </item>
    
    <item>
      <title>Beyond the want for happy endings</title>
      <description>An entry from my journal in which I comment on how I accept the world as-is.</description>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-06-17-beyond-want-happy-endings/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-06-17-beyond-want-happy-endings/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal. I comment on how I accept the world
as-is.</p>

<hr />

<p>Over the past few weeks Atlas’ cancer has resurfaced. This time I will
probably not be able to do anything about it, though I will still
check with the medical experts. The cancer has already grown more than
what it was a few months ago when the doctor performed an operation on
it. I still take care of Atlas and provide all I can. He is happy,
though noticeably weaker than what he was even in recent times.</p>

<p>This is the real world. We long for happy endings. Our stories have
them, as do our dominant religions. There has to be something more,
something in another place that is better than what we have here. Such
is our hope and desire. There is no proof of an altogether different
world; a world of pure bliss. We want it to exist perhaps to distract
ourselves from the actuality of our condition. Here things are neither
purely blissful nor completely miserable. There is attraction and
repulsion, that which is beautiful and that which is disgusting. One
flows into the other. It is and becomes not, depending on the
interplay of factors that constitute the given case.</p>

<p>My life with Atlas goes back a decade when I got him as a tiny puppy.
On day one, during our first walk, he stood up against a large, poorly
socialised Rottweiler. I remained calm and smiled at his audacity. The
other man was struggling to contain his dog and was visibly stressed.</p>

<p>Atlas grew up to be a mighty dog, blessed with supreme intelligence,
and independent in his behaviour. He never works for me: he only does
what he wants, cooperating with me when it makes sense to him. So he
learnt all the essentials of living with people and skipped the
lessons for all the tangentially useful tricks. I am a little bit like
him and he is like me. The closest I have ever experienced to an ideal
friendship between human and dog.</p>

<p>Cancer or not, death is part of the incessant process. The story of
the universe is one of dust configured into systems of systems,
transfiguring into galaxies and particles alike, all exhibiting the
constants of patterns, structure, cause and effect else feedback loops
else language. Reasonableness woven into fabric. Such is the living
universe of which we are a part. A cycle everlasting, experienced as
an organism of organisms.</p>

<p>We suffer for as long as we expect the world to deliver us from one of
its facets. Mind without body, good without evil, happiness without
suffering, sociability without the messiness of human relations, and
so on. There is no pure benevolence as the irreducible quality, no
father in heaven as the supreme good, for such a being necessarily is
in a mode of being, inclined a certain way, which may then be made
manifest as its context-dependent irreconcilable other on a spectrum
of preference, inclination, way, or mode. An omnipotent god qua
omnipotent cannot be constrained and thus cannot be limited to any one
quality, goodness included. Whatever ultimately is, simply is. The
mode of being is a point on an infinite line: a presence that is
transfigurable.</p>

<p>I will continue to live with Atlas and my three other dogs, Raizou,
Meelon, and Oreeon, the way I have done hitherto. We are happy here in
the mountains. The dogs run around the slopes unleashed. They are
close to their wolf nature, owning to the exposure they get to these
open vistas. I, too, have long now rewilded myself because I accepted
the world as-is and consequently escaped from the grip of fancy, of
the want for happy endings. I am undisturbed by indeterminacy and
open-endedness. I do not expect anything and fear nothing. This
evening, when the sun sets, we will go for our nightly hike with the
same vigour and intensity we always do. And when we cannot do that
anymore, we shall do whatever our condition renders unavoidable.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: sunbathing around my plants</title>
      <description>Plants all around me with the sun shining on my face.</description>
      <pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-06-16-sunbathing-around-my-plants/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-06-16-sunbathing-around-my-plants/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: flat Dired listing for REGEXP, optionally up to DAYS since last modification</title>
      <description>Two custom Dired commands I use to have flat listings of files inside of Emacs.</description>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-06-13-emacs-flat-dired-for-regexp-since-days/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-06-13-emacs-flat-dired-for-regexp-since-days/</guid>
      <content:encoded><![CDATA[<p>When we call <code class="language-plaintext highlighter-rouge">dired</code> from Lisp, we can pass it a list of files instead
of a directory. This gives us a fully fledged Dired buffer for those
files. My most common use-case is to produce flat listing, so that I
do not have to go searching in exactly which directory some file is
(e.g. in the Downloads folder there is some zip archive that I
downloaded with a bunch of files in a complex structure).</p>

<h2>A flat Dired listing</h2>

<p>For a while now I have been using my own command to create a Dired
buffer from the current directory (which can always be updated on
demand with <code class="language-plaintext highlighter-rouge">M-x cd</code>). It is <code class="language-plaintext highlighter-rouge">prot-dired-search-flat-list</code>. Here is
the code:</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">defvar</span> <span class="nv">prot-dired-regexp-history</span> <span class="no">nil</span>
  <span class="s">"Minibuffer history of `prot-dired-regexp-prompt'."</span><span class="p">)</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired-regexp-prompt</span> <span class="p">()</span>
  <span class="p">(</span><span class="k">let</span> <span class="p">((</span><span class="nv">default</span> <span class="p">(</span><span class="nb">car</span> <span class="nv">prot-dired-regexp-history</span><span class="p">)))</span>
    <span class="p">(</span><span class="nv">read-regexp</span>
     <span class="p">(</span><span class="nv">format-prompt</span> <span class="s">"Files matching REGEXP"</span> <span class="nv">default</span><span class="p">)</span>
     <span class="nv">default</span> <span class="ss">'prot-dired-regexp-history</span><span class="p">)))</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired--get-files</span> <span class="p">(</span><span class="nv">regexp</span><span class="p">)</span>
  <span class="s">"Return files matching REGEXP, recursively from `default-directory'."</span>
  <span class="p">(</span><span class="nv">directory-files-recursively</span> <span class="nv">default-directory</span> <span class="nv">regexp</span> <span class="no">nil</span><span class="p">))</span>

<span class="c1">;;;###autoload</span>
<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired-search-flat-list</span> <span class="p">(</span><span class="nv">regexp</span><span class="p">)</span>
  <span class="s">"Return a Dired buffer for files matching REGEXP.
Perform the search recursively from the current directory."</span>
  <span class="p">(</span><span class="nv">interactive</span> <span class="p">(</span><span class="nb">list</span> <span class="p">(</span><span class="nv">prot-dired-regexp-prompt</span><span class="p">)))</span>
  <span class="p">(</span><span class="nv">if-let*</span> <span class="p">((</span><span class="nv">files</span> <span class="p">(</span><span class="nv">prot-dired--get-files</span> <span class="nv">regexp</span><span class="p">))</span>
            <span class="p">(</span><span class="nv">relative-paths</span> <span class="p">(</span><span class="nb">mapcar</span> <span class="nf">#'</span><span class="nv">file-relative-name</span> <span class="nv">files</span><span class="p">)))</span>
      <span class="p">(</span><span class="nv">dired</span> <span class="p">(</span><span class="nb">cons</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"prot-flat-dired for `%s'"</span> <span class="nv">regexp</span><span class="p">)</span> <span class="nv">relative-paths</span><span class="p">))</span>
    <span class="p">(</span><span class="nb">error</span> <span class="s">"No files matching `%s'"</span> <span class="nv">regexp</span><span class="p">)))</span>
</code></pre></div></div>

<p>I could modify <code class="language-plaintext highlighter-rouge">prot-dired-search-flat-list</code> to also prompt for a
directory, though I optimise for the common workflow of operating from
where I am (and I generally do not like overloading the <code class="language-plaintext highlighter-rouge">C-u</code> with
special cases that I will never remember—a new command with a name I
can search for is better).</p>

<h2>Flat listing limited to last modified since DAYS</h2>

<p>Yesterday I had the need to browse a massive directory, but only
wanted to get a couple of files out of it. I realised that I had to
filter my last modified, so I extended my above use-case with the new
command <code class="language-plaintext highlighter-rouge">prot-dired-search-flat-list-since-days</code>. Here is what I came
up with:</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="nb">defvar</span> <span class="nv">prot-dired-days-prompt-history</span> <span class="no">nil</span>
  <span class="s">"Minibuffer history for `prot-dired-days-prompt'."</span><span class="p">)</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired-days-prompt</span> <span class="p">()</span>
  <span class="s">"Prompt for days and return them as a number."</span>
  <span class="p">(</span><span class="k">let*</span> <span class="p">((</span><span class="nb">first</span> <span class="p">(</span><span class="nb">car</span> <span class="nv">prot-dired-days-prompt-history</span><span class="p">))</span>
         <span class="p">(</span><span class="nv">default</span> <span class="p">(</span><span class="nb">when</span> <span class="p">(</span><span class="nb">stringp</span> <span class="nb">first</span><span class="p">)</span>
                    <span class="p">(</span><span class="nv">string-to-number</span> <span class="nb">first</span><span class="p">))))</span>
    <span class="p">(</span><span class="nv">read-number</span> <span class="s">"Number of days: "</span> <span class="nv">default</span> <span class="ss">'prot-dired-days-prompt-history</span><span class="p">)))</span>

<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired--get-last-modified</span> <span class="p">(</span><span class="nv">files</span> <span class="nv">days</span><span class="p">)</span>
  <span class="s">"Return list of FILES last modified since DAYS."</span>
  <span class="p">(</span><span class="nv">seq-filter</span>
   <span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="nv">file</span><span class="p">)</span>
     <span class="p">(</span><span class="nv">and-let*</span> <span class="p">((</span><span class="nv">attributes</span> <span class="p">(</span><span class="nv">file-attributes</span> <span class="nv">file</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">last-modified</span> <span class="p">(</span><span class="nb">nth</span> <span class="mi">5</span> <span class="nv">attributes</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">last-modified-seconds</span> <span class="p">(</span><span class="nv">time-to-seconds</span> <span class="nv">last-modified</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">current-time</span> <span class="p">(</span><span class="nv">current-time</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">current-time-seconds</span> <span class="p">(</span><span class="nv">time-to-seconds</span> <span class="nv">current-time</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">delta-seconds</span> <span class="p">(</span><span class="nb">*</span> <span class="nv">days</span> <span class="mi">24</span> <span class="mi">60</span> <span class="mi">60</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">oldest-seconds</span> <span class="p">(</span><span class="nb">-</span> <span class="nv">current-time-seconds</span> <span class="nv">delta-seconds</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">_</span> <span class="p">(</span><span class="nb">&gt;=</span> <span class="nv">last-modified-seconds</span> <span class="nv">oldest-seconds</span><span class="p">)))))</span>
   <span class="nv">files</span><span class="p">))</span>

<span class="c1">;;;###autoload</span>
<span class="p">(</span><span class="nb">defun</span> <span class="nv">prot-dired-search-flat-list-since-days</span> <span class="p">(</span><span class="nv">regexp</span> <span class="nv">days</span><span class="p">)</span>
  <span class="s">"Return Dired buffer with files matching REGEXP up to DAYS since last modification.
Perform the search recursively from the current directory."</span>
  <span class="p">(</span><span class="nv">interactive</span>
   <span class="p">(</span><span class="nb">list</span>
    <span class="p">(</span><span class="nv">prot-dired-regexp-prompt</span><span class="p">)</span>
    <span class="p">(</span><span class="nv">prot-dired-days-prompt</span><span class="p">)))</span>
  <span class="p">(</span><span class="nv">if-let*</span> <span class="p">((</span><span class="nv">files</span> <span class="p">(</span><span class="nv">prot-dired--get-files</span> <span class="nv">regexp</span><span class="p">)))</span>
      <span class="p">(</span><span class="nv">if-let*</span> <span class="p">((</span><span class="nv">files-filtered</span> <span class="p">(</span><span class="nv">prot-dired--get-last-modified</span> <span class="nv">files</span> <span class="nv">days</span><span class="p">))</span>
                <span class="p">(</span><span class="nv">relative-paths</span> <span class="p">(</span><span class="nb">mapcar</span> <span class="nf">#'</span><span class="nv">file-relative-name</span> <span class="nv">files-filtered</span><span class="p">)))</span>
          <span class="p">(</span><span class="nv">dired</span> <span class="p">(</span><span class="nb">cons</span> <span class="p">(</span><span class="nb">format</span> <span class="s">"prot-flat-dired since %d days for `%s'"</span> <span class="nv">days</span> <span class="nv">regexp</span><span class="p">)</span> <span class="nv">relative-paths</span><span class="p">))</span>
        <span class="p">(</span><span class="nb">error</span> <span class="s">"No files last modified within the last %d days"</span> <span class="nv">days</span><span class="p">))</span>
    <span class="p">(</span><span class="nb">error</span> <span class="s">"No files matching `%s'"</span> <span class="nv">regexp</span><span class="p">)))</span>
</code></pre></div></div>

<p>Note that I always design my minibuffer prompts to have their own
history, because then I only get relevant entries when I press <code class="language-plaintext highlighter-rouge">M-p</code>
(<code class="language-plaintext highlighter-rouge">previous-history-element</code>) and <code class="language-plaintext highlighter-rouge">M-n</code> (<code class="language-plaintext highlighter-rouge">next-history-element</code>) at the
prompt (and the built-in <code class="language-plaintext highlighter-rouge">savehist-mode</code> takes care to persist those).</p>

<p>Everything is part of my Emacs configuration: <a href="https://protesilaos.com/emacs/dotemacs">https://protesilaos.com/emacs/dotemacs</a>.
I will not be updating this article, so make sure to check for any
further refinements there.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “In the night of the others” by Trypes</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'In the night of the others'.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-06-12-trypes-night-of-others/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-06-12-trypes-night-of-others/</guid>
      <content:encoded><![CDATA[<p>I was under the impression that I had written an entry for <em>In the
night of the others</em> (Μέσα στη νύχτα των άλλων) a long time ago:
<a href="https://www.youtube.com/watch?v=3XvkZNbO-eg">https://www.youtube.com/watch?v=3XvkZNbO-eg</a>. It turns out that I did
not. Though I have commented before on other pieces of the <em>Trypes</em>
(Τρύπες) band:</p>

<ul>
  <li><a href="https://protesilaos.com/interpretations/2022-06-28-trypes-train/">Train</a> (2022-06-28)</li>
  <li><a href="https://protesilaos.com/interpretations/2022-08-01-trypes-new-dizziness/">New dizziness</a> (2022-08-01)</li>
  <li><a href="https://protesilaos.com/interpretations/2025-02-08-trypes-here/">Here</a> (2025-02-08)</li>
</ul>

<p><em>In the night of the others</em> is an excellent song, both (i) as a fine
example of Greek rock and (ii) a poignant reminder to be fair and
mindful of our situation.</p>

<p>Below are the original lyrics, my translation of them, and further
comments.</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>In the night of the others

Singer:  Trypes
Lyrics:  Giannis Aggelakas (Trypes)
Music:   Trypes


Nobody listens, nobody awakens
only our hearts echo and nothing else
The time has come to tell me, now is the time to tell me
what are we doing in the night of the others

Nobody speaks, nobody responds
silent shadows sleepwalk on ice
The time has come to tell me, now is the time to tell me
what are we doing in the night of the others
</code></pre></div></div>

<p>The salient point of this song is to express ourselves in earnest. The
titular night describes the state of affairs when we are always
behaving in a conformist way for the sake of conformism. If we never
show how we truly feel, then we effectively operate in hiding. We
pretend that our feelings do not matter, while simultaneously acting
like other people’s wellness is of paramount importance. Such is our
double-standard and thus the injustice we commit against our own
person.</p>

<p>When we do this, we think that we are showing resilience while making
pro-social contributions. We assume the role of the reliable friend
who happily accommodates the needs of everyone while asking for
nothing in return, never to complain nor to ask any questions. And if
we are competent in this regard, then we take comfort in consistently
suppressing our desires. We even think that we are special in some
respect because we apparently do not need any help while others do.</p>

<p>This, however, is not sustainable. By only valuing others, we deny
ourselves the important interpersonal skill of pushing back when
necessary, of sometimes answering in the negative, of speaking our
mind. As such, we only respond affirmatively, which inevitably means
that we take on increasingly more emotional burdens as well as
concrete people-pleasing responsibilities. We inevitably overwork
ourselves. A burnout shall ensue. It may cause irreparable damage or,
at least, lead to the kind of injury that is hard to recover from.</p>

<p>The person who wants to help others must learn to include their own
self as part of the rest. There should be no double-standard nor any
rationalisation along the lines of “I am tougher than them and can
handle it”. The goal is to have consistency. Self-love, for example,
is not the same as selfishness: it is to care for oneself the way one
cares for others. A mother will not be feeding her baby for much
longer if she does not eat enough food herself, for example.</p>

<p>The night of the others does not describe some tyranny. It is a
condition that comes from within. The reason is that we naturally
resist what we perceive of as oppressive. So we would not be searching
for something there. Whereas the song asks what are we even trying to
find in this figurative place, implying that we have already made a
prior judgement of considering it acceptable in some form. Put
differently, the problem is of our own making.</p>

<p>The other point of <em>In the night of the others</em> is to have situational
awareness: to continuously assess the prevailing conditions in our
milieu in order to notice when the night is upon us. This is
especially relevant for relationships that start out one way and
become something entirely different in the process. If we are not in
tune with the circumstances, then we are again forcing ourselves into
a situation where our selfhood is suppressed. Here, too, the
double-standard is due to us, only this time it comes from complacency
rather than a misplaced desire to fit in.</p>

<p>We need exposure and recognition in our life. We have to have moments
during which our sincere desires are expressed. Sure, there are times
when we will deprioritise our own needs. This is fine. The key is to
find a balance, such that there will be daytime after any given night.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Tales of Berseria</title>
      <description>A nice Japanese role-playing game with a profound story.</description>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-06-11-tales-of-berseria/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-06-11-tales-of-berseria/</guid>
      <content:encoded><![CDATA[<p>The <em>Tales of</em> series are Japanese Role-Playing Games (<strong>spoilers
throughout!</strong>). The story usually involves some band of unlikely
heroes on a quest to save the world from calamity. The characters you
control gain experience and become stronger through random encounters
with enemies as well as fights that forward the narrative. The battle
system of these games is something between turn-based (like chess) and
a real-time (like boxing). Many JRPGs default to the turn-based
approach. Here the “Japanese” descriptor is a reference to the country
of origin but also a proxy for the visuals, which conform with the
anime tropes of girls that have bug-like eyes, huge boobs supported by
tiny waists, as well as guys with equally unrealistic bodies and
especially misleading thick hairlines.</p>

<p>The <em>Tales of Berseria</em> has all of those elements. It couches them in
terms of a story that is mature and nuanced. Instead of putting you in
control of the forces of good in their battle against pure evil, you
assume the role of a once kind and loving elder sister who turns into
a ruthless monster. Her name is Velvet and she is out for revenge,
driven by nothing but hatred. Her mortal enemy is her brother-in-law,
Artorius. He seeks to remake the world in his own image of pure
reason, strict discipline, and moral excellence so as to free people
from their propensity for greed, corruption, and thus demonisation.</p>

<p>Artorius is not your typical bad boss. On the contrary, he is a
paragon of virtue who understands that sacrifice is an irreducible
component of any ambitious goal that elevates a person above
mediocrity. Artotius embodies rationality and what would historically
be considered virile values. He is the stiff upper lip kind of man,
who shows no emotion, and is ready to do whatever it takes in pursuit
of the right thing.</p>

<p>There is something noble in the traits of character inherent to
Artorius; something that everyone can learn from. His problem is one
of degree: he is too rational, too knightly, and thus fails to pay
attention to the other facets of his being. By essentially foregoing
his emotional side, by pretending to be pure spirit without a body
that knows attachment and pain, he loses that finely calibrated
mechanism we have to understand when something has gone too far. He
can no longer feel others, as “others” are reduced to numbers, data
points that need to be manipulated until the model yields the desired
results.</p>

<p>Velvet is his overly emotional counterpart. She exhibits all the
wonderful traits of care and loving, such as how she treats her
younger brother. Though those too also lend themselves to disaster
when they are misapplied. Love erga omnes is the kind of naivety that
invites the wolf into the herd, for example. Similarly, emotional
intensity has the potential to turn into uncontrollable rage and
self-harming hatred when it is not framed by common sense.</p>

<p>Artorius is a monster for being too rational. Velvet is a monster for
being too emotional. This fits nicely with the Delphic teachings on
moderation and the wider Greek worldview of admixture. The Greeks
think that there is no such thing as pure good or pure evil. Whatever
we get can be either of those depending on its degree and the
prevailing conditions. As such, we have to exercise judgement and have
situational awareness. Quick-and-dirty rules do not work, not even for
something as common as drinking water: the right amount is healthy,
however both too little and too much will kill you.</p>

<p>Where we want to be is between the extremes, at a point of harmony
that recognises all facets of our being and takes everything for what
it is in its potential to be benign and detrimental to us. There is a
side of us that is scholarly, another that is caring, a third that is
lustful, a fourth that is combative, a fifth that is inventive, a
sixth that is community-building, and so on. We cannot be only one.
Similarly, we have a body and a mind. It is pointless to argue how one
is godly and the other is not. They simply are. This is what the Greek
worldview comes down to: accept the world as-is, not how you fancy it
to be, recognise the multifacetedness that is germane to the human
condition, and work with what you have.</p>

<p>Artorius wants a world of complete predictability and total
uniformity. If we are all the same, then we have nothing to be jealous
of, nothing to fight for, and, therefore, nothing to keep us apart. We
can think of the famous song of John Lennon, titled <em>Imagine</em>, as a
relevant contribution. The singer asks us to imagine how nice it would
be if we had no differences among us, no religion, no country, et
cetera. Why stop at the level of institutions though? We can extend
that principle to physical traits: imagine we are all the same height,
with the exact same looks. Think about how much easier it is to
produce a size that fits all! Oh and how nobody will be able to
out-compete the others on anything!</p>

<p>What Artorius and John Lennon get wrong, even if they have the purest
of intentions, is that they have a prescriptive view of the world.
They are arguing with the gods like spoilt children. To get what they
want, they necessarily have to undo the innate diversity of our kind
and of nature at-large. To every expression of individuality they will
have to counter with the preponderant force of conformity, so as to
maintain their order.</p>

<p>The ancient myth of Procrustes (Προκρούστης) provides a powerful image
for this disastrous propensity for homogenisation. Procrustes is a
capable man who has a John-Lennon-esque idea to make all people the
same. He implements his plan by placing people on his workbench and
making them fit its dimensions. He stretches the limbs of those who
are shorter and he cuts off the excess parts of those who are taller.
In other words, he is torturing them. Procrustes may be well-meaning
at heart, yet his plan inevitably leads to cruelty. Artorius, and I
would argue everyone like John Lennon, is destined to do the same even
if they think they are not.</p>

<p>Coming back to the <em>Tales of Berseria</em>, Velvet grows as a character as
the story unfolds. I think her characterisation is well done. Along
the way she finds interesting companions who also go through their own
transformations. Without going into the details, Rokurou becomes
something more than the villain he is, while Magilou reveals a side of
her that was not obvious.</p>

<p>Since I mentioned Magilou, she and her sidekick Bienfu have among the
funniest supporting roles I have seen. They add much-needed levity to
an otherwise grim world. It is the other lesson to be drawn from this
game: to see the comedy alongside tragedy, the absurdity of drama, how
it they all ancient theatre, and to recognise that we can still laugh
even though we know that underneath that thin layer of politeness and
civilisation lies savagery.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live with Sacha Chua about ‘Underappreciated Built-ins’ on Thursday 11 June 17:30 Europe/Athens</title>
      <description>We will talk about the Emacs blog carnival topic for June, which is about underappreciated features that are built into Emacs.</description>
      <pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-06-09-emacs-live-sacha-chua-built-ins/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-06-09-emacs-live-sacha-chua-built-ins/</guid>
      <content:encoded><![CDATA[<p>I will join Sacha’s live stream this Thursday to talk about
underappreciated features that are built into Emacs. There are a lot
of nice things that are available out-of-the-box (plus many packages
that build on top of them). I am looking forward to it!</p>

<p>The video will be recorded for future reference.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “My expatriated birds” by Alkyone (traditional)</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'My expatriated birds'.</description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-06-08-alkyone-emigrated-birds/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-06-08-alkyone-emigrated-birds/</guid>
      <content:encoded><![CDATA[<p>For this entry in the series, I have picked a traditional song from
Heperus (Ήπειρος), the northwestern part of mainland Greece.
Traditional Heperotic music is renowned for its laments: slow-paced
songs that revolve around themes of loss, suffering, and hardship, but
also of honour and commitment to ancient values.</p>

<p>One such lament is <em>My expatriated birds</em> (Ξενιτεμένα μου πουλιά). I
could not find a high quality video of the old-school style, so I am
including these otherwise remarkable covers by Alkyone and Konstantis
Pistiolis (Κωνσταντής Πιστιόλης), respectively:</p>

<ul>
  <li><a href="https://www.youtube.com/watch?v=tzzue8TT0OQ">https://www.youtube.com/watch?v=tzzue8TT0OQ</a></li>
  <li><a href="https://www.youtube.com/watch?v=jMsAXJrRGXk">https://www.youtube.com/watch?v=jMsAXJrRGXk</a></li>
</ul>

<p>As is common with traditional art, there are slight variations in
circulation. I am picking the one sung by Alkyone. Its lyrics are
right below, followed by my faithful translation of them, and further
comments.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Ξενιτεμένα μου πουλιά

Ερμηνεία:  Alkyone
Στίχοι:    Παραδοσιακό
Μουσική:   Παραδοσιακό


Ξενιτεμένα μου πουλία
και παραπονεμένα
μωρέ ξένε μου
η ξενιτιά σας χαίρεται
τα νιάτα τα γραμμένα

Tι να σου στείλω ξένε μου
ν'αυτού στα ξένα που'σαι
μωρέ ξένε μου

Σου στέλνω μήλο, σέπεται
κυδώνι μαραγκιάζει
σου στέλνω μοσχοστάφυλο
στο δρόμο σταφιδιάζει

Σου στέλνω και το δάκρυ μου
σ'ένα χρυσό μαντήλι
μωρέ ξένε μου
το δάκρυ είναι καυτό
και καίει το μαντήλι
μωρέ ξένε μου
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>My expatriated birds

Singer:  Alkyone
Lyrics:  Traditional
Music:   Traditional


My expatriated birds
and complaining [birds]
oh my foreigner
the foreign land enjoys you
the fated youth

What shall I send you my foreigner
there abroad where you are
oh my foreigner

I send you an apple, it rots
a quince, it withers
I send you an aromatic grape
it becomes a raisin en route

I also send you my tear
in golden handkerchief
oh my foreigner
the tear is hot
and burns the handkerchief
oh my foreigner
</code></pre></div></div>

<p>The Greeks are a diaspora nation in large part due to their homeland.
Greece is a mountainous, rocky place, surrounded by sea. Salt coming
from the vapours renders the coastline unsuitable for cultivation.
There are relatively few spots for agriculture in the hinterlands. The
effects of geography are more pronounced in the many islands.</p>

<p>The presence of mountains makes transportation difficult, maritime
travel is especially dangerous during the winter, while the absence of
abundant minerals prevents the establishment of local heavy industry.
Many Greek communities were thus insular, forming a loosely connected
ethnic whole. Only nation-state building (e.g. public education,
conscription) and modern technology (telecommunications,
transportation, …) have changed the dynamics towards an ever-closer
sense of belonging.</p>

<p>In recent decades, Greece has relied on tourism to boost its exports.
The sector as a whole is booming, though this is not the blessing one
would imagine. Business has its own logic, which typically is
rapacious. It turns housing into yet another commodity that is
instrumentalised in the service of the given product. Locals are
priced out of their houses and forced away from their lands. Those are
taken over by commercial interests of dubious origin and turned into
what I have described before as a “theme park”, i.e. something that
has the trappings of tradition but is devoid of authenticity:
<a href="https://protesilaos.com/politics/2025-09-02-when-your-country-is-a-theme-park/">https://protesilaos.com/politics/2025-09-02-when-your-country-is-a-theme-park/</a>.
Put differently, the age-old history of hardship persists in this
land, adapted to present-day circumstances.</p>

<p>Against this backdrop, the lament for the grief of expatriation is as
pertinent as ever. The song alludes to destiny (τα νιάτα τα γραμμένα)
in recognition of the contributing factors to the phenomenon; factors
which have been germane to the Greek experience from antiquity, and
which may thus be talked about as if they are connatural of Greekness,
hard-coded in our genetic makeup as it were. “This is our land, these
are its prevailing conditions, such are the options we have” is the
thinking.</p>

<p>Relatives and friends of mine are scattered around the planet. I also
emigrated, originally in pursuit of city lights, but eventually
relocated to a mountainous region where I built my modest house. The
most daring, the most desperate, the most capable, migrate in hope of
a better fortune. As a result, the local communities experience a
drain of talent. It is, in fact, a loss of vitality as immigrants are
typically young. Younger people with big ideas and a zest for life are
nowhere to be seen. The villagers are withering away and with them a
culture becomes extinct.</p>

<p>Those who stay in the rural areas or those who arrive out of a
conviction to fight against the trends can only subsist without making
structural changes to their milieu; changes of the sort that would
reverse the historical trajectory. This is because the vibrancy of a
community is a game of numbers: the fewer and the older people are,
the less dynamic their society will be. Even if some individuals are
more active than others, they cannot compensate for the lack of
numbers. They may not, for example, start a small business or play a
team sport.</p>

<p>It is virtually impossible to entice those expatriated folk to return
to their ancestral lands. As the song points out, they are in a
distant place, symbolised by the decaying fruit and tears of sorrow
that never reach them in their spontaneous, unfiltered form. This
distance may be physical, though that is relatively easy to manage
nowadays with work-from-home, renewable energy, mobile Internet, and
superior road networks. The greater challenge is how to bridge the
mental gap, which pertains to an individual’s increasingly vain wants
and expectations. This is a problem of attitude.</p>

<p>Heperus, here a proxy for every land where the slow-paced life is the
norm, cannot offer modern attractions or distractions. Doing so would
be inwardly contradictory: a drift towards its theme-park-isation.
Heperus has no bling and no space for miracle workers. All it offers
are open vistas and a feeling of direct connection to the Earth
Mother. It cannot entertain the illusion—for it is only an
illusion—of plentiful options that the megalopolis engenders, nor
can it feed the hopes of the arrivistes for ever-higher social
standing.</p>

<p>The lived experience that is conditioned by material constraints, not
the inevitability of death and certainly not our shared human nature
in abstract, is the greatest equaliser. When people believe they can
earn more, their greed takes hold of their ego and makes them compete
with each other over glory and recognition. They develop a ruthless
individualistic outlook, facilitated by the anonymity of large crowds,
rationalised as pop culture social Darwinism, and talked about in
terms of the homo economicus.</p>

<p>When the American oligarchs incorporated the motto “In God We Trust”
on their dollars and other symbols of statehood, they did not merely
perform an act of tokenistic theism. No! They formalised the
culmination of a certain ethos of insatiable desire and maximum
competitiveness towards all. This is now the dominant lifestyle in
many parts of the world. It is all about more, and more, and more. The
faster the pace of life, the closer people are to the all-devouring
money-god.</p>

<p>The song reminds us that we are all birds; birds who still have
differences between them, though who shall all live the same kind of
life. Material constraints make this point evident. Under such
conditions, those who try to fashion themselves as special look
ridiculous, for the means at their disposal are largely the same as
every other person’s in their midst.</p>

<p>In the Greek conception of fate, there is inevitability though there
is also space for luck (unpredictability or the open-ended interplay
of factors more broadly) as well as choice. It has indeed been the
case that most birds left their lands. Though the world can go in
circles and the agrarian society may become the norm once more.</p>

<p>Not all hope is lost. We will recognise our likeness, we will stop
competing to the point of collective annihilation, only when, through
physical proximity and shared woes, we rediscover the need for
community qua extended family.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: beardless once again</title>
      <description>I shaved earlier today. Took a picture of the beard and then of the end result.</description>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-06-07-beardless-once-again/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-06-07-beardless-once-again/</guid>
      <content:encoded><![CDATA[<h2>Before</h2>

<p><a href="https://protesilaos.com/assets/images/self/2026-06-07-1.webp"><img alt="Protesilaos bearded" src="https://protesilaos.com/assets/images/self/2026-06-07-1.webp" /></a></p>

<h2>After</h2>

<p><a href="https://protesilaos.com/assets/images/self/2026-06-07-2.webp"><img alt="Protesilaos beardless" src="https://protesilaos.com/assets/images/self/2026-06-07-2.webp" /></a></p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Limbo</title>
      <description>A puzzle platformer with a dark aesthetic and solid mechanics.</description>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-06-06-limbo/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-06-06-limbo/</guid>
      <content:encoded><![CDATA[<p><em>Limbo</em> is a puzzle platformer with a dark aesthetic (<strong>spoilers
below</strong>). It has a monochromatic colour palette while the entire
screen is rendered through a grainy film filter. You assume the role
of what appears to be a boy: its silhouette is grey while its eyes
emit light. This is all you know about your character.</p>

<p>It is not clear where you are and what exactly is happening to the
world around you. You wake up in the middle of some indeterminate
place and must walk to another location. Even completing the game does
not tell you much of what is going on. The ending leaves everything
open to interpretation. There is no dialogue or any hint you can read
on. Just unending darkness.</p>

<p><em>Limbo</em> is all about the gameplay and its attendant vibes. The actions
you may perform are basic directional motions and a single jump. There
are no power-ups or tools you may acquire. Beside your innate motions,
you can interact with some objects in the environment to solve
puzzles, such as to push a crate around or pull a lever.</p>

<p>Each section represents a single puzzle. Solving it allows you to
progress to the next section. The problems you are confronted with
require both situational awareness and well-timed execution of
actions. In other words, you will die a lot until you figure out what
to do.</p>

<p>The <em>Limbo</em> gameplay revolves around the idea of trial and error. A
small miscalculation and your life is forfeit. You respawn at the
point where the puzzle starts, which typically means that you are only
a few steps behind where you stopped. Dying is the means through which
you learn about the requirements of each puzzle.</p>

<p>This loop of death and rebirth as a vehicle for learning is a fecund
metaphor for how we recalibrate our corpus of knowledge. As we are
exposed to new information, the now incompatible part of us must be
left behind: it cannot form part of the new world. To err in honesty,
and to become aware of our mistakes, is to liberate ourselves from the
grip of the given falsehood. Those who are afraid to make mistakes,
those who do not admit to any wrong, those who choose to only show a
boutique view of their self, are not going to progress to the next
“puzzle” because they refuse to go through the cleansing baptism of
fire that is trial and error.</p>

<p><em>Limbo</em> executes its ideas well. The atmosphere is consistently eerie,
the environment remains unwelcoming throughout, the mechanics are
precise, and the puzzles are smart. It is a nice experience all
around.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Age of Empires II</title>
      <description>The Age of Empires II is one of the best games ever made. It is still getting support and has practically infinite replay value.</description>
      <pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-06-05-age-of-empires-ii/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-06-05-age-of-empires-ii/</guid>
      <content:encoded><![CDATA[<p>I was surprised to learn that <em>Age of Empires II</em> is actively
developed to this day. I remember the original game, subtitled <em>The
Age of Kings</em>, being published during the reign of Edward Longshanks.
It was followed by a comprehensive expansion pack, called <em>The
Conquerors</em>, shortly thereafter to critical acclaim.</p>

<p>A friend of mine had the game installed on his computer—a fact his
mother loathed. “What are you boys going to do with your life!?”, I
still hear old Jenny freaking out over our complete lack of interest
in education. My friend was terrible at the game, by the way, so I
understand his mother’s frustration: at least he could have gone into
e-sports had he applied himself more meticulously, you know.</p>

<p>The few times when I would not play football due to adverse weather
conditions, I would stay at his place for a couple hours to watch him
build up his mighty dukedom at snail’s pace. He would assign a single
villager to build all the fortifications, one lass to do all the
fishing, and a truly manly man to mine the gold under the beating sun.
Then we would just sit there like complete idiots to marvel at the
peerless work rate of medieval people.</p>

<p>This is not how you sell a franchise, I know… The game is actually
great. I consider it one of the best ever. It still receives patches
and new downloadable content because it gets the core gameplay right
and has a tonne of things to explore. Casual gamers can enjoy a nice
blend of city-building and historical trivia, while seasoned players
will find a deep real-time strategy game that shall test their ability
to manage resources through space and time as they overcome their
foes.</p>

<p>The campaigns are based on historical events, so history nerds will be
especially pleased to explore the many cultures they can play as from
virtually all corners of the planet. Furthermore, they will be
inspired to find answers to the hardest problem of modern science,
which is how did those skirmishers carry infinite javelins.</p>

<p>Beside the campaigns, there are exhibition matches with all sorts of
rules that are about the intricacies of winning a war through superior
control of civilian and military units. Indeed, what we learn from the
game once we try to play it at a competitive level is that there is no
such thing as an objectively superior army.</p>

<p>Each civilisation has its own strengths and weaknesses, which are
expressed through power peaks and valleys as they advance their
economies. There is a gameplay logic to this, so that it is fun to
play and experiment with all the options. Though even real-world war
exhibits the same patterns of force through temporal and spatial
magnitudes. For example, the combined armies of USA and Israel may, on
paper, be stronger than Iran’s but they have clearly lost the
asymmetric war as of this writing.</p>

<p>Concretely, it is a mistake to pick a culture in-game on the basis of
whose technology tree yields the strongest units towards the later
parts of a match: you may never live that long. At the competitive
level, early advantages tend to have a snowball effect. It is thus
essential to maintain the pressure high and control the geography of
the conflict. Continuous small wins contribute to success much more
reliably than a long-planned single killer blow.</p>

<p>What is a bit silly with the latest expansions to the <em>Age of Empires
II</em> platform is that the historical window continues to widen. It used
to be focused on the European Middle Ages, roughly after the fall of
Rome to the widespread adoption of gunpowder. Whereas now you can play
as the ancient Spartan infantry as they stand their ground against
their primordial enemies of, <em>checks notes</em>, the Jaguar Warriors of
emperor Montezuma…</p>

<p>Humans are notoriously bad at drawing clear delineations. If you do
not believe me, just ask the neocons at Washington DC to produce a map
of the Middle East.</p>

<p>Seriously though, it is cool to get such fan service which doubles as
genuinely interesting content. There are probably a few hundred hours
that you can put into this game just to get through all the campaigns.
Though in practice there is infinite replay value to be had. It is
just a matter of how determined you are to distance yourself from
society.</p>

<p>What I do consider a negative about the latest additions to the
platform are the increasingly gimmicky mechanics that some special
forces have. There now are units that project an aura, others that
have a charge attack, and others still that can switch forms. While
those ideas are cool in their own right, they make for a highly
complex interplay of factors: it detracts from the simplicity of just
spamming Huskarls at your enemies until they ragequit.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>On the absence of Greeks from Hollywood’s Odyssey movie</title>
      <description>I explain why the lack of Greek actors from a Hollywood production is not a problem, given what art is about.</description>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-06-03-absence-greeks-hollywood-odyssey-movie/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-06-03-absence-greeks-hollywood-odyssey-movie/</guid>
      <content:encoded><![CDATA[<p>In <a href="https://www.theguardian.com/film/2026/jun/03/christopher-nolan-no-greek-actors-the-odyssey-matt-damon-zendaya-charlize-theron">a column for <em>The Guardian</em></a>,
Chris Cotonou comments on the omission of Greek actors from the
otherwise multicultural cast of Christopher Nolan’s <em>The Odyssey</em>.
Chris notes:</p>

<blockquote>
  <p>An honourable intention [to have a multicultural cast]. But for us
Greeks, it makes our absence even more glaring – especially in the
year’s blockbuster event. If your film sets out to represent the
world, wouldn’t it be obvious to fill one space at this large,
wonderfully multicultural table with the people who are most
authentically connected to the source?</p>
</blockquote>

<p>Sure, it would be nice. Though I personally do not see any problem in
the absence of Greeks. This is a story. We are meant to take it
lightly: it is make-belief. We are not supposed to treat it as a
living continuation of antiquity, nor as an accurate depiction of
Greekness (assuming we can even define and capture “Greekness”). If we
do watch the movie, then we set our expectations accordingly. Or we
simply ignore it and move on with our lives.</p>

<p>The Greeks who care about expressing themselves—and their cultural
depth by extension—are doing their part on a daily basis. We would
not put our faith in the moneymen who run Hollywood to do the work in
our stead. Their values are not our values.</p>

<p>That Helen of Troy is a black woman (Lupita Nyong’o), for example, is
testament to the power of art to make us think of what is being
represented through an idol, rather than emphasise the idol itself.
Besides, Helen was famed for her beauty: Lupita passes that test with
flying colours.</p>

<p>Human expression relies on simplification, symbolism, and metaphor to
communicate profound teachings in a manner than has mnemonic value.
This we know for millennia from the Greek religion in how we
anthropomorphise the divine for our needs as people. God is perfect:
it does not need us to believe in anything or help it in some way. We
are the ones in need of faith. Gods do not have the frailties of the
human character. But we have to imagine them as remarkable yet
fallible people who are still somewhat close to us. We do so in order
to have role models that we can aspire towards. The average person
seeks a hero to mimic. God cannot just be the sort of abstraction that
only few wise people throughout history may grasp.</p>

<p>Athena, for example, is a proxy for wisdom. Our artistic genius
imagined the goddess in a certain way, but we would never think of
wisdom as a quality that is fully expressed through any given
artefact. God cannot be limited to the deeds of a human, nor to a
textual or pictorial representation of any kind. Only idolaters
believe as much.</p>

<p>Part of what acculturation is about is to make people understand that
whatever idol is a mental shortcut for something else; something that
can never be exhausted. As such, the idol is a useful tool at best
though must never be the focus of our attention and worship.</p>

<p>Those who only recognise the idol, which in this case are the actors
qua non-Greek actors, tell us that they have more growing to do. They
still operate at a level of conscience that misunderstands symbolism:
they do not appreciate what is being represented through the artistic
medium. Such people will miss the point even if the most
stereotypically Greek-looking artists take on the various roles.</p>

<p>My suggestion if you really care about the Odyssey is to read the
ancient epic and think for yourself. Greek culture is ecumenical. Your
looks and your ancestry are irrelevant in this regard. Do not watch
the movie either. Hollywood is the cultural equivalent of junk food:
it will eventually harm you.</p>

<p>And to my fellow Greeks: if you are proud of your heritage, then do
your part in contributing to the commons without fanfare and without a
misplaced sense of exceptionalism. Nobody respects those who complain
and play the victim the whole time, nor those who think they are
special. Our culture has always been one of continuous struggle and
excellence, not feeblemindedness (i.e. malakia (μαλακία)), anyway,
starting with our holy festival of the Olympic Games—again, a proxy
for the attitude of a champion one must have in the face of life’s
challenges.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Re: On learning something new</title>
      <description>A private exchange in which I comment on how I approach the topic of learning something new.</description>
      <pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-06-02-re-on-learning-something-new/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-06-02-re-on-learning-something-new/</guid>
      <content:encoded><![CDATA[<p>The following is taken from a private exchange. I am publishing it
with permission from my correspondent without disclosing their name
and contact details.</p>

<hr />

<blockquote>
  <p>I was curious, what is your general approach to learning something
new? For example, say you become interested in lockpicking
(locksport). What would your approach be to learn this?</p>

  <p>In general my approach goes something so likes so:</p>

  <ol>
    <li>See if there is a subreddit dedicated to the topic, “r/locksport/” in this case.</li>
    <li>See there “Wiki” section (r/locksport/wiki/index) and read through any type of “Beginner” resources.</li>
    <li>If there is a recommended book, I will begin with that, then move on towards interactive courses, or lastly, YouTube videos.</li>
  </ol>

  <p>If there is no subreddit, than I will likely search online for
“Locksport book” or perhaps “Locksport filetype:pdf” and go from
there. You’re a very knowledgeable person so I would love to see how
you approach learning.</p>
</blockquote>

<p>Before even learning something new, I question whether I even need that
skill or piece of knowledge. This is because I do not have enough time
to commit to everything I would otherwise be keen on exploring.</p>

<p>For me, it is essential to be mindful of one’s tendency to go down
rabbit holes. If you do not control your propensity to indulge your
curiosity then you run the risk of not focusing on your duties and
thus never experiencing fulfilment. I basically have infinite
curiosity as well as the basic skills to become competent at
virtually anything, but my resources are finite, so I have to optimise
accordingly.</p>

<p>I think it is rewarding to hold yourself back from that which is
impressed in your mind as new and shiny. Yes, it is attractive though
it comes with considerable hidden costs. Commit to what you have. Only
expand your activities when there is a deep-seated reason for it, at
which point you are prepared to incur whatever costs in pursuit of the
expected benefits.</p>

<p>In other words, know your limits and live within your means.</p>

<p>To your point, I think your approach is good. Though I am cautious of
Reddit as the advice you get there will not necessarily be reliable.
This is not because others are trying to deceive you, but simply a
consequence of the mismatch of available information, wants, and
priorities.</p>

<p>I will use Emacs as an example. If you go to the subreddit for it to ask
any question you will likely get answers that you cannot seamlessly
integrate in your current knowledge. The respondents do not know exactly
what your current level is, are not aware of your usage patterns, cannot
anticipate your immediate needs, and probably do not think the way you
do.</p>

<p>Depending on your question, you will get diametrically opposed views.
Each contributor may be right within the context of their respective
workflow, but this does not mean that the feedback you will receive is
actionable for you and of high value.</p>

<p>My approach is to read the official resources or study the primary
material, wherever relevant. Anything derived therefrom (e.g. a
community Wiki) will come later after I have a sense of what I am
looking for. I approach the topic with an eye towards simplicity: the
elaborate methods are likely surplus to my requirements.</p>

<p>Also, I recognise that there are marginal returns to any given
endeavour. I do not need to become the best engineer in the world in
order to build a house. I just need to be “good enough”
and—voilà—I do what I set my mind to. Again, I resist going
further deep if I do not have an excellent reason to do so.</p>

<p>I put ideas into action. I want to experience the consequences of my
deeds: I proceed through trial and error, which is why I am slow and
methodical by default. I get bored by endless chatter and its
attendant indecision, which is also why I do not think highly of those
who do thought experiments but have never practised anything of what
they entertain. As such, those who make claims of any sort about their
acumen I judge on the basis of their behaviour, not their stated
beliefs.</p>

<p>I live by that standard. This is why I refrain from saying much and
from making promises. If I state something, it is because I do it. I
speak from a position of embededness: the knowledge I have is
reflected in my life.</p>

<p>This brings me back to being careful about what I commit to learning.
You mention locksport, for example. This is the first time I encounter
the term. It may be something that I will like if I try in earnest.
But right now I cannot think of a scenario that is relevant to my
day-to-day affairs. So I am not going to search online what exactly
you are describing, even though I am curious to learn more. I will not
even try, not because I have anything against you or somehow pass
negative judgement to this activity, but only due to the understanding
that I have a zillion other things I could also be checking out, while
I know that I have projects I am committed to which demand my
continuous attention. My projects will thus take priority.</p>

<p>To be a skilful learner, then, I master the basic power of restraint.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Hyper Light Drifter</title>
      <description>A wonderful adventure with impressive pixel art, memorable music, and interesting story-telling.</description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-06-01-hyper-light-drifter/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-06-01-hyper-light-drifter/</guid>
      <content:encoded><![CDATA[<p><em>Hyper Light Drifter</em> is an action game with a pixel art aesthetic and
tight controls reminiscent of games from the 1990s (<strong>spoilers
below</strong>). You control a futuristic sword fighter who embarks on a
quest to save the world from some indeterminate evil.</p>

<p>You progress through a sprawling world of forests, mountains, lakes,
sand dunes, and underground laboratories, fighting increasingly
challenging enemies.</p>

<p>The story is never explicitly given to you. There is no dialogue, no
exposition, no lore you may read on. Much like the life we are endowed
with, at some point you become conscious in a world that predates you,
have all sorts of questions for which there are no definitive answers,
and must carry on doing what your condition renders unavoidable. To
what end? People come up with clever theories but none is necessarily
correct.</p>

<p>The character you control appears to be suffering from some severe
illness. At several points during the adventure they cough out blood
and look considerably weakened. The protagonist is haunted by visions
of inimical figures that pursue, attack, and mortally wound our hero
while plunging the world into darkness. Who may those shadowy forces
be and what are their plans? There is no obvious answer.</p>

<p>As you move around the map, you collect tokens that may be exchanged
for permanent upgrades to your gear. For example, you can buy an
extended magazine for your gun and augment your sword to also deflect
any projectiles fired your way. This is how you become more potent,
though you never reach a point where the game feels easy. Even with
all the upgrades you still need to pay attention to your movement,
avoid attacks, and strike when the time is right.</p>

<p>The audio design is essential to the atmosphere of the game. Each area
has its own theme. The overall mood of solitude in a dangerous place
is reinforced through sound. Though it can feel repetitive if you
backtrack a lot—which you will do if you are curious enough to check
every edge of the screen for hidden passages.</p>

<p>What I like the most about <em>Hyper Light Drifter</em> is the story it
communicates through its subtle style. It leaves threads open-ended
for the player to interpret according to their own sensitivities.</p>

<p>To me, what we are presented with is an allegory for fear; the fear of
losing that which we hold dear. Our hero is confronted with the
monsters that spring from within and must overcome them in order to
move on. Where to is unknown. To reign supreme over those horrors
requires that we embed in feeling the recognition that we do not
actually own anything: not the tangible goods, such as the sword we
wield, nor the intangible qualities we colloquially refer to as
“ours”.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: Prints in the sand</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-06-01-prints-in-the-sand/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-06-01-prints-in-the-sand/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Prints in the sand
fade before me
What transpires
shall transfigure
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Re: Living in seclusion and the woman question</title>
      <description>An excerpt from a private exchange in which I answer how can I live in the mountains where there are no women, money, and status.</description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-06-01-re-living-seclusion-woman-question/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-06-01-re-living-seclusion-woman-question/</guid>
      <content:encoded><![CDATA[<p>The following is an excerpt from a private exchange that unfolded over
two rounds. I am sharing it with permission from my correspondent.</p>

<h2>First round</h2>

<blockquote>
  <p>When I see your content about living in the mountains of Cyprus,
building your own house, working on your garden, taking pictures of
yourself, building your life in seclusion, etc., one question that
ALWAYS pops up in my mind is, “how’s he gonna do `marriage’?”, or
“how a man living outside the city, in the mountains, by himself,
ever does or ever going to satisfy one human need a man feels almost
every day in the most intense way possible, which is sexual
intimacy?”</p>

  <p>[…]</p>

  <p>You are living in the mountains, which sounds nice. But in return,
from my point of view, you get none of these:</p>

  <ul>
    <li>woman</li>
    <li>money</li>
    <li>status</li>
  </ul>

  <p>[…]</p>

  <p>I guess my question is along the lines of, what’s your prospect of
marriage, you think? Do you consider that never happening for you?
Did you let go of this? If so, don’t you think you are letting go of
a very intense part of “a man’s lived experience”, that is,
sexuality, out of your life? Doesn’t this impoverish your life?</p>
</blockquote>

<p>You are right. Living in a remote area means that I do not have access
to women, money, and status.</p>

<ul>
  <li>
    <p>I have no interest in status. More importantly, I do not pay
attention to what others think in general or think of me in
particular. I act out of my own initiative.</p>
  </li>
  <li>
    <p>Money is relevant only to the extent that I cover my basic needs.
Since I do not value status, this practically means that I do not
have lots of material wants, such as fancy furniture, expensive
cars, vacations in luxury resorts, et cetera. To be clear, I do not
think those are inherently wrong: I simply am not drawn to them.</p>
  </li>
  <li>
    <p>For the purposes of our exchange here, a woman is interesting to me
only if she wants to have children. She does not need to be
beautiful, or smart, or an intellectual, or whatnot. Just have the
disposition for children.</p>
  </li>
</ul>

<p>Based on those three you can already tell that me living in the
mountains is not the main constraint.</p>

<p>I am poor and thus not attractive to any woman who cares about status
and comfort more broadly. I will not put my heart into a career and so
I diminish my chances of ever being financially secure. Adding to
this, anybody who has checked my publications knows that I am not the
kind of person who will be easy for an employer to control, which
makes me practically unemployable (this is no mere theory of mine, as
I have had prospective employers point out my strong independentist
quality as a major downside for them).</p>

<p>I lived in much more densely populated areas and I even worked in
highly social jobs with plenty of women. For me, it is easy to talk to
people. Still, I never met a woman that I would start a family with.
Of course, it could simply mean that I am not physically attractive
(and I am definitely not attractive as a means for upward social
mobility). But, again, the point is that the mountains are not the
primary issue here.</p>

<p>Living in the mountains introduces a pre-filter. All women who seek
money and status will not be living in this place or will be eager to
leave. The only question mark is whether I can meet a woman who
already lives here out of her own volition or who would actually want
to relocate to this place. This has not happened and may never happen.</p>

<p>To your questions about marriage, I think that I will not get married.
I will be 38 soon and was never close to getting married. There is no
indication that a change will happen. It is something I came to terms
with a long time ago and accepted it as part of my reality. This is
why I even moved to the mountains to begin with. I am not disturbed by
it and have no regrets. The mountains are beautiful, my wellness is
optimal, and I feel as strong and capable as ever.</p>

<p>My attitude is to work with what I have and be grateful for it. I keep
tending to my tasks without distractions and am happy. Wanting
companionship for the sake of companionship is what makes one
miserable: they place their worth as a person on another person’s
favourable opinion—and opinions are fickle. Plus, having
companionship for its own sake means that you are suppressing
important aspects of your selfhood, which will inevitably break you in
other ways.</p>

<h2>Second round</h2>

<blockquote>
  <blockquote>
    <p><strong>PROT:</strong> You are right. Living in a remote area means that I do not have
access to women, money, and status.</p>

    <ul>
      <li>I have no interest in status. More importantly, I do not pay
attention to what others think in general or think of me in
particular. I act out of my own initiative.</li>
    </ul>
  </blockquote>

  <p>I find this interesting and borderline unbelievable. In my personal
experience and observations about other people around me, also
considering the basic psychology of mankind that I’ve read from
evolutionary psychology books, the “status seeking” is a fundamental
activity the man as a social animal conducts. So, I am inclined to
say, surely you must also be seeking status albeit in a more veiled
or not immediately apparent sense. For example, every hobby group,
from Magic the Gathering trading card game players, to open
source/free software development communities have unspoken of but
observed “status” markers, holders, and plays. I think, in your
case, you hold high status among the “emacs content creators”-sphere
online. However, I don’t want to immediately imply that you’ve
sought to get high status in emacs community when you put out your
useful content that you’ve put so much time and effort in.</p>
</blockquote>

<p>I expect all thought to be nuanced, otherwise it will be discerning
the categories it already considers constant while reaching
questionable conclusions in the process.</p>

<p>Everything can be construed as attention-seeking, including the act of
avoiding attention, such that all actions are reducible to a want for
status. If you apply this consistently, you quickly eliminate all
nuance and your analytical capacity is limited accordingly.</p>

<p>In turn, this leads to the tendency of explaining everything along the
lines of coping and projecting—“twin sophistries”, as I have called
them before. If I say “I do not like X” it must be that I cannot have
X as my own and thus I hide behind a negative opinion of X, without
even realising it. Similarly, if I say “Y is what people do”, it is
because Y really is a frailty of mine that I wish to find in other
people so that I feel better about myself.</p>

<p>Couched in those terms, everything is an elaborate trick that is
ultimately reducible to a matter for your genitals. So the answer to
every “why” can be “sex” which in turn implies “survival”.</p>

<p>I think there is value in that line of reasoning but we have to be
careful with it. It is not a magic trick to explain all that is
pertinent to the human condition.</p>

<blockquote>
  <blockquote>
    <p><strong>PROT:</strong> My attitude is to work with what I have and be grateful for it.</p>
  </blockquote>

  <p>This. This is the part I am having a hard time with. Because when I
read your blog, when I see your pictures, your videos, etc., I
involuntarily find myself putting myself in your shoes, and finding
myself gauging my emotional state if I was in your shoes. I find
that I would be mostly furious with ambition, repeating the lines:</p>

  <p>Do not go gentle into that good night. RAGE. RAGE, AGAINST THE DYING
TO THE LIGHT.</p>

  <p>…to myself, until I finally get my comeuppance against the world
that has pushed me into poverty, loneliness. Finally take my
vengeance and “get mine” in this world by getting a career (possibly
in tech industry) that allows me to bring upon it disruption (as in
“disruptive innovation” of business cycles) so that I can carve out
a piece from the world in my shape (that is, “get mine”, in women,
money and status).</p>
</blockquote>

<p>I see. I do not feel anything about the world: it simply is. I am calm
and do not blame anyone. If I was disturbed by my living conditions
then I would have gone mad by now. Whereas I am indifferent towards
specific outcomes and live as easygoing of a life as possible.</p>

<p>I make a distinction between “commitment to initiatives” and
“commitment to results”. I am fully committed to my projects but I
will not feel disturbed if things do not work the way I had imagined.</p>

<p>I understand, in the deepest sense of feeling and embodying it, that
the world does not revolve around me and that I am not entitled to
anything. The world does not exist for me and I do not expect it to
conspire in my favour.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Re: how to avoid doing XYZ when I want to do ABC?</title>
      <description>Excerpt from a private exchange in which I comment how to recondition ourselves to do something we want.</description>
      <pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-05-31-how-to-avoid-doing-xyz-when-i-want-to-do-abc/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-05-31-how-to-avoid-doing-xyz-when-i-want-to-do-abc/</guid>
      <content:encoded><![CDATA[<p>The following is an excerpt from a private exchange. The details of my
correspondent remain private, as I am publishing this with permission.
The indented/quoted part comes from my correspondent.</p>

<hr />

<blockquote>
  <p>The question I have for you is one related to behaviour. I have been
informally studying, and trying to practically apply, philosophy for
about three years now. While I can say with confidence that I have
learned a little about it, I am hesitant in claiming I have learned
how to live it. I have had months in which I feel in control of my
actions and in touch with the world, but they are dispersed by
periods where my impulses have the reigns. The recurring pitfall I
find myself in, is simplified as follows:</p>

  <ul>
    <li>Through reflection I have realised that XYZ is bad for me.</li>
    <li>Likewise I realised that ABC is good for me or necessary.</li>
    <li>When the time arises for ABC, I do XYZ.</li>
  </ul>

  <p>In general XYZ is easily accessible and gives instant gratification,
while ABC requires effort and the fruits are not borne until later.
An example of XYZ is wasting time away e.g. on YouTube, whereas ABC
is writing my thesis.</p>

  <p>It feels very silly when written out like this, and the answer would
be to just do ABC. I believe that in moments where I am at a
crossroads between the good and bad actions, I push my reason aside
and simply indulge in the instant gratification given by XYZ.</p>

  <p>I was wondering if you have had experience with or any thoughts on
this. I want to be able to rely on myself, but it feels as if deep
inside I do not truly want to give up my bad habits. Perhaps I am
scared of the notion of a life where I am missing out on many
conveniences. How do you keep yourself in check once you decide not
to do XYZ, especially in moments where it feels as if your body
yearns for it?</p>
</blockquote>

<p>I think this is a case of conditioning. It is not about how well you
understand what you want to do or how bad the consequences are of the
behaviour you are trying to avoid. It is not even a matter of how
strongly you believe in your values.</p>

<p>Conditioning is about the automaticity that we naturally build for
everything. One way to understand this is with the muscle memory that
helps you type on the keyboard. Your fingers know where to be and your
hands move accordingly without you having to think about each tiny
motion again and again. Even if you are not a proper touch typist you
still have embedded in your body a certain memory of how things are
done.</p>

<p>The body does this to economise on the consumption of energy. It is
equivalent to the cache on the computer. The upside is that we do not
have to relearn everything on a continuous basis, which is
energy-intensive. Think how much time/effort it would take to relearn
how to type each day or even multiple times per day—and then extend
that to everything you have learnt. Same if the computer needs to
re-run all the computations from zero to get the values it needs each
time: it becomes increasingly burdensome to do anything. The downside
of this conservation of energy is that we embed potentially harmful
patterns that are then hard to undo, just how it is difficult to
retrain our muscle memory.</p>

<p>In the scenario you describe, conditioning involves situational
memory. It is about the association of a certain place with a given
activity and its attendant stimuli. To change the activity, then, you
need to break that association. One approach is to have the iron will
to “just do it”, but I personally have little faith in that being
successful, as it requires discipline that can only be developed over
time (and if you had that then we would not be having this exchange).
The other approach, which I prefer, is to physically remove yourself
from that place and to do something else instead.</p>

<p>For example, sitting at your computer in the afternoon triggers you to
perform some mentally harmful activity. You then need to catch
yourself early in the action. Once you are done with the task you
actually wish to accomplish switch off the computer and leave the
room. Go outside for a walk, play some sport, do gardening, make your
own bread and cook a nice meal, or stick to literally anything that
requires some attention while keeping you physically away from the
computer. You want to keep a distance from the situation that enables
the pernicious activity for as long as possible. This distance is
physical at first and becomes mental over time, at which point you are
in control of your behaviour rather than the behaviour being in
control of you.</p>

<p>Creating such a separation will allow you to gradually weaken and
eventually dismantle the connections you once had, while creating new
and benign ones in their stead.</p>

<p>You mention yearning, so let me offer a concrete example from 20 years
ago when I quit junk food (and related). On my way back home from
university there was a fast food restaurant. I would think of its
servings even when it was closed, which is how I noticed the
aforementioned situational memory. So I decided to circumvent it.
Instead of taking the short and direct way that connected my apartment
to the campus, I would go on a big detour. This was beneficial for me,
anyway, as I walked more and got to explore the area, but it also
helped me uproot the yearning. I was then free from the desire and
could pass in front of the restaurant without feeling the pull it once
had on me.</p>

<p>There is some level of required discipline to do this on your own. The
more disciplined you are, the easier it is to commit to a course of
action and sustain it long-term. Otherwise, you have to create
arrangements that reinforce your new direction. For example, if it is
a social activity then you have other people keeping you engaged (and
thus away from what you do not want to do). If it is food you are
making, then make sure it is the kind of meal that demands your
attention, as opposed to baking something for 2 hours. I will not
belabour the point with examples. I do not know the exact situation
you are describing in abstract terms, though I am confident you can
figure out the details once you notice the dynamics.</p>

<p>Finally, about the study of philosophy. I am, of course, fine with
that. Though I consider it a trap to commit to the self-invigorating
cycle of reading and thinking. The reason is that it represents a turn
inward from which it is difficult to escape and which will eventually
inhibit your decision-making. In sustained inwardness you will only
find mental illness. Learn, instead, to maintain a balance between
intellectual matters and physical activity. Do not live in your head.
To live in your head sometimes is enriching. To live in your head the
whole time is a death sentence.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Borderlands 3</title>
      <description>An excellent first-person shooter that provides a commentary on the excesses of our world.</description>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-05-28-borderlands-3/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-05-28-borderlands-3/</guid>
      <content:encoded><![CDATA[<p>Games I have covered thus far are slow-paced experiences: puzzles that
you piece together to reveal their secrets. They tell you a story
without expecting you to be decisive in your actions. <em>Borderlands 3</em>
(hereinafter referred to as “Borderlands”) is the exact opposite
(<strong>spoilers throughout this article</strong>). It is a first-person shooter
with many intense moments of action. You do not need to be a commando
yourself to have a fun time, but you definitely have to have a decent
mastery over the controls.</p>

<p>I am a fan of the gameplay. Shooting is precise and the feedback
direct. Enemies are generally easy to discern as they stand out from
their environment. Their motions are basic so you will quickly figure
out how to exploit their weaknesses. In this sense, the game is easy.
I personally like it that way as it contributes to the absurdity and
lightheartedness of its lifeworld. It would make no sense for those
hordes of cultist psychos to be at once delirious in fanaticism and
assiduous in their every decision.</p>

<p>My favourite part of the violence is those critical hits that you can
score with a precision gun. Once I got my hands on a sniper rifle I
was going around “bang! bang! bang!” with the headshots. By contrast,
the assault rifles and submachine guns felt underwhelming. It is
preposterous to have those unarmoured maniacs take thirty bullets to
the stomach without flinching. Though I make an exception for some
“epic” weapons that would just annihilate everything. I had one such
shotgun which turned an otherwise challenging boss fight into a
4-second press of the trigger.</p>

<p><em>Borderlands</em> is proudly silly and self-deprecating. It has a certain
humour that you may love or hate. I find it appealing. The characters
you meet are flat and uninspiring, which I think is a perfect fit. Why
would we even make pretences to intellectuality when we are here to
pop off some heads? I would find it unsettling if, say, Vaughn was
contemplating the implications of his existential angst, even though
he looks a little bit like a certain philosopher I know! To me he is
not a believable character. He is a talking head that gives you orders
and provides colour commentary for a little while until some other
equally uninteresting figure takes over.</p>

<p>What the cast of characters does well is express unhinged opinions
while behaving casually. As outsiders, we may think this is
over-the-top, though we can also take the view of the anthropologist
in describing without judging how other people behave. In this regard,
the delivery is super effective in highlighting the underlying values
of such a futuristic wild west. The only law in this land of danger
and opportunity is that of the gun. Individualism and cut-throat
competition are the governing principles as each person is set on a
path towards personal enrichment and glory.</p>

<p>There is no such thing as legitimacy in this world. Courts of law,
correctness of conduct, and tolerance of diverse opinions are the kind
of conventions that have no place in the hypercapitalist normality of
the <em>Borderlands</em>. The supreme powers that mobilise resources are
private corporations which engage in business deals using either
financial or martial means. Kind of how Western Europeans conducted
trade in East Asia during the Colonial Age, as both businesspeople and
pirates.</p>

<p>In this regard, <em>Borderlands</em> provides commentary on some of the
excesses germane to our world. History is, in large part, a record of
humanity’s inexhaustible capacity for cruelty. Many insatiable
butchers of men are remembered with the epithet “the Great” or
variants thereof. The most greedy CEOs are revered as prophets of the
one true money-god for their remarkable consistency in sacrificing
everything to the altars of profit. The villains in <em>Borderlands</em> are
social media personalities with a massive cult following who end up
being as shallow as our world’s celebrities.</p>

<p>If anything, the fantasy horrors of the game pale in comparison to the
brutality that we can now bear witness to in 4K definition. And that
we do with indifference, using it as yet more fodder for our
doomscrolling mindlessness. Our politics and social norms are
increasingly influenced by pernicious memes. We are made to follow
greater-than-life characters qua caricatures who speak nonsense and
are dead serious in the same sentence.</p>

<p>It is all jokes and gimmicks until you are sent to the front lines to
die for the interests of some lobbyist nerds. They are cowards. They
will never lead by example. Instead, they will make you, the desperate
yet capable fellow, give up your life for their unholy cause. And in
times of peace they will ruthlessly harvest your organs for their evil
rituals. At least in the <em>Borderlands</em> you have the option to
digistruct yourself for another round. Whereas here you get the middle
finger and are even happy to have received some attention.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Florence (plus the First Six Months of Love)</title>
      <description>Barely a 'game', but a fine story regardless.</description>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-05-27-florence-first-six-months-love/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-05-27-florence-first-six-months-love/</guid>
      <content:encoded><![CDATA[<p>I recently added a gaming section to my website. This is yet another
vehicle for my philosophy: to express thoughts in a relatable way;
thoughts that I could have formulated in abstract terms.</p>

<p>I got <em>Florence</em> (<strong>spoilers below</strong>) because it was peddled as a
puzzle game. Given my positive experience with <em>Gorogoa</em>, I thought to
myself “my body is ready!” and looked no further: <a href="https://protesilaos.com/games/2026-05-26-gorogoa/">https://protesilaos.com/games/2026-05-26-gorogoa/</a>.</p>

<p>Alas, <em>Florence</em> is barely a game. The player’s agency is reduced to
super simple interactions for 30 minutes. If I am to judge <em>Florence</em>
as a game, then I am not giving it a passing grade.</p>

<p>Still, <em>Florence</em> has the redeeming quality of being an interesting
interactive novel. The elements of interactivity make for an effective
story-telling medium. Depending on the audience, this is more reliable
than presenting people with a wall of text that they will get bored of
within 3 seconds.</p>

<p>The story is about a girl named “Florence”. She leads the generic
modern city life. Her world extends from her home to the office, while
her social affairs are largely confined to a binary choice of “repost”
or “love” buttons on a social media app.</p>

<p>Like her fellow city dwellers, she commutes while being absorbed in
her own world, enabled by digital media. Instead of paying attention
to her surroundings, she blasts music in her ears and stares at her
screen all the time.</p>

<p>In other words, Florence embodies and symbolises the robotisation of
the human being. This is the person that had anticipated and embraced
its own obsolescence by machines long before the advent of AI. The
introduction of artificial intelligence has, in this regard, been a
formality, the culmination of a process that stretches back several
decades.</p>

<p>AI can be a celebrity and influencer because those people are reducing
themselves to caricatures: fake looks, fake clips, fake personalities.
AI can be an office clerk as those are tasked with a robotised job
anyway. AI is your new emotional support and romantic other because
the solitude of digital life at-large took intimacy away from you,
while porn and its Hollywood counterparts gave it the fatal hit. And
so on.</p>

<p>There is a life outside that world; a life of slow pace, of
simplicity, of austerity, and appreciation of the little things. Talk
to a modern girl like Florence, for example, and she will tell you
about her notion of freedom, which revolves around the pursuit of a
career. Social standing is the token that matters. If this girl has
more of an intellectual side, she will expound on the evils of
traditional societies, and will go to great lengths to explain how
terrible it is for women to be seen as “baby machines”. Instead, she
will continue, freedom is realised through business opportunity, not
understanding that she is daydreaming of becoming a “paper machine”
that the corporate higher ups will blithely replace with an actual
bot.</p>

<p>As the story progresses, Florence has the good fortune of running out
of battery on her phone. The digital world that is depriving her of
situational awareness no longer has a hold on her psyche. She is
finally free to notice finer points in her milieu, even though she is
not well developed on that front. She meets a guy named “Krish” that
eventually becomes her boyfriend.</p>

<p>Through this love affair, Florence discovers a small part of the human
element. She encourages Krish to cultivate his musical talents. In
turn, he inspires her to express her own artistic inclinations and
connect with what she used to suppress for a lifetime, pressured by
her “tiger mom” to focus on the bullshit goal that is academic
excellence at all costs.</p>

<p>In this regard, <em>Florence</em> gives us a hint of what it means to not be
absorbed in your own world and to not settle for mindless routines. Do
what you must to survive, but otherwise resist the degenerative forces
of inertia as you become your own person and a champion of fortitude.</p>

<p>Florence and Krish fail to incorporate that lesson in every aspect of
their life. They make the common mistake of thinking that their future
will be all about sunshine and rainbows by switching to an auto-pilot
mode. They thus become complacent and eventually revert to a life of
mindlessness, which brings about the demise of their love.</p>

<p>Nature does not tolerate stasis. Organisms that become too comfortable
experience decline which brings about their end. They are absorbed by
other organisms, becoming an environment to them, subject to their
force, or altogether undone. Love is no different. It must be
maintained with care, with emphasis on the finer points and everyday
stuff, the way one tends to their garden with undivided attention.</p>

<p>Life is a struggle regardless. Yes, it would be nice in some way if we
could just sit back and rest. But no matter how intensely we prey to a
benevolent god, the forces we are subject to will remind us how things
actually work. To this end, I bring to memory a wonderful song by
Michelle Gurevich, titled <em>First Six Months of Love</em>:
<a href="https://www.youtube.com/watch?v=NqGQIO2m3YQ">https://www.youtube.com/watch?v=NqGQIO2m3YQ</a>.</p>

<p>Michelle is a cynic at heart. She speaks the truth without euphemisms
and the attendant penchant for beautification. Our world thinks of
cynicism in a negative way because fundamentally it prefers to delude
itself with all sorts of fancies than to deal with the difficulties
pertinent to the here-and-now of our condition.</p>

<p>In the song, Michelle states thus:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Before begin the dissections
Before the therapy sessions
We danced the night we met
Now we need dancing lessons

Remember how it all began
We must not let habit set in
Come up the stairs, let's recommence
The first six months over again
</code></pre></div></div>

<p>Florence and Krish were not aware of this reality or anyhow did not
live up to its rigours.</p>

<p><em>Florence</em> ends with the girl switching away from her office job as
she makes a living off of her art. One can only hope that in the
process of disentangling herself from the values of the society she
once took for granted would give her the impetus to think that there
is more to be done beyond her own personhood.</p>

<p>There is nothing inherently wrong with digital media and the tools
that technology makes possible, including video games and this very
website of mine. The key is to find moderation, which typically means
that you spend more time outside your head, literally and figuratively
touching grass.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: experiment with light and shadow</title>
      <description>Looking at the camera with part of my face exposed to direct sunlight.</description>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-05-27-experiment-light-shadow/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-05-27-experiment-light-shadow/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live with Sacha Chua about ‘May I recommend’ on Thursday 28 May 17:30 Europe/Athens</title>
      <description>We will talk about the Emacs blog carnival topic for May, which is 'May I recommend'.</description>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-27-emacs-live-sacha-chua-may-i-recommend/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-27-emacs-live-sacha-chua-may-i-recommend/</guid>
      <content:encoded><![CDATA[<p>Tomorrow, the 28th of May 2026 at 17:30 Europe/Athens time, I will
join Sacha Chua’s live stream.</p>

<p>We will talk about the Emacs blog carnival topic for this month, which
is “May I recommend”. The video will be recorded for future reference.</p>

<p>I already have some ideas and am looking forward to our chat!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: Gorogoa</title>
      <description>A brilliant puzzle game with valuable lessons for life.</description>
      <pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-05-26-gorogoa/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-05-26-gorogoa/</guid>
      <content:encoded><![CDATA[<p><em>Gorogoa</em> is a puzzle game where the player must arrange tiles on a
grid to progress the story (<strong>spoilers below!</strong>, plus philosophy). The
game’s mechanics are simple: click to zoom in or out of interactive
elements in a picture, and drag a tile along the grid to reposition
it.</p>

<p>The plot involves a lad who spots an otherworldly creature as it moves
through the city. This person is inspired to research the origins of
what appears to be a dragon and to understand more about it. Such is
an endeavour that turns into a lifelong pursuit, maybe even an
obsession.</p>

<p>From the player’s perspective, the story takes shape through
continuous exposure to phenomena, in the form of new pieces to the
puzzle. We are developing a narrative as we go, interpreting all of
the available information with the tools at our disposal.</p>

<p>This, alone, is a metaphor for how our life works and how we derive
meaning from whatever is peculiar to our condition. Nobody starts out
knowing why they are here and what all this is. There are no clear
answers, no manual with precise instructions, and no proof to justify
our most deep-seated hopes. We do that which our very being renders
inescapable.</p>

<p>The story of <em>Gorogoa</em> unfolds through many levels of depth and
different perspectives. You click on some detail in a drawing to
discover another drawing unto itself. There are worlds nested within
worlds as you move in and out of them. This is an artistic
representation of the cosmos, only that is of infinite zoom levels.</p>

<p>Take a dog, for example. To speak of “a dog” is in some way precise
and in another completely arbitrary. There is a form that we discern
in the cosmic continuum of life as something that is distinct from the
totality, which we name “a dog”. Though this is the case with a
certain scope of application, analogous to the effective zoom we have
in the game. At another level of abstraction there is no dog to be
discerned, for all we are dealing with are particles in a field or
galaxies as the tiny constituents of a greater organism. At each level
there are systems of systems.</p>

<p>Against this backdrop, to think of something as “fundamental” or “more
true” is to assume that there can be a given presence without the
preconditions for presence. It is, in other words, to fall into a trap
of statements, to take names literally, and thus to limit your
horizons. Metaphor, analogy, and simplification are all we can ever
employ to describe in finite terms that which is inexhaustible.</p>

<p>“That which is inexhaustible” is a figure of speech. It shows how we
cannot afford to provide a definition that covers everything, as such
a definition would be identical to the cosmos. Even the definition of
a dog is simplistic!</p>

<p>This is how many an intellectual suffers from overthinking and the
attendant uneasiness: they try to place boundaries on boundlessness.
Much like our hero in the story, it will take them a lifetime to
realise that however effective their digging is it will never probe
deep enough. Whatever they discover will not be the terminus, but
another starting point, which itself is arbitrary.</p>

<p>Coming back to the game, I admire the art direction of <em>Gorogoa</em>. Its
story-telling is subtle and effective. The gameplay is intuitive and
free from distractions. A fine piece all around!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Games: What Remains of Edith Finch</title>
      <description>An interactive narrative about the misfortunes of the Finch family, plus some philosophical commentary of mine.</description>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/games/2026-05-25-what-remains-of-edith-finch/</link>
      <guid isPermaLink="true">https://protesilaos.com/games/2026-05-25-what-remains-of-edith-finch/</guid>
      <content:encoded><![CDATA[<p>I like to go into a game with as little knowledge of it as possible.
It was enough for me to learn the kind of game this is: <em>What Remains
of Edith Finch</em> is an interactive story-telling experience. It has
simple controls and relies on narrative. This is all you need to get
started. <strong>The rest of this article contains some spoilers</strong>, woven
together with my philosophy.</p>

<p>You are in control of the titular Edith, a teenage girl who has
inherited her family house. Edith returns home after a period of
absence. The place is deserted and she admits to have been afraid of
it. Her goal is to uncover the mysteries of the house; mysteries she
was made aware of as a child.</p>

<p>The history of the house is that of its people. Every one died under
circumstances that suggest the presence of a curse. From the early
stages of the game we are led to believe that something supernatural
is at play.</p>

<p>Edith maintains a diary, which we are reading from as the game
progresses. In its pages are records of the individuals who lived in
this house, going all the way back to the progenitors of the Finch
family.</p>

<p>The Finches moved from Norway to America in hope of finding a better
life. They were ambitious and capable folk. However, the world is
neither simple nor accommodative. One does not get to experience
comfort without discomfort. In fortune there is latent misfortune, the
most gruesome tragedy contains elements that are benign, while even a
peaceful presence has the attendant forces of its undoing.</p>

<p>A stream of water carries with it seeds that turn into vegetation
along its edges, whose eventual overgrowth has the effect of diverting
the stream further away from them, which in turn leads to the undoing
of the vegetation, which re-enables waters to flow from its position,
and so on. The conditions that give life a certain form necessarily
set in motion the makings of the form’s undoing in an incessant
process of transfiguration.</p>

<p>Against this backdrop, the story of the Finches is in its most
abstract the history of humankind through its struggles. Another is
born, another is gone.</p>

<p>In more concrete terms, the Finch family is understood through a
series of personal misfortunes and untimely deaths. The forefather of
the family dies on the journey to America, forcing the family to build
a cemetery before even making their house. Little kids and adults lose
their life in strange and horrible ways.</p>

<p>One may discern the common in the multitude of those sad endings as
the machinations of some monster. There are good reasons to believe in
such a theory. Though I personally adopt a literal view, which
nevertheless recognises the potential of self-fulfilling prophecies.</p>

<p><em>What Remains of Edith Finch</em> is an artful exploration of isolation
and mental illness. Starting with the house itself, it is designed in
a convoluted way, which mirrors a conscience of the same kind. Greeks
have a saying that translates as “house that is not seen by the Sun is
seen by the doctor”, which is exactly what we expect to happen to the
Finch establishment with all its claustrophobia-inducing spaces (and
this is, by the way, why I designed the house I built to optimise for
natural exposure to light, with widely open, minimalist interiors).</p>

<p>There are no indelible lines between subjectivity, imagination, and
madness. They exist on a continuum of connection to disconnect from
the here-and-now of material conditions. Molly dies because in her
pre-teen mind inedible items can still sate her hunger, inducing a
hallucinatory trip before the eventual death from poisoning. Why would
parents even punish a child to not have dinner and why would they, in
so doing, engender in it a want to escape from its immediate reality?</p>

<p>Abandonment, neglect, and an overall lack of situational awareness is
ultimately what is causing all those deaths. Sam dies because he wants
to take a picture while standing at the precipice, thus
underestimating the risks involved. Gregory drowns because his
reckless mother left him in the bathtub while she was talking on the
phone. Lewis meets his end because (i) he is pushed to increasing
isolation and must find solace in an inward turn, (ii) succumbs to
substance abuse which is the material extension of inner escapism, and
(iii) inevitably lives in a world of his own making since his
surroundings marginalised him beyond return.</p>

<p>I can apply this pattern to the other stories. Each person is
fundamentally left alone, without support, to face a world that is too
much for them. Sometimes the game places an emphasis on the emotional
manifestation of abandonment. At others it unfolds through a certain
situation, where the person is left to cope with an extremely
dangerous, and ultimately lethal, phenomenon, such as Gus who is
flying his kite amid the storm while others are having a party.</p>

<p>We can think of the family curse not as some monster that is pulling
the strings in the background but as the set of natural attributes the
Finches are endowed with, plus their cultural norms. It is, in this
regard, their fate to experience what transpires in the story exactly
because each is allowed to rely on their own devices when those are
woefully inadequate for their survival. One may then discern the
adverse effects of gritty individualism on those who are not made for
it.</p>

<p>Or, to put it differently, this is an appreciation of what happens
when freedom of initiative is bestowed upon someone who has yet to
develop the requisite accountability structures: they are not prepared
to live with the consequences of their actions. For example, you take
care of a child because it is not ready to live on its own terms. Even
adults may be children in this way, which is why the social milieu,
with its robust hierarchies and tutelary figures, is essential,
litanies to the contrary notwithstanding.</p>

<p>Yes, there are some folks who are the lone wolf type: capable,
ever-alert and dangerous, and content despite their solitude. Yet they
are the exceptions to the norm. One cannot become that which their
nature does not render possible nor may they escape from what their
condition has made unavoidable. Even wolves, apex predators in their
own right, need a pack to thrive. They do not get to choose.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>I now also write about video games</title>
      <description>My website has a new section dedicated to video games.</description>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/news/2026-05-25-section-video-games/</link>
      <guid isPermaLink="true">https://protesilaos.com/news/2026-05-25-section-video-games/</guid>
      <content:encoded><![CDATA[<p>I have a new section on my website dedicated to video games:
<a href="https://protesilaos.com/games">https://protesilaos.com/games</a>. My website has many such blogs,
covering Emacs, politics, life issues, poetry, mechanical keyboards,
and more.</p>

<p>This new section contains my thoughts on video games I have played.
You can expect more of a philosophical take, as usual, that ultimately
is not specific to the game I am commenting on. The first such article
is about <em>What Remains of Edith Finch</em>:
<a href="https://protesilaos.com/games/2026-05-25-what-remains-of-edith-finch/">https://protesilaos.com/games/2026-05-25-what-remains-of-edith-finch/</a>.</p>

<p>Since I am writing here, it is worth making this salient: the <em>point</em>
of each publication of mine is to elaborate on a given topic, while
the <em>metapoint</em> of all my publications is to chronicle my development
as a person.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Life issues and practical philosophy with Amin Bandali</title>
      <description>A 2-hour talk about all sorts of issues that are relevant in our everyday life.</description>
      <pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-05-23-life-issues-and-philosophy-amin-bandali/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-05-23-life-issues-and-philosophy-amin-bandali/</guid>
      <content:encoded><![CDATA[<p>The other day I met with Amin Bandali to talk about life issues and
practical philosophy. Amin asked me if he could record the meeting and
write about it, which I agreed to. You can find the recording on
Amin’s website, together with an overview of what we covered:
<a href="https://kelar.org/~bandali/life/thinking-with-prot.html">https://kelar.org/~bandali/life/thinking-with-prot.html</a>. The video
is 2 hours long.</p>

<p>Going off of my recollection of the talk, we covered at length the
broad theme of rhythm using everyday examples. There are ups and downs
to what we do, moments of intensity and of rest. We must be aware of
them so that we do not try to push ourselves to unsustainable
extremes. We do this, for example, when we do not check our feelings
from time to time and instead keep overworking ourselves.</p>

<p>It is important at all times to be mindful of the distinction between
descriptive and prescriptive statements. It is easy to fall in the
trap of feeling guilty for our state of affairs, even when that is not
clearly justified. For example, “I procrastinate” usually comes with a
tscit judgement call along the lines of “and this is bad”. The
prescription, then, is “do not procrastinate”. Whereas I point out
that it helps to be descriptive and to suspend prior judgement. Using
procrastination as an example, we may be doing it as an effective way
to cope with an otherwise difficult situation.</p>

<p>Another topic was about loss or death in the literal as well as the
figurative sense. We discussed the relevant topics in light of how
things flow and how something changes into something else. In the case
of physical loss, such as a loved one that is no longer with us, there
is a sense in which they stay around as a guiding star or guardian
angel. This happens because we remember their deeds and underlying
values, the philosophy embedded in their actions, which we try to
replicate. There is another aspect to loss and death which is about
how we change as we go and how we adapt as we go.</p>

<p>Part of what I do is serious at some level. Though I comment on how I
approach it with a sense of lightheartedness and humour. I am
easygoing. My style at all times is to do something, not to merely
talk about it, so I exhibit as much through timely jokes and moments
of laughter. Understanding that each person is not one-sided is
essential. I can be profound, but I have the deep-seated confidence in
my abilities to also joke around because I know that my remarks will
not lose their value in the process.</p>

<p>In our social affairs we have to conform with the expectations of
other people. It is thus critical to do what we must in order to
survive. Though we have to remember that this is a role-playing game,
so that we do not overdo it. Setting boundaries is key in this regard.
I suggest that we treat certain things as sacrosanct, so that we give
them the value they require. Doing so allows us to maintain a
sustainable rhythm.</p>

<p>Towards the end of the video, Amin asks me about my approach to
philosophy, which is about doing instead of merely reading or
thinking. I describe it as “situational awareness”. The world is
consistent, so if we have a deep understanding of a part of it, we can
apply those findings to other areas. This is something I do throughout
our talk by drawing connections between the various topics.</p>

<p>Thanks to Amin for this discussion! I had a good time.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: something a little bit more artistic</title>
      <description>Three pictures I took using my phone's camera timer functionality.</description>
      <pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-05-22-something-little-bit--more-artistic/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-05-22-something-little-bit--more-artistic/</guid>
      <content:encoded><![CDATA[<p>Three pictures this time. Feels strange to pose like this, but it is nice to not be serious!</p>

<p><a href="https://protesilaos.com/assets/images/self/2026-05-22-1.webp"><img alt="Protesilaos under a blackthorn tree, pose 1" src="https://protesilaos.com/assets/images/self/2026-05-22-1.webp" /></a></p>

<p><a href="https://protesilaos.com/assets/images/self/2026-05-22-2.webp"><img alt="Protesilaos under a blackthorn tree, pose 2" src="https://protesilaos.com/assets/images/self/2026-05-22-2.webp" /></a></p>

<p><a href="https://protesilaos.com/assets/images/self/2026-05-22-3.webp"><img alt="Protesilaos under a blackthorn tree, pose 3" src="https://protesilaos.com/assets/images/self/2026-05-22-3.webp" /></a></p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: ef-arcadia and ef-atlantis are part of the ef-themes</title>
      <description>I added a new light and dark theme to my 'ef-themes' package for Emacs.</description>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-21-emacs-ef-arcadia-ef-atlantis-themes/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-21-emacs-ef-arcadia-ef-atlantis-themes/</guid>
      <content:encoded><![CDATA[<p>I have added two new themes to the current development target of my
<code class="language-plaintext highlighter-rouge">ef-themes</code> package. Screenshots are available below. Remember that
the themes are highly customisable: you can change practically
everything about them.</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">ef-arcadia</code> is a light theme with a verdant, humid aesthetic.</li>
  <li><code class="language-plaintext highlighter-rouge">ef-atlantis</code> is a dark theme with an aquatic feel.</li>
</ul>

<p>Both deliver the familiar colourfulness and good legibility of the
<code class="language-plaintext highlighter-rouge">ef-themes</code>.</p>

<p>Always <strong>click to enlarge the image</strong> for best results.</p>

<h3>ef-arcadia</h3>

<p><a href="https://protesilaos.com/assets/images/ef/ef-arcadia.png"><img alt="ef-arcadia theme sample" src="https://protesilaos.com/assets/images/ef/ef-arcadia.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-arcadia-git.png"><img alt="ef-arcadia theme git sample" src="https://protesilaos.com/assets/images/ef/ef-arcadia-git.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-arcadia-mail.png"><img alt="ef-arcadia theme mail sample" src="https://protesilaos.com/assets/images/ef/ef-arcadia-mail.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-arcadia-org.png"><img alt="ef-arcadia theme org sample" src="https://protesilaos.com/assets/images/ef/ef-arcadia-org.png" /></a></p>

<h3>ef-atlantis</h3>

<p><a href="https://protesilaos.com/assets/images/ef/ef-atlantis.png"><img alt="ef-atlantis theme sample" src="https://protesilaos.com/assets/images/ef/ef-atlantis.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-atlantis-git.png"><img alt="ef-atlantis theme git sample" src="https://protesilaos.com/assets/images/ef/ef-atlantis-git.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-atlantis-mail.png"><img alt="ef-atlantis theme mail sample" src="https://protesilaos.com/assets/images/ef/ef-atlantis-mail.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/ef/ef-atlantis-org.png"><img alt="ef-atlantis theme org sample" src="https://protesilaos.com/assets/images/ef/ef-atlantis-org.png" /></a></p>

<h2>Coming in version 2.2.0 (next stable release)</h2>

<p>The character of each theme is well defined. I may still make some
refinements.</p>

<p>Remember that since version <code class="language-plaintext highlighter-rouge">2.0.0</code>, the <code class="language-plaintext highlighter-rouge">ef-themes</code> are built on top
of my <code class="language-plaintext highlighter-rouge">modus-themes</code>. This means that they are highly customisable,
support a wide range of packages and face groups, and are extensively
tested down to the finest details.</p>

<p>Enjoy!</p>

<hr />

<p>The <code class="language-plaintext highlighter-rouge">ef-themes</code> are a collection of light and dark themes for GNU
Emacs that provide colourful (“pretty”) yet legible options for users
who want something with a bit more flair than the <code class="language-plaintext highlighter-rouge">modus-themes</code> (also
designed by me).</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">ef-themes</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/ef-themes">https://protesilaos.com/emacs/ef-themes</a></li>
  <li>Change log: <a href="https://protesilaos.com/emacs/ef-themes-changelog">https://protesilaos.com/emacs/ef-themes-changelog</a></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/ef-themes-pictures">https://protesilaos.com/emacs/ef-themes-pictures</a></li>
  <li>Git repositories:
    <ul>
      <li>GitHub: <a href="https://github.com/protesilaos/ef-themes">https://github.com/protesilaos/ef-themes</a></li>
      <li>GitLab: <a href="https://gitlab.com/protesilaos/ef-themes">https://gitlab.com/protesilaos/ef-themes</a></li>
    </ul>
  </li>
  <li>Backronym: Eclectic Fashion in Themes Hides Exaggerated Markings,
Embellishments, and Sparkles.</li>
</ul>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: Denote version 4.2.0</title>
      <description>Information about the latest version of my Denote package for GNU Emacs.</description>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-20-emacs-denote-4-2-0/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-20-emacs-denote-4-2-0/</guid>
      <content:encoded><![CDATA[<p>Denote aims to be a simple-to-use, focused-in-scope, and effective
note-taking and file-naming tool for Emacs.</p>

<p>Denote is based on the idea that files should follow a predictable and
descriptive file-naming scheme.  The file name must offer a clear
indication of what the contents are about, without reference to any
other metadata.  Denote basically streamlines the creation of such
files or file names while providing facilities to link between them
(where those files are editable).</p>

<p>Denote’s file-naming scheme is not limited to “notes”.  It can be used
for all types of file, including those that are not editable in Emacs,
such as videos.  Naming files in a constistent way makes their
filtering and retrieval considerably easier.  Denote provides relevant
facilities to rename files, regardless of file type.</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote">https://protesilaos.com/emacs/denote</a></li>
  <li>Change log: <a href="https://protesilaos.com/emacs/denote-changelog">https://protesilaos.com/emacs/denote-changelog</a></li>
  <li>Git repositories:
    <ul>
      <li>GitHub: <a href="https://github.com/protesilaos/denote">https://github.com/protesilaos/denote</a></li>
      <li>GitLab: <a href="https://gitlab.com/protesilaos/denote">https://gitlab.com/protesilaos/denote</a></li>
    </ul>
  </li>
  <li>Video demo: <a href="https://protesilaos.com/codelog/2022-06-18-denote-demo/">https://protesilaos.com/codelog/2022-06-18-denote-demo/</a></li>
  <li>Backronyms: Denote Everything Neatly; Omit The Excesses.  Don’t Ever
Note Only The Epiphenomenal.</li>
</ul>

<p>Below are the release notes.</p>

<hr />

<h2>Version 4.2.0 on 2026-05-20</h2>

<p>This version brings several improvements to the core <code class="language-plaintext highlighter-rouge">denote</code> package
as well as all the Denote extensions I maintain. The core package is
stable, its feature set is rich, and the wider ecosystem of extensions
is growing.</p>

<p>Most of the changes documented herein are of interest to experienced
users who may be looking for ways to refine their workflow. I
recommend that new users start with the basics, as I explained them in
the original video demonstration of Denote or as they are documented
in the manual’s section for newcomers:</p>

<ul>
  <li><strong>Webpage:</strong> <a href="https://protesilaos.com/emacs/denote#h:c54bedb4-5377-4dbd-853c-5870ace6eb33">https://protesilaos.com/emacs/denote#h:c54bedb4-5377-4dbd-853c-5870ace6eb33</a>.</li>
  <li><strong>Info manual:</strong> With the latest <code class="language-plaintext highlighter-rouge">denote</code> package installed, evaluate <code class="language-plaintext highlighter-rouge">(info "(denote) Getting started with Denote")</code>.</li>
</ul>

<p>Remember that the release notes are true only at the time of
publication. The single source of truth is the official manual.</p>

<h3>Core Denote</h3>

<h4>Overview of the new features</h4>

<ul>
  <li>
    <p>The command <code class="language-plaintext highlighter-rouge">denote-dired-focus</code> will filter the results of an
existing <code class="language-plaintext highlighter-rouge">denote-dired</code> buffer. Use this to narrow down the results.</p>
  </li>
  <li>
    <p>In Org files, the <code class="language-plaintext highlighter-rouge">denote:</code> link type can now be previewed using the
built-in <code class="language-plaintext highlighter-rouge">org-link-preview</code> command, starting with Org version
<code class="language-plaintext highlighter-rouge">9.8.0</code>.</p>
  </li>
  <li>
    <p>The command <code class="language-plaintext highlighter-rouge">denote-link-or-create-with-command</code> extends the
existing convenience functions of the “do or create note” kind.</p>
  </li>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">denote-file-prompt</code> uses completion metadata to sort by most
recently accessed, group by directory or file extension, and cover
packages that display cosmetic icons alongside completion
candidates.</p>
  </li>
  <li>
    <p>Denote now enforces a controlled vocabulary for keywords when
<code class="language-plaintext highlighter-rouge">denote-infer-keywords</code> is set to <code class="language-plaintext highlighter-rouge">nil</code>, such that only the
<code class="language-plaintext highlighter-rouge">denote-known-keywords</code> are provided as an option at the relevant
prompts.</p>
  </li>
  <li>
    <p>The mechanism for integrating Denote with <code class="language-plaintext highlighter-rouge">org-capture</code> now supports
prompting for an signature via <code class="language-plaintext highlighter-rouge">denote-org-capture-with-prompts</code>
(the signature is an optional, free-form component of the Denote
file-naming scheme).</p>
  </li>
  <li>
    <p>Several packages that extend Denote are documented in the manual. If
you have a package for Denote, let me know and I will write a
section about it.</p>
  </li>
</ul>

<h4>Focus a <code class="language-plaintext highlighter-rouge">denote-dired</code> buffer with <code class="language-plaintext highlighter-rouge">denote-dired-focus</code></h4>

<p>The command <code class="language-plaintext highlighter-rouge">denote-dired</code> produces a Dired listing of file names that
match the given regular expressions. Users can benefit from the Denote
file-naming scheme to, for example, include all files that have the
keyword <code class="language-plaintext highlighter-rouge">_emacs</code>. In the resulting Dired buffer, the new command
<code class="language-plaintext highlighter-rouge">denote-dired-focus</code> can then be invoked to further narrow down the
results, such as to only show files that have <code class="language-plaintext highlighter-rouge">2026</code> in their file
(with default settings, the date is part of the Denote identifier).</p>

<p>I implemented this feature in response to issue 693 by 82Kang:
<a href="https://github.com/protesilaos/denote/issues/693">https://github.com/protesilaos/denote/issues/693</a>.</p>

<h4>Improvements to the file prompt</h4>

<p>Various Denote commands prompt for a file name: for instance,
<code class="language-plaintext highlighter-rouge">denote-link</code> asks which file to link to. This file prompt is now
augmented with completion metadata that transform how files look and
how the information is organised.</p>

<p>Before, the prompt presented full file names like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>20220610T043241--initial-thoughts-on-the-zettelkasten-method__notetaking.org
20220610T062201--define-custom-org-hyperlink-type__denote_emacs_package.md
20220610T162327--on-hierarchy-and-taxis__notetaking_philosophy.txt
</code></pre></div></div>

<p>Those same file names are now transformed to look like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2022-06-10  initial-thoughts-on-the-zettelkasten-method  notetaking
2022-06-10  define-custom-org-hyperlink-type  denote_emacs_package
2022-06-10  on-hierarchy-and-taxis  notetaking_philosophy
</code></pre></div></div>

<p>The files will be grouped by file extension or directory (if they are
in a subdirectory of the <code class="language-plaintext highlighter-rouge">denote-directory</code>). Furthermore, they will
be sorted by most recently accessed.</p>

<p>The underlying file names are still available except that their
presentation is modified. This means that input at the minibuffer
prompt will still match everything they contain.</p>

<p>This completion metadata extends to the packages <code class="language-plaintext highlighter-rouge">all-the-icons</code> and
<code class="language-plaintext highlighter-rouge">nerd-icons</code>, which are now instructed to add the correct file icons
to the completion candidates: an Org file will have the unicorn icon
beside it, for example.</p>

<p>Users who do not like the new style can revert to the plain
presentation by setting <code class="language-plaintext highlighter-rouge">denote-file-prompt-extra-metadata</code> to <code class="language-plaintext highlighter-rouge">nil</code>.</p>

<p>Advanced users who wish to set up the <code class="language-plaintext highlighter-rouge">completion-category-overrides</code>
may target the <code class="language-plaintext highlighter-rouge">denote-file</code> completion category or, anyhow, modify
the <code class="language-plaintext highlighter-rouge">denote-file-prompt-extra-metadata</code>.</p>

<h4>Link to a file or create a new note using a specific command</h4>

<p>Denote provides many “convenience wrapper” commands that do something
quickly which can also be achieved with minimal configuration. For
example, the <code class="language-plaintext highlighter-rouge">denote</code> command may be modified to also prompt for a
file type and so the <code class="language-plaintext highlighter-rouge">denote-type</code> command is like <code class="language-plaintext highlighter-rouge">denote</code> with the
addition of the file type prompt. Users can look at the source code of
<code class="language-plaintext highlighter-rouge">denote-type</code> to write their own small variations (the manual provides
several examples as well).</p>

<p>The <code class="language-plaintext highlighter-rouge">denote-open-or-create-with-command</code> may then use those to
implement its specified behaviour of “open an existing file or create
it using a convenience wrapper command”.</p>

<p>Same principle for the new <code class="language-plaintext highlighter-rouge">denote-link-or-create-with-command</code>: it
makes possible the workflow of “link to an existing file or create a
new note with the given command”.</p>

<p>Convenience wrappers are listed in the value of the user option
<code class="language-plaintext highlighter-rouge">denote-commands-for-new-notes</code>.</p>

<p>Thanks to Matthew Batson for building on top of existing functionality
to contribute <code class="language-plaintext highlighter-rouge">denote-link-or-create-with-command</code> in pull request
674: <a href="https://github.com/protesilaos/denote/pull/674">https://github.com/protesilaos/denote/pull/674</a>. Matthew has
assigned copyright to the Free Software Foundation.</p>

<h4>Preview <code class="language-plaintext highlighter-rouge">denote:</code> links in Org files</h4>

<p>Starting with Org version <code class="language-plaintext highlighter-rouge">9.8.0</code> custom link types such as <code class="language-plaintext highlighter-rouge">denote:</code>
can implement their own preview mechanism. In practice, this means
that <code class="language-plaintext highlighter-rouge">denote:</code> links pointing to image files will now work as expected
with <code class="language-plaintext highlighter-rouge">org-link-preview</code> (remember that the Denote file-naming scheme
can be applied to any file and is in no way specific to
note-taking—I use it for documents and videos, for example).</p>

<p>Thanks to Samuel W. Flint for the original contribution in pull request 683:
<a href="https://github.com/protesilaos/denote/pull/683">https://github.com/protesilaos/denote/pull/683</a>, with further changes
by me. The original contribution is small, meaning that Samuel does
not need to assign copyright to the Free Software Foundation.</p>

<h4>Signature support in Org capture</h4>

<p>The <code class="language-plaintext highlighter-rouge">denote-org-capture-with-prompts</code> function now supports the
signature file name component as an additional parameter. This
function is meant to be used in tandem with the <code class="language-plaintext highlighter-rouge">org-capture</code>
mechanism, as shown in the manual.</p>

<p>Thanks to Tobias Lidman-Strauss for the contribution in merge request
2 on the GitLab mirror: <a href="https://gitlab.com/protesilaos/denote/-/merge_requests/2">https://gitlab.com/protesilaos/denote/-/merge_requests/2</a>.
The change is small, meaning that Tobias does not need to assign
copyright to the Free Software Foundation.</p>

<h4>The <code class="language-plaintext highlighter-rouge">denote-fontify-links-mode</code> is only relevant for <code class="language-plaintext highlighter-rouge">.txt</code> files</h4>

<p>The <code class="language-plaintext highlighter-rouge">denote:</code> links are automatically highlighted as links in Org and
Markdown bufers. Users who prefer to write notes in plain <code class="language-plaintext highlighter-rouge">.txt</code> files
must enable the <code class="language-plaintext highlighter-rouge">denote-fontify-links-mode</code> to get the same effect.</p>

<p>I have revised <code class="language-plaintext highlighter-rouge">denote-fontify-links-mode</code> to only work with <code class="language-plaintext highlighter-rouge">.txt</code> as
its other users were not necessary. In the process, I have deprecated
the <code class="language-plaintext highlighter-rouge">denote-fontify-links-mode-maybe</code> function: just use the <code class="language-plaintext highlighter-rouge">denote-fonftify-links-mode</code>.</p>

<p>The keys <code class="language-plaintext highlighter-rouge">RET</code> and <code class="language-plaintext highlighter-rouge">C-c C-o</code> open the link (same keys used by Org and
Markdown modes).</p>

<h4>Growing ecosystem of Denote packages</h4>

<p>In the Denote manual I mention packages that build on top of Denote.
There is one section for each package. The manual now includes the
following:</p>

<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-agenda</code> (by Samuel W. Flint):</strong> Use Denote notes as Org agenda files.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-journal-capture</code> (by Samuel W. Flint):</strong> Enhanced journaling workflows.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-lint</code> (Peter Smith):</strong> Checks for inconsistencies in Denote file names and front matter.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-project-notes</code> (by Samuel W. Flint):</strong> Integrate Denote with Emacs’ built-in project support.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-regexp</code> (by Samuel W. Flint):</strong> Search and link notes using regular expressions.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-review</code> (by Matto Fransen):</strong> A package for reviewing notes over time.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-sections</code> (by Samuel W. Flint):</strong> Manage sections within Denote notes.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">denote-wordcloud</code> (by Alexander Kuzmin):</strong> Generate word clouds from Denote notes.</li>
</ul>

<h4>Miscellaneous</h4>

<ul>
  <li>
    <p>The command <code class="language-plaintext highlighter-rouge">denote-dired</code> (alias <code class="language-plaintext highlighter-rouge">denote-sort-dired</code>) is refactored
to work as intended in all cases. Thanks to kilesduli for the
contribution in pull request 666: <a href="https://github.com/protesilaos/denote/pull/666">https://github.com/protesilaos/denote/pull/666</a>.
Further changes by me, including the option to maintain many
separate <code class="language-plaintext highlighter-rouge">denote-dired</code> buffers, which I did in response to issue
693 by 82Kang: <a href="https://github.com/protesilaos/denote/issues/693">https://github.com/protesilaos/denote/issues/693</a>.</p>
  </li>
  <li>
    <p>I have revised the <code class="language-plaintext highlighter-rouge">denote-grep</code> mechanism and all of its ancillary
functions and variables are revised in the interest of consistency
and maintainability. Thanks to gnuhack for contributing a macro that
was meant to streamline some commands. This was done in pull request
697: <a href="https://github.com/protesilaos/denote/pull/697">https://github.com/protesilaos/denote/pull/697</a>. I eventually
changed lots of things so that the macro was not relevant anymore,
though mine was a change with a wider scope.</p>
  </li>
  <li>
    <p>The Org link storage mechanism (<code class="language-plaintext highlighter-rouge">denote-link-ol-store</code>) now works
correctly within <code class="language-plaintext highlighter-rouge">org-capture</code> buffers, allowing for more flexible
linking workflows.</p>
  </li>
  <li>
    <p>Following non-Denote Markdown links no longer result in an error
under certain circumstances. Thanks to bplubell for the contribution
in pull request 685: <a href="https://github.com/protesilaos/denote/pull/685">https://github.com/protesilaos/denote/pull/685</a>.
The change is small, meaning that its author does not need to assign
copyright to the Free Software Foundation.</p>
  </li>
  <li>
    <p>Retrieving front matter is now more reliable, even when the buffer
is unsaved. Thanks to kilesduli for the contribution in pull request
672: <a href="https://github.com/protesilaos/denote/pull/672">https://github.com/protesilaos/denote/pull/672</a>. Also thanks
to Jean-Philippe Gagné Guay for reviewing the change and for
reporting a problem with an earlier version of the code in issue
670: <a href="https://github.com/protesilaos/denote/issues/670">https://github.com/protesilaos/denote/issues/670</a>. Further
changes by me.</p>
  </li>
  <li>
    <p>The various Denote rename commands that affect the front matter in
files no longer change existing spacing. I did this to address the
comment posted by Morten Kjeldgaard in issue 703: <a href="https://github.com/protesilaos/denote/issues/703">https://github.com/protesilaos/denote/issues/703</a>.</p>
  </li>
  <li>
    <p>Updated the documentation to explain how to automatically encrypt
new notes when using a custom file type.</p>
  </li>
  <li>
    <p>Refined the internal helper functions for directory management and
identifier validation.</p>
  </li>
  <li>
    <p>Thanks to nescias for fixing three typos in the manual. This was
sent to me as a patch, which I installed as commit <code class="language-plaintext highlighter-rouge">c772378</code>.</p>
  </li>
</ul>

<h4>Changes to the extensions of Denote I maintain</h4>

<p>This is about packages I maintain. Some of them were originally part
of the denote.git repository, but I moved them out into their own
packages to make everything easier to reason about.</p>

<h5><code class="language-plaintext highlighter-rouge">consult-denote</code> version 0.5.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">consult-denote</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/consult-denote">https://protesilaos.com/emacs/consult-denote</a></li>
  <li>Change log: <a href="https://protesilaos.com/emacs/consult-denote-changelog">https://protesilaos.com/emacs/consult-denote-changelog</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/consult-denote">https://github.com/protesilaos/consult-denote</a></li>
  <li>
    <p>Backronym: Consult-Orchestrated Navigation and Selection of
Unambiguous Targets…denote.</p>
  </li>
  <li>
    <p>References to the long-obsolete “denote-silo-extras-” prefix are
replaced by “denote-silo-”. Thanks to IT Ascalium for the
contribution in pull request 20: <a href="https://github.com/protesilaos/consult-denote/pull/20">https://github.com/protesilaos/consult-denote/pull/20</a>.
The change is small, so its author does not need to assign copyright
to the Free Software Foundation.</p>
  </li>
  <li>The <code class="language-plaintext highlighter-rouge">consult-denote-file-prompt</code> correctly handles relative file
paths when <code class="language-plaintext highlighter-rouge">denote-directory</code> is set to a list of directories. This
is what the underlying <code class="language-plaintext highlighter-rouge">denote-file-prompt</code> does (which I mentioned
above about its metadata). Thanks to Kai von Fintel for the
contribution in pull request 24: <a href="https://github.com/protesilaos/consult-denote/pull/24">https://github.com/protesilaos/consult-denote/pull/24</a>.
The change does not require copyright assignment.</li>
</ul>

<h5><code class="language-plaintext highlighter-rouge">denote-merge</code> version 0.1.0</h5>

<ul>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-merge">https://github.com/protesilaos/denote-merge</a></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-merge">https://protesilaos.com/emacs/denote-merge</a></li>
  <li>Backronym: Denote… Merging Eventually Reformats the Given Entries.</li>
</ul>

<p>This is an optional extension to the <code class="language-plaintext highlighter-rouge">denote</code> package. It provides
commands and relevant user options to streamline the work of merging
contents from one Denote file to another. This is for users who
periodically review their notes to add, remove, or otherwise
consolidate their accumulated knowledge.</p>

<h5><code class="language-plaintext highlighter-rouge">denote-journal</code> version 0.3.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-journal</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-journal">https://protesilaos.com/emacs/denote-journal</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-journal">https://github.com/protesilaos/denote-journal</a></li>
  <li>
    <p>Backronym: Denote… Journaling Obviously Utilises Reasonableness
Notwithstanding Affectionate Longing.</p>
  </li>
  <li>
    <p>The user option <code class="language-plaintext highlighter-rouge">denote-journal-keyword</code> now supports a <code class="language-plaintext highlighter-rouge">nil</code> value,
allowing users to create journal entries without a specific keyword.
Thanks to nescias for sending me the patch via email, which I
installed as commit <code class="language-plaintext highlighter-rouge">d4cc501</code> in denote-journal.git. The change does
not require copyright assignment.</p>
  </li>
  <li>Fixed an issue about how the function <code class="language-plaintext highlighter-rouge">denote-directory-files</code> was
used. Thanks to Donald Brady for reporting the bug in issue 656 on
the main Denote repository and to kamchy for confirming the problem:
<a href="https://github.com/protesilaos/denote/issues/656">https://github.com/protesilaos/denote/issues/656</a>. The approach was
utlimately revised in denote.git courtesy of a change by
Jean-Philippe Gagné Guay in pull request 661:
<a href="https://github.com/protesilaos/denote/pull/661">https://github.com/protesilaos/denote/pull/661</a>.</li>
</ul>

<h5><code class="language-plaintext highlighter-rouge">denote-markdown</code> version 0.3.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-markdown</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-markdown">https://protesilaos.com/emacs/denote-markdown</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-markdown">https://github.com/protesilaos/denote-markdown</a></li>
  <li>
    <p>Backronyms: Denote… Markdown’s Ambitious Reimplimentations
Knowingly Dilute Obvious Widespread Norms; Denote… Markup
Agnosticism Requires Knowhow to Do Only What’s Necessary.</p>
  </li>
  <li>The package defines a <code class="language-plaintext highlighter-rouge">markdown-obsidian</code> file type which can be
used by relevant note-creating commands, such as <code class="language-plaintext highlighter-rouge">denote</code> or the
convenience wrapper <code class="language-plaintext highlighter-rouge">denote-type</code>. This file type is updated to be
more robust, in accordance with some changes in core Denote (I am
not even documenting those, as they are not intended for users).</li>
</ul>

<h5><code class="language-plaintext highlighter-rouge">denote-org</code> version 0.3.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-org</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-org">https://protesilaos.com/emacs/denote-org</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-org">https://github.com/protesilaos/denote-org</a></li>
  <li>
    <p>Backronym: Denote… Ordinarily Restricts Gyrations.</p>
  </li>
  <li>
    <p>The command <code class="language-plaintext highlighter-rouge">denote-org-link-to-heading</code> now supports linking to the
current file when called with a prefix argument. This way, a file
can have links between its headings. Thanks to Tonus for pointing
out that it was impossible to create a link inside the current file.
This was done in issue 17: <a href="https://github.com/protesilaos/denote-org/issues/17">https://github.com/protesilaos/denote-org/issues/17</a>.</p>
  </li>
  <li>
    <p>A helper function for retrieving the backlinks of a heading is
updated to return full file paths. Thanks to Vedang Manerikar for
the contribution in pull request 20: <a href="https://github.com/protesilaos/denote-org/pull/20">https://github.com/protesilaos/denote-org/pull/20</a>.
Vedang has assigned copyright to the Free Software Foundation.</p>
  </li>
  <li>Another helper function is updated to conform with changes to core
Denote with regard to how the <code class="language-plaintext highlighter-rouge">denote-link-description-format</code> is
handled. Thanks to Jung Han for reporting the bug in issue 21:
<a href="https://github.com/protesilaos/denote-org/issues/21">https://github.com/protesilaos/denote-org/issues/21</a>.</li>
</ul>

<h5><code class="language-plaintext highlighter-rouge">denote-silo</code> version 0.3.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-silo</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-silo">https://protesilaos.com/emacs/denote-silo</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-silo">https://github.com/protesilaos/denote-silo</a></li>
  <li>Backronym: Denote… Silos Insulate Localised Objects.</li>
</ul>

<p>The minibuffer prompt for silo directories uses the corrent completion
category (consistent with what I mentioned above about completion
metadata). Thanks to Wilf-bog for reporting an error with the
completion prompt in issue 1: <a href="https://github.com/protesilaos/denote-silo/issues/1">https://github.com/protesilaos/denote-silo/issues/1</a>.</p>

<h5><code class="language-plaintext highlighter-rouge">denote-sequence</code> version 0.3.0</h5>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-sequence</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-sequence">https://protesilaos.com/emacs/denote-sequence</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-sequence">https://github.com/protesilaos/denote-sequence</a></li>
  <li>Backronym: Denote… Sequences Efficiently Queue Unsorted Entries
Notwithstanding Curation Efforts.</li>
</ul>

<p>This package deserved its own release notes, as I did a lot of work on
it. But as this file is already long, I will focus on the essentials:</p>

<ul>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code> used to support a <code class="language-plaintext highlighter-rouge">numeric</code> and
<code class="language-plaintext highlighter-rouge">alphanumeric</code> option. There now is a third one called
<code class="language-plaintext highlighter-rouge">alphanumeric-delimited</code>. It combines features from the other two
and may be better suited for especially long/intricate sequences.</p>
  </li>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">denote-sequence-reparent</code> command now works recursively to
produce the desired consequences to all descendants of a given
sequence note. Thanks to Peter Prevos for the contribution in pull
request 13, which further changes by me:
<a href="https://github.com/protesilaos/denote-sequence/pull/13">https://github.com/protesilaos/denote-sequence/pull/13</a>.</p>
  </li>
  <li>
    <p>The command <code class="language-plaintext highlighter-rouge">denote-sequence-view-hierarchy</code> produces a bespoke
buffer with all the sequence notes that form a hierarchy. The buffer
displays file titles, the concomitant sequence, and file keywords.
Each level of depth is expressed by a number of spaces, controlled
by the user option <code class="language-plaintext highlighter-rouge">denote-sequence-hierarchy-indentation</code>. In the
hierarchy buffer, there are commands that move to the next/previous
item, or forward/backward at the same level of depth. <code class="language-plaintext highlighter-rouge">RET</code> opens
the file at point, <code class="language-plaintext highlighter-rouge">TAB</code> folds/unfolds the tree. The user option
<code class="language-plaintext highlighter-rouge">denote-sequence-hierarchy-move-and-open</code> controls whether motion
commands should automatically open the file, which by default
happens in the other window (users who modify the variable
<code class="language-plaintext highlighter-rouge">denote-open-link-function</code> will get the specified behaviour in this
context as well). The <code class="language-plaintext highlighter-rouge">denote-sequence-view-hierarchy</code> can be called
with one or two prefix arguments to limit to a given sequence prefix
and/or level of depth (something that <code class="language-plaintext highlighter-rouge">denote-sequence-dired</code> also
supports). In short, this is a way to visualise your sequence notes
in a buffer that has a different presentation than Dired.</p>
  </li>
  <li>
    <p>Thanks to alan-w-255 for renaming and refining a prompt that is also
used in the hierarchy feature. This was done in pull request 15:
<a href="https://github.com/protesilaos/denote-sequence/pull/15">https://github.com/protesilaos/denote-sequence/pull/15</a>. The change
is small, meaning that its author does not need to assign copyright
to the Free Software Foundation. Further refinements by me.</p>
  </li>
  <li>
    <p>Thanks to Nicolas Semrau for binding <code class="language-plaintext highlighter-rouge">q</code> to <code class="language-plaintext highlighter-rouge">quit-window</code> in the
<code class="language-plaintext highlighter-rouge">denote-sequence-hierarchy-mode-map</code>. This was done in pull request
20: <a href="https://github.com/protesilaos/denote-sequence/pull/20">https://github.com/protesilaos/denote-sequence/pull/20</a>. The
change is small, meaning that Nicolas does not need to assign
copyright to the Free Software Foundation.</p>
  </li>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">denote-sequence-file-prompt-extra-metadata</code> is the functional
equivalent of the aforementioned <code class="language-plaintext highlighter-rouge">denote-file-prompt-extra-metadata</code>.</p>
  </li>
  <li>
    <p>Thanks to liyingzhi for pointing out an inaccurate comment in the
docstring of <code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code>. This was done in issue 18:
<a href="https://github.com/protesilaos/denote-sequence/issues/18">https://github.com/protesilaos/denote-sequence/issues/18</a>.</p>
  </li>
  <li>
    <p>The <code class="language-plaintext highlighter-rouge">denote-sequence-dired</code> is updated to align with the modalities
of <code class="language-plaintext highlighter-rouge">denote-dired</code>, as noted above. Thanks to juh for reminding me
about the need for changes in issue 14: <a href="https://github.com/protesilaos/denote-sequence/issues/14">https://github.com/protesilaos/denote-sequence/issues/14</a>.</p>
  </li>
  <li>
    <p>Thanks to Stefan Monnier for pointing out a stylistic mistake in an
older version of <code class="language-plaintext highlighter-rouge">denote-sequence-dired</code>. This was done on the
emacs-devel mailing list: <a href="https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg01119.html">https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg01119.html</a>.
Also thanks to Stefan for telling me about some other compiler
warnings: <a href="https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg01119.html">https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg01119.html</a>.</p>
  </li>
</ul>

<h4>Git commits</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/Git/Projects/denote $ git shortlog 4.1.0..4.2.0 --summary --numbered
   184	Protesilaos
     4	duli
     3	Jean-Philippe Gagné Guay
     3	Matthew Batson
     2	alvmts
     2	gnuhack
     1	Alvin Hsu
     1	Matto Fransen
     1	Samuel W. Flint
     1	Tobias Lidman-Strauss
     1	bplubell
     1	gvalson
     1	nescias
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Comment on a Marxist critique of Free Software</title>
      <description>My thoughts on a 15.000-word essay that criticises free software without showing an alternative.</description>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-05-16-comment-marxist-critique-free-software/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-05-16-comment-marxist-critique-free-software/</guid>
      <content:encoded><![CDATA[<p>I just read an article by Abhijit A.M. in <em>The Anvil</em> journal. Its
title is <em>The Decline of the Copyleft Free Software Movement and Its
Ideological Limitations</em>. It is subtitled <em>A Marxist Critique of the
Free Software Movement</em>. It makes several interesting points about the
state of free software and the role of the open source movement.</p>

<p>The thrust of the critique is that (i) free software ideology is
rooted in anarchism which itself is beholden to capitalist categories
and (ii) free software is not fighting commodification of software in
an effective way because it is ideologically incapable of opposing
commodification as such.</p>

<p>In the ~15.000-word essay, the author makes references to colonialism,
Australian Aboriginals, Tsarist Russia, Proudhon’s and Marx’s comments
on property, the bourgeoisie, and many other familiar talking points
that will amuse the Marxist faithful. What the author fails to do is
give us a concrete idea of what their alternative is. By that, I do
not mean that we should convert to Marxism. Rather, to give us a proof
of what they have right now and a step-by-step proposal on how to
proceed. To put it in software development terms, share the code and
send us the patch.</p>

<p>But there is no such thing. The catch-22 with Marxism is that the
world it promises does not truly exist unless everything is Marxist.
So we have to contend with lengthy and dense diatribes instead. To
this end, the article concludes with the following pompous yet
ultimately uninspiring remarks:</p>

<blockquote>
  <p>For the FSM [Free Software Movement] to grow its strength and
existence, it is imperative to reinvigorate its fight against the
OSM [Open Source Movement], and the spirit to defeat monopolistic
corporate control of software; the resistance to commercialization
of software needs to be pursued politically more explicitly and not
implicitly in an ‘economist’ fashion by focussing on the production
and distribution process. Moreover, without a general opposition to
the capitalist system and capitalist mode of production, and with
mere opposition to the symptoms of monopoly capitalism and big
capital in general, the movement is bound to be circumscribed by the
basic logic of capitalism, as we have already seen. It must depart
from the incorrect political and philosophical positions that it has
assumed, in order to be able to develop a really revolutionary and
subversive character.</p>

  <p>After this ebb, the true fillip to the FSM is possible now only with
the rise of the larger working-class movement, that aims to destroy
private property not only in software (impossible anyway!), but in
general.</p>
</blockquote>

<p>What exactly should we be doing to carve this “revolutionary and
subversive character” out of what we have? Nothing! These are just
words.</p>

<p>What I make of the article is that the author has either not done
anything practical in their life or has yet to develop such a habit. I
find it ironic that countless hours are spent on criticising the
bourgeoisie as if those critics lead some pagan-style life in the
countryside where they toil all day under the beating sun with nothing
but a pickax.</p>

<p>In my experience, the average Marxist intellectual is not agrarian
(starting with Marx and Engels, of course), lives in a city, typically
has an office job like in the academia, yet will pontificate about the
frailties of the bourgeois world and the virtues of working peoples.</p>

<p>Everyone can share their opinion on what Richard Stallman and friends
got right or wrong. What matters is that Richard et al. actually
did—and still do—something that had/has material implications for
lots of people over the course of decades.</p>

<p>The best kind of criticism is an alternative implementation and/or a
lifestyle that embodies the virtues one purports to uphold. To put it
in software terms once again, fork it and share your findings. Abhijit
A.M. has not demonstrated anything of the sort.</p>

<p>The free software movement does not fall into the aforementioned
catch-22 trap because it understands that one cannot change everything
in order to change something. Richard Stallman is a person who knows
how to turn an idea into an application. This is a quality that
contributors to free software have and are thus empowered to make
changes to their individual and collective experience.</p>

<p>If I need to abolish capitalism to write an extension for GNU Emacs
(of which I have tens), then I am simply not writing an extension for
Emacs. If that same constraint applies, then Emacs does not exist to
begin with. But because Richard and friends share their work in the
form of code and documentation, anyone can in principle learn and then
give something back as well.</p>

<p>I got into free software without any technical background and put in
the effort to learn. Me and everyone involved are sharing knowledge
and programs, which improve parts of our life.</p>

<p>Yes, this is freedom in principle because it assumes that someone has
access to the computer, the Internet, et cetera. Can the world be a
better place? Sure, though we have to start somewhere. Something is
better than nothing—and we get “something” by acting accordingly,
often at the individual level.</p>

<p>If I have to put my faith in some wider working-class movement to make
things happen, I am effectively hoping that actually heterogeneous and
heteroclite people, most of whom have no relevant technical acumen and
insights into the particularities of my computing needs will somehow
contribute to what I need. Do we have any results of this kind that
would give us hope? Has the wider working class as such done something
that we can point to in order to switch away from free software? I
think not. So what I do instead is proceed by initiative and benefit
from the initiatives of others like me (in the free software community
and more broadly).</p>

<p>The working class is a useful descriptor for some shared qualities.
Though it is necessarily a simplistic construct. It does not account
for the peculiarities of locality and culture nor is it sensitive to
the relevance of its constituent individuals to any given area of
interest or field of endeavour.</p>

<p>If I want to discuss poetry, for example, I can only do so in the
presence of artists or artistically inclined folk. Those without such
disposition will not be keen interlocutors or, worse, will have some
bigoted comment to make about men who enjoy poetry (on several
occasions I have been told by such working class people how classical
music, painting, and poetry, among others, are “gay”—so fragile is
their vaunted alpha masculinity that it cannot tolerate a violin).</p>

<p>My suggestion to Abhijit A.M. and anyone who has ideas about the world
is to show us results instead of merely telling us what is wrong with
the status quo. If you are not showing, but are merely telling, then
you are doing it wrong.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs coaching with Amin Bandali about ffs, display-buffer-alist, Org, and more</title>
      <description>I had a meeting with Amin Bandali in which we talked about his ffs.el package, display-buffer-alist, and a couple of Org-related topics.</description>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/</guid>
      <content:encoded><![CDATA[<p>Yesterday I met with Amin Bandali to talk about Emacs. Amin asked me
if he could record the session, which I agreed to. The video is
available on Amin’s website: <a href="https://kelar.org/~bandali/gnu/emacs/ffs-emacs-ext-prot.html">https://kelar.org/~bandali/gnu/emacs/ffs-emacs-ext-prot.html</a>.</p>

<p>We started with a review of the latest changes to the <code class="language-plaintext highlighter-rouge">ffs</code> package
that Amin has been developing. We had looked into it before and wanted
to check on its current state.</p>

<p>Amin then asked me about the <code class="language-plaintext highlighter-rouge">display-buffer-alist</code>, which I had
mentioned before. To me, this is the single most important variable
for making Emacs feel more like your own. The reason is that it allows
you to control the placement of buffers to match your expectations. I
demonstrated some of the main ideas.</p>

<p>Another nice little feature is the built-in <code class="language-plaintext highlighter-rouge">isearch</code>. I explained how
it is especially helpful while recording keyboard macros. Though it is
nice to use in general. One tweak for it is to display a counter with
its matches. Another is to change how it treats spaces, so that it can
match any character in-between. This is not as flexible as, say,
<code class="language-plaintext highlighter-rouge">consult-line</code> (from the <code class="language-plaintext highlighter-rouge">consult</code> package) when combined with
<code class="language-plaintext highlighter-rouge">vertico</code> and <code class="language-plaintext highlighter-rouge">orderless</code>. Though it still has its uses.</p>

<p>[ I have lots of little extras for <code class="language-plaintext highlighter-rouge">isearch</code>, but those should be
  good for most users. ]</p>

<p>Amin told me about rediscovering the value of Org in the context of
statically generating his website. He showed me the custom Org HTML
export backend he has been working on. Org has so many nice features
which can be used independent of each other. In this light, we also
discussed the <code class="language-plaintext highlighter-rouge">diary</code> compared to the Org agenda.</p>

<p>Find all of Amin’s publications on his website: <a href="https://kelar.org/~bandali/">https://kelar.org/~bandali/</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Reading my ‘The mask of Phantes’ story</title>
      <description>In this video I read out loud the story I wrote titled 'The mask of Phantes'.</description>
      <pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/books/2026-05-13-reading-mask-of-phantes/</link>
      <guid isPermaLink="true">https://protesilaos.com/books/2026-05-13-reading-mask-of-phantes/</guid>
      <content:encoded><![CDATA[<p>I read a story I wrote and published last evening:
<a href="https://protesilaos.com/books/2026-05-12-mask-of-phantes/">https://protesilaos.com/books/2026-05-12-mask-of-phantes/</a>. It is
about a magic mask. Whoever wears the mask gets all the attention. The
themes I explore in that publication are about desire, personhood, and
learning.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>The mask of Phantes</title>
      <description>The story of a magic mask that brings attention to whoever is wearing it.</description>
      <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/books/2026-05-12-mask-of-phantes/</link>
      <guid isPermaLink="true">https://protesilaos.com/books/2026-05-12-mask-of-phantes/</guid>
      <content:encoded><![CDATA[<p>In a distant land lives a peaceful man called Phantes. His house is
nice and cosy. It was built by a gifted fellow before Phantes was
around. Nobody knows for sure who that person is. Whispers echo in the
night. Birds sing of a peerless hunter. Mist permanently covers a part
of the forest. Not even the wind blows in that direction, as if it is
trying to avoid someone. Traces still exist. A lingering presence is
always felt. Wolves act strangely whenever they get close to it. The
land never forgets. Ask the oak trees: they are aware of everything,
though they only speak to those who are prepared to listen.</p>

<p>Phantes did not meet this mysterious figure. All the information he
has comes from a letter he found once he woke up from his slumber. He
keeps the letter in his pocket at all times. He still reads it from
time to time, hoping to discover some hidden meaning.</p>

<blockquote>
  <p>I found you unconscious in the woods and brought you here. You have
been sleeping this whole time. Three months have passed already.
Somehow you are still breathing.</p>

  <p>Where did you come from, lad? I cannot tell.</p>

  <p>I named you Phantes: he who reveals. I hope you like it.</p>

  <p>I am writing this message because I must serve a higher cause. The
hour of my summoning draws near.</p>

  <p>My house is yours. The garden outside will supply you with all the
vegetables you need. There is more food in the forest. Use my tools
to survive. I shall be watching from afar.</p>

  <p>Whatever you do, remember that sometimes your only option is to
destroy who you are.</p>
</blockquote>

<p>Phantes does not remember anything about his past. He has been a
gardener since his awakening. Every day he follows the same routine:
tend to the plants in the morning, walk around the woods in the
afternoon, and sleep early at night. Phantes has not seen another part
of the world. He has not met anybody else either.</p>

<p>Walks are his only form of adventure. In a nearby cave, Phantes
discovers intricate drawings of human figures. He compares his looks
to them. His self-image comes from the mirror he has back home. The
figures are forming a circle around a person whose face emits light.
Phantes does not know what it feels like to be with others nor can he
comprehend the event on display.</p>

<p>There are many such paintings. Each depicts a social activity of some
kind. Among them are a few that trigger in him a sense of dread.
Others bring inner peace. “IN MUTUAL RECOGNITION”, reads an
inscription, “SHALL YOU SHARE SOMETHING IN EARNEST”. Below those words
are six people and four dogs having a meal together. Phantes does not
understand the full extent of those words. His has been a solitary
existence.</p>

<p>“Where can I find others?” he asks in desperation. The entire forest
stops moving all of a sudden. All eyes are set on Phantes. “Why can I
not be seen by some other person?” he wonders as he bursts into tears.</p>

<p>The night is upon him. Phantes is still crying. “Please, help me!” he
begs on his knees while facing down. A voice from the sky breaks the
silence.</p>

<blockquote>
  <p>Easy now, young one. Everybody wants to be seen. You are no
different. Even when others are not around, I am still there for
you. I see your every move and feel your every emotion.</p>
</blockquote>

<p>Phantes hears speech for the first time. He is confused. No-one is
there. “Show yourself!” he demands.</p>

<blockquote>
  <p>You have no power to issue orders, boy. Now listen carefully to what
I will tell you. Appreciate all you have. It is not yours to keep.
What you wish for may not be the blessing you imagine. Go now. Get
some rest. Continue what you have been doing. Everything is going to
be alright.</p>
</blockquote>

<p>Phantes is not satisfied. “Wait, I have so many questions!”… The
voice is not responding. Phantes is left to his usual solitude. Though
something has changed inside of him. He no longer desires to go home
and relive the same moments. A newly felt sense of indignation is
moving him now.</p>

<p>He remembers an underground passage behind the waterfall. It leads to
an ancient tomb. At the entrance are three phrases, engraved in red,
forming an arc from left to right. “ALL NOTICE THE MASK”, informs the
one, “IT IS WHAT THEY LOVE” states the other, “NONE ESCAPES” writes
the third.</p>

<p>Phantes is hopeful that this mask can help him find the others.
Whatever ominous warnings must be exaggerations. His thinking is that
he can use the mask to lure people into noticing him. Then he can take
it off and seek to become friends with them.</p>

<p>As he walks into the tomb, he sees the mask hovering over a skeleton.
It glows in a bright green light. Phantes cannot contain his
excitement. He cannot get his eyes off the mask. “It is so beautiful!”
he exclaims. He knows this is his chance to change his life forever.</p>

<p>The mask laughs for a few seconds. It then starts moving erratically
around the room, only to stop in front of his nose. It then quickly
attaches to his face. Phantes shouts at the top of his lungs. He
experiences an overwhelming force coursing through his body that
knocks him off balance. He gets up and ventures back to the surface.</p>

<p>Upon exiting he runs into people for the first time. A jubilant crowd
cheers at him from a few steps away. He cannot discern any faces just
yet. This is too much for Phantes. Amid the noise he catches phrases
of admiration. All are about his radiant beauty.</p>

<p>“I will have so many friends now”, he thinks to himself, “they love me
already”. Something is amiss. He notices that no-one is getting close
to him. The crowd keeps a safe distance. “Hey, why do you not come
here?” he asks as he waves his hands at them. A voice is heard from
the back “oh, no, your looks are so captivating that I will lose my
control”.</p>

<p>Phantes makes a step in their direction. Panic grips them. They
scatter as fast as they can. He does not give chase. They will
probably keep fleeing, after all. He wonders whether people are always
acting strange like this.</p>

<p>A few minutes later, another large group shows up. They too are elated
to encounter Phantes. “What a heavenly face!” says someone as others
celebrate what they are witnessing. “Blessed are we, to meet such a
beauty!” remarks another person, with others making affirmative
sounds. Phantes tries to establish contact with those people. They
also run away in fear as soon as he approaches them.</p>

<p>Everywhere he now goes, there are folks waiting for him, eager to
comment on his appearance. He finds it strange how he had not met a
single person before and suddenly there are hundreds of them at every
turn. Phantes is concerned that he is doing something wrong. He does
not understand why would such enthusiastic admirers not try to
befriend him.</p>

<p>He reaches his house. Another gathering of fans is already there. They
have been tearing the building apart. “Hey, what is wrong with you?”
he asks in shock. “We want a piece of your belongings, beautiful, to
bring us good fortune” says one of the pillagers. Phantes is too late
to prevent the damage. The house has been reduced to an outline on the
ground. The walls are gone, as is all of the furniture. Each
individual took something and fled to safety.</p>

<p>Phantes needs a place to rest, but everywhere he goes there are
exuberant people observing his every motion, while constantly making
disturbing noises. He tries to remove the mask, in the hope of not
attracting any more attention. The mask will not move, however. It is
firmly planted on his face. It has a will of its own and he has no
power over it. After struggling for a while, he surrenders to his new
fate.</p>

<p>“They do not care about me”, he realises, “all they want is to be
close to what I project through this mask”. Phantes understands how he
is not treated as a person anymore. “I have been reduced to a singular
dimension, to looks alone, as if I have no interests or wants, no
sensitivities or passions”.</p>

<p>The mask is an ancient artefact. It picks those who desire more
attention than necessary. Some of them are innocent and naive. Others
have nefarious goals. It does not matter though. Whoever wears the
mask becomes the centre of all social activity at the expense of their
original individuality.</p>

<p>The mask needs time to take over completely. In the meantime, Phantes
can still make decisions. He understands that he got more than what he
needed. The burden is too heavy and will only get heavier. He thinks
back to all the warnings and peculiar hints he had discerned.</p>

<p>He then remembers the final words of the letter he found when he woke
up for the first time in this distant land. There may still be
something for him, after all. The curse can be lifted. Such is his
renewed faith. It is all he has left. Without fear in his heart, he
runs to the closest clearing and jumps off a cliff, never to be seen
again.</p>

<p>The crowds disperse. The natural rhythms are restored. Phantes wanted
to be seen. What he did not anticipate is that very few souls only
ever take their attention off the mask that once captured their
imagination.</p>

<p>I helped him learn. For certain topics, there is no other way to teach
people. They have to live in the world they wish for. Only then may
they realise that they are not in control.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Western strategic constraints in the war on Iran</title>
      <description>Western powers are facing robust constraints. They cannot afford to treat issues lightly.</description>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-05-11-western-strategic-constraints-iran-war/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-05-11-western-strategic-constraints-iran-war/</guid>
      <content:encoded><![CDATA[<p>Writing for <em>UnHerd</em>, in an article titled <a href="https://unherd.com/2026/05/boots-on-the-ground-is-trumps-best-option/">Boots-on-the-ground is
Trump’s best option</a>,
Wolfgang Munchau elaborates on a logical argument in favour of
committing to the war in Iran:</p>

<blockquote>
  <p>[…] Unlike Russia, Iran is not a nuclear power, and on
conventional forces alone the US surely has the military capability
to theoretically defeat the regime. Whatever we might think about
what is good or bad, right or wrong, it would therefore make sense
for Trump to resume the war, and even to put boots on the ground if
that is what’s required. It is what the logic of war dictates.</p>
</blockquote>

<p>Wolfgang’s position is coherent yet lacks lateral thinking of the sort
necessary in matters of strategy. In absolute terms the USA has more
resources than Iran and will thus prevail in an all-out war. Though
this is a simplistic representation of the case. What is pertinent is
the spacetime of war, the trade-offs inherent to each decision, and
the status quo ex post for the winning side.</p>

<p>Even a superpower has to think in terms of the economy of choices
within fixed time frames and even a superpower can be a loser
long-term after winning a war in the short run. Every war is costly in
tangible and intangible ways. It is not enough to calculate how one
can win on a single front. They must rather consider whether they can
retain their position in international affairs altogether. 20th
century history is enough to teach us that mighty empires, like the
British and the French, can still be swept into the dustbin of history
shortly after prevailing in a major war.</p>

<p>For America to muster the forces necessary for a ground invasion in
Iran, it not only needs months of preparation, but also to shift its
attention away from other parts of the planet. For example, military
assets in East Asia will have to be moved to the Middle East. A power
vacuum is created in the process. Other actors, such as China, may
then find an opening to create a fait accompli that strengthens their
position thenceforth.</p>

<p>US forces moving away from places like South Korea then raises
questions about the credibility of American security guarantees as
well as the political commitment behind them. Given the isolationist
mood in the States and the fact that President Trump was elected on an
unequivocal anti-war platform (well, at least rhetorically), affected
countries will conclude that Americans are jaded and unwilling to
fight on all fronts.</p>

<p>It does not stop there. A full-scale war in Iran creates new realities
on the demand for military hardware. The war effort will absorb as
much as necessary, while there will still be a need to maintain
inventories at satisfactory levels for the ongoing promotion of
American/Western interests. One immediate knock-on effect is that it
will no longer be viable to send arms to Ukraine, Israel, or
elsewhere, with whatever implications that has for those countries.</p>

<p>Governments that are supportive of Iran will be prudent to maximise
the costs for the Americans. Russia and China can provide arms and
intelligence, much in the same way that the entirety of NATO is
involved in the Ukraine war.</p>

<p>The Europeans lack the capacity to bolster arms production over the
short-term. Plus, they are focused on their proxy war with Russia.
Public opinion in Europe would not support sending troops to the
Middle East and would likely not even have the appetite to continue
the war effort vis-à-vis the Russians in the face of mounting economic
pressures.</p>

<p>As the debacle of the UK’s Labour party in the recent local elections
has demonstrated, Western governing parties can quickly lose their
grip on power if they do not perform well on domestic affairs.
Political elites think they can play chess on the world stage, when in
reality they have to pay attention to what is happening at home.</p>

<p>Economic hardship has been the reality for a long time and will only
worsen over the medium-term. There is little chance that people will
support open-ended military campaigns under the vague promise of
better things to come in some indeterminate future. That can, in
principle, lead to radical changes domestically (e.g. a far-right
president in France) which would be the death knell of the liberal
world order.</p>

<p>And I have not even considered the practicalities of a ground war in
Iran. What kind of forces does that unleash? The Iranians will be
fighting for the honour of their homeland, while the invaders will be
operating under the eternal shame of imperialistic arrogance. With
Iran cornered, who is to say that they will not retaliate by
destroying desalination plants in their neighbouring countries? An
ill-considered war will then quickly turn into a humanitarian
catastrophe for the wider region.</p>

<p>Are Europeans prepared to deal with the indubitably massive refugee
crisis that will be hitting them? If the waves of refugees from Syria
provided the impetus for the recrudescence of the far-right across the
continent, I prefer not to think what an even bigger influx of
refugees would bring about. It will not be pretty. Rising xenophobia,
which would be indistinguishable from Islamophobia, could then trigger
fanaticism on the side of radical Islamist groups across Europe. An
all-out war in Iran then entails the non-trivial risk of asymmetric
threats throughout the Western world.</p>

<p>In short, it is easy to argue which contestant wins in a hypothetical
cage fight. However, politics are not reducible to a melee encounter.
The world is a complex place. It is incredibly hard to be a
responsible statesman. President Trump continues with his questionable
antics on social media, though one can only hope that he understands
the disastrous consequences of recklessness.</p>

<p>The multipolar international order is the new normal. What remains to
be determined is whether the Westerners have gotten the memo or
continue to throw good money after bad.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Philosophy: Hades, introspection, wealth, misery, and resurrection</title>
      <description>In this video I expound on the connection between deep thought and misery.</description>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/books/2026-05-10-hades-introspection-wealth-misery-resurrection/</link>
      <guid isPermaLink="true">https://protesilaos.com/books/2026-05-10-hades-introspection-wealth-misery-resurrection/</guid>
      <content:encoded><![CDATA[<p>In this 30-minute video I expound on the close connection between deep
thought and misery. I do so by explaining the symbolism of Hades, the
Greek god of the underworld, the world of disembodied souls. Hades is
also known as “Plouton”, from the Greek word for “wealth”, which
points to a connection between the soul/spirit and wealth. Knowing
oneself through introspection is, in a sense, a way to have a more
rich experience. Though I caution how when deep thought goes too far
it creates a tunnelling effect that makes us feel disconnected from our
immediate surroundings and thus overwhelmed by a sense of uneasiness.
I discuss how we can become back, as it were, into this world through
a process of becoming a somewhat new person. This is our metaphorical
resurrection or, better, transanimation that is again symbolised in
the myth of Zagreus who dies as Zagreus and resurrects as Dionysus. In
this context I even bring up a popular video game, titled “Hades”,
whose protagonist is called “Zagreus”, while I also share my personal
experience with depressive thinking and my effective reconstitution as
a largely different person.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs coaching with Amin Bandali</title>
      <description>I met with Amin Bandali to talk about Emacs, specifically Amin's upcoming ffs.el package.</description>
      <pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-08-emacs-coaching-amin-bandali/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-08-emacs-coaching-amin-bandali/</guid>
      <content:encoded><![CDATA[<p>I met with Amin Bandali to talk about Emacs, specifically Amin’s
upcoming <code class="language-plaintext highlighter-rouge">ffs</code> package. Amin informed me about changes to <code class="language-plaintext highlighter-rouge">ffs</code> in
light of a discussion we had during a previous session.</p>

<p>Amin asked me to record the meeting and then publish it, which I
happily agreed to. You can watch it on Amin’s website:
<a href="https://kelar.org/~bandali/gnu/emacs/ffs-code-review-prot.html">https://kelar.org/~bandali/gnu/emacs/ffs-code-review-prot.html</a>.</p>

<p>[ NOTE: I normally do not share anything about my meetings with
  people. Not who they are nor what we talk about. ]</p>

<p>Thanks to Amin for making this happen! I am looking forward to new
developments.</p>

<p>By the way, I learnt about the function <code class="language-plaintext highlighter-rouge">x-export-frames</code> from a
mention in Amin’s <code class="language-plaintext highlighter-rouge">ffs</code> package, which led me to write
<code class="language-plaintext highlighter-rouge">buffer-to-pdf</code>: <a href="https://github.com/protesilaos/buffer-to-pdf">https://github.com/protesilaos/buffer-to-pdf</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>On Yanis Varoufakis’ appearance at ‘The Rest Is Politics’ podcast</title>
      <description>I analyse the problems that leftists in Europe face in dealing with European Union affairs.</description>
      <pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-05-07-comments-yanis-varoufakis-rest-is-politics-podcast/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-05-07-comments-yanis-varoufakis-rest-is-politics-podcast/</guid>
      <content:encoded><![CDATA[<p>Today I watched with great interest the discussion of Yanis Varoufakis
with the hosts of <em>The Rest Is Politics</em> podcast, Alastair Campbell
and Rory Stewart: <a href="https://www.yanisvaroufakis.eu/2026/05/03/on-the-rest-is-politics-with-alastair-campbell-and-rory-stewart-from-the-2008-crash-to-the-rise-of-populism/">https://www.yanisvaroufakis.eu/2026/05/03/on-the-rest-is-politics-with-alastair-campbell-and-rory-stewart-from-the-2008-crash-to-the-rise-of-populism/</a>.</p>

<p>Yanis was at the heart of Europe’s post-2008 financial and sovereign
debt crisis, first as a commentator from the sidelines of the academia
and then as the Greek finance minister. Throughout the show Yanis
comments on past events. I am not interested in relitigating those
controversies but in drawing lessons for the present.</p>

<p>Yanis is a freethinker extraordinaire. This necessarily makes him a
misfit in the world of politics. To me, this is honourable. Where I
think Yanis failed as a policy-maker is in his ambiguity on the
notorious theme of “Grexit” (the exit of Greece from the Euro Area).
Back when Yanis was the Greek finance minister there was a decent
chance that Greece would discontinue using the euro. He never told us
what he wanted from the negotiations he was engaging in at the time:
to keep the euro, to switch back to the drachma, to have some kind of
dual currency arrangement, or something else entirely.</p>

<p>In the podcast he employs the analogy of not taking on a credit card
to pay off a debt while you are bankrupt. It is common sense. Then
what is the policy proposal or at least the big picture view? I never
heard it.</p>

<p>The exact answer does not matter. What is of interest is the absence
of clarity, for it is indicative of the wider political left’s problem
with European Union affairs altogether: there is no clear vision, no
compelling story. Yanis is intellectually honest, mind you, yet he too
is beholden rhetorically to a movement that considers certain opinions
unacceptable.</p>

<p>Leftists at-large have no persuasive plan for the European Union. Not
for “Europe” in some abstract sense, as that can easily be construed
along the lines of international peace. I am specifically focused on
the existing legal-institutional architecture which enshrines in
treaties what effectively is anathema to progressives. Austerity is
not the ephemeral policy of some elected government, such that it can
be discontinued at the next election. No! It is the very essence of
the primary law that underpins Europe’s economic governance.</p>

<p>The left cannot make bold pronouncements on the EU as such. If it
accepts the status quo, then it necessarily agrees to live under a
system that practically no democratic process can reform. Yanis learnt
this firsthand: he had to resign from his post as finance minister
because a resounding “no” at the referendum meant nothing whatsoever
in substantive terms.</p>

<p>As things have stood since the early 1990s with the Treaty of
Maastricht, the EU is caught in a situation where it has no natural
unit of democracy. This used to be the nation-state back when there
was a direct link between the legitimation of decision-makers and
their attendant accountability. Decisions were adopted domestically
and were, in principle, scrutinised there. The European Economic
Community of the pre-Maastricht era was a free trade area with limited
authority over national affairs.</p>

<p>The crowning achievement of the Treaty of Maastricht is the euro.
Monetary policy has since been transferred to the European Central
Bank. Fiscal policy is similarly conferred to the supranational level
in a process that largely unfolded at the height of the 2008+ economic
crisis. Without financial autonomy, the remaining areas of policy are
severally constrained in advance, notwithstanding other European
regulations. Recent developments in the proxy war with Russia are
showing that the EU is eager to concentrate ever more power on matters
of foreign policy and defence, and even meddle in the outcome of
national elections under the pretext of combating “disinformation”
campaigns carried out by the usual villains.</p>

<p>Meanwhile, the EU as a whole is not a democracy. The Commission is a
bureaucratic apparatus. The European Council is a collection of
governments, each of which has partialised sovereignty, elected on a
national platform to pursue national interests yet supposed to make
decisions in the name of Europeanness. In other words, we experience a
mismatch of sovereignty: rules for the system as a whole without the
commensurate cycle of legitimation and accountability.</p>

<p>Against this backdrop, Europe faces the same predicament it did in the
2010s. Namely, it operates in a grey area that is neither national nor
supranational democracy. One path forward is that of federalism which
sees the EU turn into a fully fledged federal republic. The other is a
reconstitution of national sovereignty, which effectively means the
disintegration of the Union as we know it.</p>

<p>For leftists this is an awkward historical turn:</p>

<ul>
  <li>
    <p>To side with the federalists is to accept that for the indeterminate
future they will say nothing about the hardcoded neoliberal
character of the EU’s economics. Or, worse, they will join the
pro-EU camp anyway while rhetorically disagreeing with the most
inflexible policies of the block.</p>
  </li>
  <li>
    <p>Dismissing the EU has far-reaching implications which lead to the
formation of a programme that is nationalistic at heart: exit the
euro, leave the Union, restore national sovereignty, pursue good
relations with countries beyond Europe, et cetera. Regaining
sovereignty will also affect immigration policy, not least in order
to impose capital controls during the potentially long period of
transition back to a national currency.</p>
  </li>
</ul>

<p>Yanis has had no answer to this conundrum. My view is that one has to
decide what their priorities are and proceed accordingly. I have in
the past leaned on the federalist side and still think it is worth the
trouble if—and only if—it establishes a republic. Though I have
long lost faith in the capacity of the EU to be refashioned into
something other than the bureaucratic confederation it is.</p>

<p>Each system comes with its own potential owning to the relative power
of its constituent factors and the particularities of their interplay.
How can we get a European treasury, for instance, when the moment we
try to pool national debts we encounter the toxic issue of the Dutch
assuming part of the national debt of the Italians, the Germans doing
the same with the French, and so on.</p>

<p>The nations still exist as do their cultures and historical biases.
This is the fact of the matter. Federalism is an intellectual project
that sounds nice in theory while it downplays or completely ignores
the inescapable conflicts of interest among the member states of the
Union. Considered holistically, to change the EU requires concerted
action of the sort that is akin to planetary alignment.</p>

<p>Perhaps, then, intellectual honesty leads us to a nationalist turn;
nationalist in the sense of restoring sovereignty at home and then
working towards its democratisation; nationalist in order to develop
the capacities for an internationalist outlook. This too is difficult,
for sure, though each country can do it without depending on all the
rest to reach consensus in practically every area of policy.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: it snowed, then I got some sunshine</title>
      <description>Topless picture of me enjoying the sunshine after an unprecedented snowfall in early May</description>
      <pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-05-06-snow-then-some-sunshine/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-05-06-snow-then-some-sunshine/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>On the coming economic crisis</title>
      <description>A major economic shock is coming our way and we are woefully unprepared to deal with it.</description>
      <pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/politics/2026-05-06-thoughts-coming-economic-crisis/</link>
      <guid isPermaLink="true">https://protesilaos.com/politics/2026-05-06-thoughts-coming-economic-crisis/</guid>
      <content:encoded><![CDATA[<p>The ongoing conflict in the Middle East has created an input shock
whose delayed cascading effects we shall experience in the months and
years to come. Shortages in oil and its derivatives bring about
challenging states of affairs that extend to every area of economic
activity. If businesses start failing, we may be in for a rerun of the
post-2008 financial crisis or worse. Prices were already at exorbitant
rates prior to the US-Israeli war against Iran. The upward trend is
further reinforced as markets are gradually yet steadily pricing in
the prevailing risks.</p>

<p>Even if the planet is awash with natural resources that can, in
principle, render Middle Eastern oil surplus to requirements, the
damage has already happened (and continues to worsen). It takes time
to reorganise supply chains to whatever new normal. The transition
cannot be pain-free.</p>

<p>President Trump keeps boasting about America’s prowess on the
battlefield in what starts to look like theatrics for saving face
rather than responsible statesmanship. America has not only failed in
toppling the Iranian regime and in acquiring the enriched uranium, it
has also managed to create an intractable situation with the closing
of the Strait of Hormuz—a vital artery of the global energy markets
which was, by the by, open prior to this unnecessary war. In the
process, Trump appears beholden to his paymaster lobbyists and thus
cannot be trusted to pursue policies that are in the well-meaning
interest of his own people, let alone the international community.</p>

<p>In my part of the world, the European Union, political elites are
behaving in the same way as their predecessors circa 2010. Then too,
as today, woefully unprepared policy-makers were too slow to respond
to rapidly evolving phenomena. Their complacency, continuous delays,
indecision, and overall lack of ambition, deepened and lengthened the
economic downturn. They effectively had no better solution than to
condemn the continent to an economic outlook of permanent austerity on
the fiscal front combined with hyperinflationary monetary policy.</p>

<p>The devastating outcome of their decision-making remains with us to
this day. The money printing bonanza evolved into the ever egregious
concentration of property in the upper parts of the income
distribution. Same principle for the bailouts that favoured big
business over everybody else.</p>

<p>EU apparatchiks are focused on their endless proxy war with Russia,
which is a boon for the military-industrial-financial complex on every
side of the conflict, but of negative value to affected countries
at-large. Effective leadership in such circumstances would be
concerned with creating the conditions for the economic resilience of
Europe through what used to work well, namely, sincere trade. Diverse
alliances and strong commercial ties with the rest of the world,
couched in terms of mutual respect, are essential. Once greed becomes
doctrine and guile turns into policy, war is inevitable.</p>

<p>Part of such a realignment involves closer ties with China, a
recognition that the Middle East belongs to all of its peoples and
that cooperation with them is the sole path to sustainability, a
rapprochement with the Russians, pressure on the Ukrainian government
to finally accept a peace deal, and gradual reduction in the currently
strong dependency on American energy imports.</p>

<p>What we get instead is further dependence over the short-to-medium
term on the increasingly unreliable Americans, mindless Sinophobia and
Russophobia, jingoism in Eastern Europe, and neocolonial smugness
towards the predominantly Islamic Western Asian countries.</p>

<p>Advances in robotics and artificial intelligence could, in theory,
mitigate the chilling effects of the looming recession and even
reverse the trend altogether. Though one need only consider the
ownership model of the relevant industries to understand that whatever
gains will not be widely shared. Those who brought us to this
situation will be laughing all the way to the bank, while we will be
counting pennies to buy a loaf of bread or, worse, paying with our
blood in some war we never believed in.</p>

<p>There is still some time to arrest the downfall and pivot away from
the path to collective folly. Though it requires a sense of urgency. I
am afraid that at least in the Europe Union apparatus there is no such
quality of character to be found. Not in Berlin, not in Paris, and
certainly not in Brussels.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live with Sacha Chua and Philip Kaludercic on 2026-05-14 17:30 Europe/Athens</title>
      <description>We will talk about Emacs 31 and other developments for Emacs 32. We will also discuss the newcomer experience.</description>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-04-emacs-live-sacha-chua-philip-kaludercic/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-04-emacs-live-sacha-chua-philip-kaludercic/</guid>
      <content:encoded><![CDATA[<p>On the 14th of May we will meet with Sacha and Philip to talk about
the upcoming Emacs 31 and other developments heading into Emacs 32.
Philip is a contributor to core Emacs and the main driver behind the
new <code class="language-plaintext highlighter-rouge">newcomers-presets</code> theme, among others. We will cover themes
related to the newcomer experience.</p>

<p>I am looking forward to it!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Re: Emacs and keyboard ergonomics</title>
      <description>I comment on keyboard ergonomics and Emacs key bindings.</description>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-04-emacs-keyboard-ergonomics/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-04-emacs-keyboard-ergonomics/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from an exchange that I am reproducing with
permission from my correspondent. I am not sharing their contact
details.</p>

<hr />

<blockquote>
  <p>As I understand, you’re using the regular keybindings in emacs. I’m
trying to transition away from the vim way of editing text and was
wondering if you’re using a more ergonomic approach for your text
editing needs. I remember you were using some ergo split keyboards
for that?</p>
</blockquote>

<p>Indeed, I have a split mechanical keyboard (a gift from a person who
identifies as “Andreas”). It is the Iris revision 8 by Keebio. I also
have a regular full-sized keyboard (a gift from Arialdo Martini),
which is the Keychron K5.</p>

<p>[ Keyboard-related articles of mine: <a href="https://protesilaos.com/keeb/">https://protesilaos.com/keeb/</a>. ]</p>

<p>The split keyboard is nice, though it is not a magical solution. Even
with a regular form factor keyboard, I can work with the standard
Emacs keys without any problem. What helps me the most is to configure
one-shot modifiers. This means that I can tap (press once, then
release) a modifier key, then tap a regular key to register it as a
modifier+key event. For example, <code class="language-plaintext highlighter-rouge">C-x</code> is this: tap <code class="language-plaintext highlighter-rouge">Ctrl</code>, then tap
<code class="language-plaintext highlighter-rouge">x</code>. <code class="language-plaintext highlighter-rouge">Shift</code> tapping is especially nice for prose, by the way, and
eases the pressure on the otherwise weak pinky. The time window for
registering a one-shot modifier is configurable.</p>

<p>The other useful tweak for a regular keyboard is to rearrange the
layout of the modifiers. I prefer this order:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Super Alt Ctrl Space Ctrl Alt Super
</code></pre></div></div>

<p>[ If there is a <code class="language-plaintext highlighter-rouge">Menu</code> key, move it to the right corner and consider
  assigning it to the Compose key if you are on Linux. ]</p>

<p>Now <code class="language-plaintext highlighter-rouge">Ctrl</code> is under the thumb, which is especially nice for Emacs.
<code class="language-plaintext highlighter-rouge">Alt</code> and <code class="language-plaintext highlighter-rouge">Super</code> can be swapped, if you use <code class="language-plaintext highlighter-rouge">Super</code> more heavily
(e.g. with a tiling window manager). But the important part is to keep
<code class="language-plaintext highlighter-rouge">Ctrl</code> close to the <code class="language-plaintext highlighter-rouge">Space</code> key.</p>

<p>Whatever you do though, remember to use both sets of modifiers. For
example, <code class="language-plaintext highlighter-rouge">C-x</code> involves the right hand for <code class="language-plaintext highlighter-rouge">Ctrl</code> and the left hand
for <code class="language-plaintext highlighter-rouge">x</code>. <code class="language-plaintext highlighter-rouge">C-p</code> needs the left hand for <code class="language-plaintext highlighter-rouge">Ctrl</code> and the right hand for
<code class="language-plaintext highlighter-rouge">p</code>. This way you distribute the burden so no one side is overworked
(and, of course, you take regular breaks from typing altogether).</p>

<p>Lots of Emacs users will rebind <code class="language-plaintext highlighter-rouge">Caps Lock</code> to <code class="language-plaintext highlighter-rouge">Ctrl</code>. While this is
fine in its own right, it tends to embed bad habits, such as with
using only the left hand to register the very common <code class="language-plaintext highlighter-rouge">C-a</code>, <code class="language-plaintext highlighter-rouge">C-e</code>,
<code class="language-plaintext highlighter-rouge">C-d</code>, <code class="language-plaintext highlighter-rouge">C-f</code>, <code class="language-plaintext highlighter-rouge">C-s</code>, <code class="language-plaintext highlighter-rouge">C-r</code>, <code class="language-plaintext highlighter-rouge">C-w</code>, <code class="language-plaintext highlighter-rouge">C-g</code>, <code class="language-plaintext highlighter-rouge">C-z</code>, <code class="language-plaintext highlighter-rouge">C-x</code>, <code class="language-plaintext highlighter-rouge">C-c</code>, <code class="language-plaintext highlighter-rouge">C-v</code>.
Exclusive left-handed use involves awkward twisting of the muscles
which will probably hurt you over time. Plus, the left pinky is forced
to press and hold a key while being stretched—looks bad. Again,
distribute the load.</p>

<p>The final part that makes everything easier is to configure a “layer”
key. When you press and hold this key, other keys register a different
input than normal. For example, <code class="language-plaintext highlighter-rouge">Caps Lock</code> can be the layer key,
which then makes <code class="language-plaintext highlighter-rouge">h</code>, <code class="language-plaintext highlighter-rouge">j</code>, <code class="language-plaintext highlighter-rouge">k</code>, <code class="language-plaintext highlighter-rouge">l</code> act as arrow keys. Same idea for
mapping <code class="language-plaintext highlighter-rouge">Home</code>, <code class="language-plaintext highlighter-rouge">PgDn</code>, <code class="language-plaintext highlighter-rouge">PgUp</code>, <code class="language-plaintext highlighter-rouge">End</code> someplace that makes sense (mine
are on <code class="language-plaintext highlighter-rouge">y</code>, <code class="language-plaintext highlighter-rouge">u</code>, <code class="language-plaintext highlighter-rouge">i</code>, <code class="language-plaintext highlighter-rouge">o</code>). I prefer to have <code class="language-plaintext highlighter-rouge">Space</code> as that layer
key: it only is a layer when I press and hold it, otherwise it
performs the ordinary function of the <code class="language-plaintext highlighter-rouge">Space</code> key.</p>

<p>It is okay to press and hold <code class="language-plaintext highlighter-rouge">Space</code> because you do it with your
relatively strong thumbs. Better have it this way than pressing and
holding with the pinkies.</p>

<p>All this can be achieved with software such as <code class="language-plaintext highlighter-rouge">kanata</code>. A custom
keyboard with QMK firmware can get the same configuration embedded
directly in the keyboard (so it works without any special program
running on the computer). Kanata will be the cheaper solution and is
probably better overall if you consider that it can apply to a
laptop’s keyboard.</p>

<p>A mistake in all this is to think that an expensive keyboard is
inherently more ergonomic. If you keep curling, overextending, or
anyhow stressing your muscles the injuries will occur regardless. A
new keyboard can help if you use it as an opportunity to retrain your
muscle memory.</p>

<p>Custom keyboards have potential advantages in terms of comfort because
you can change the switches and keycaps that they use. For example,
you can pick a lighter or heavier switch to match your typing
technique. Then you can combine it with a shallower or steeper keycap
profile to get the most out of that setup. There is no right or wrong
here. It is a matter of optimising on top of the strong fundamentals
that I outlined above.</p>

<p>As for <code class="language-plaintext highlighter-rouge">evil-mode</code> in Emacs, I think it is a good solution overall.
You do, however, need to install the <code class="language-plaintext highlighter-rouge">evil-collection</code> package and
probably also configure lots of other key bindings to get exactly what
you want. There are other packages that give you modal editing, though
I have only ever used <code class="language-plaintext highlighter-rouge">evil-mode</code> in earnest: it is fine.</p>

<p>That granted, I find that I do not like modal editing in general. It
is especially inconvenient for me when I write at length (which I do a
lot) because I tend to produce a wall of text in one go. Having a
modal interface gives me no advantage in this common scenario. I also
doubt it ever gave me the edge while programming. The bottleneck is
how quickly and clearly I can think, not how fast I can edit lines of
text (though, yes, Vim’s paradigm is powerful).</p>

<p>Consider then the overall comfort of your setup. Both in terms of the
ergonomics of hardware but also how much effort it takes to maintain
your Emacs configuration. The standard approach to key bindings gives
you something that “just works” with practically every package you
install. It may feel awkward in the beginning if you are coming from
the Vim keys, but will be the most robust solution long-term from the
perspective of maintainability.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: save any buffer as PDF (my new buffer-to-pdf package)</title>
      <description>Video demonstration of my new Emacs package called buffer-to-pdf.</description>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-05-02-emacs-buffer-to-pdf-new-package/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-05-02-emacs-buffer-to-pdf-new-package/</guid>
      <content:encoded><![CDATA[<p>In this short video I demonstrate my new package for Emacs. It is
called buffer-to-pdf. The idea is to save your current buffer to a
PDF, while preserving how it looks. This means that your font size,
theme, and other visual effects are preserved and written to the PDF.
buffer-to-pdf is not meant to be a replacement for elaborate export
methods: consider it a quick yet effective way to get a “screen
capture” of your Emacs that you can then share as a document. I
believe this will be especially useful for academics or people who
need to distribute presentation notes on a regular basis. The package
is available here: <a href="https://github.com/protesilaos/buffer-to-pdf">https://github.com/protesilaos/buffer-to-pdf</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: from scholar to pirate</title>
      <description>I cut my hair short but kept the beard with a light trim.</description>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-04-30-scholar-to-pirate/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-04-30-scholar-to-pirate/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: decent defaults I shared with Sacha Chua</title>
      <description>Some basic settings for Emacs that I consider useful for most users.</description>
      <pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-30-emacs-decent-default-sacha-chua/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-30-emacs-decent-default-sacha-chua/</guid>
      <content:encoded><![CDATA[<p>These are the basic settings for Emacs that I shared with Sacha Chua
during our livestreamed meeting on 2026-04-30: <a href="https://www.youtube.com/watch?v=z7pcLdwuyxE">https://www.youtube.com/watch?v=z7pcLdwuyxE</a>.</p>

<p><strong>UPDATE 2026-05-01 08:24 +0300:</strong> Added a missing <code class="language-plaintext highlighter-rouge">:config</code> to the
<code class="language-plaintext highlighter-rouge">bookmark</code> block.</p>

<p><strong>UPDATE 2026-05-02 22:33 +0300:</strong> Replaced duplicate <code class="language-plaintext highlighter-rouge">variable-pitch</code>
with the intended <code class="language-plaintext highlighter-rouge">fixed-pitch</code>.</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">;;; Sensible defaults that are not too intrusive and focus on common use-cases.  By Protesilaos on 2026-04-30.</span>

<span class="c1">;; These are not all of my favourite options.  I am not even including</span>
<span class="c1">;; any of my packages.  They are just some basics that I consider</span>
<span class="c1">;; useful, given what I have learnt from my exchange with other people</span>
<span class="c1">;; of all skill levels.</span>


<span class="c1">;; Persist all customisations in a separate file called "custom.el".</span>
<span class="c1">;; It is in the same directory as the "init.el".</span>
<span class="c1">;;</span>
<span class="c1">;; Without the `custom-file', Emacs writes directly to the "init.el",</span>
<span class="c1">;; which can be confusing.</span>
<span class="p">(</span><span class="k">setq</span> <span class="nv">custom-file</span> <span class="p">(</span><span class="nv">locate-user-emacs-file</span> <span class="s">"custom.el"</span><span class="p">))</span>
<span class="p">(</span><span class="nb">load</span> <span class="nv">custom-file</span> <span class="ss">:no-error-if-file-is-missing</span><span class="p">)</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nc">package</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; I am not using `add-to-list' here because the default "gnu" is</span>
  <span class="c1">;; confusing to people, given that "elpa" is the better known name</span>
  <span class="c1">;; for it.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">package-archives</span>
        <span class="o">'</span><span class="p">((</span><span class="s">"gnu-elpa"</span> <span class="o">.</span> <span class="s">"https://elpa.gnu.org/packages/"</span><span class="p">)</span>
          <span class="p">(</span><span class="s">"nongnu"</span> <span class="o">.</span> <span class="s">"https://elpa.nongnu.org/nongnu/"</span><span class="p">)</span>
          <span class="p">(</span><span class="s">"melpa"</span> <span class="o">.</span> <span class="s">"https://melpa.org/packages/"</span><span class="p">)))</span>
  <span class="c1">;; Prefer GNU ELPA but accept the reality of MELPA's utility to the</span>
  <span class="c1">;; wider community.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">package-archive-priorities</span>
        <span class="o">'</span><span class="p">((</span><span class="s">"gnu-elpa"</span> <span class="o">.</span> <span class="mi">3</span><span class="p">)</span>
          <span class="p">(</span><span class="s">"nongnu"</span> <span class="o">.</span> <span class="mi">2</span><span class="p">)</span>
          <span class="p">(</span><span class="s">"melpa"</span> <span class="o">.</span> <span class="mi">1</span><span class="p">))))</span>

<span class="c1">;;;; General options</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">emacs</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:demand</span> <span class="no">t</span>
  <span class="ss">:init</span>
  <span class="p">(</span><span class="nb">defun</span> <span class="nv">prot/keyboard-quit-dwim</span> <span class="p">()</span>
    <span class="s">"Do-What-I-Mean behaviour for a general `keyboard-quit'.

The generic `keyboard-quit' does not do the expected thing when
the minibuffer is open.  Whereas we want it to close the
minibuffer, even without explicitly focusing it.

The DWIM behaviour of this command is as follows:

- When the region is active, disable it.
- When a minibuffer is open, but not focused, close the minibuffer.
- When the Completions buffer is selected, close it.
- In every other case use the regular `keyboard-quit'."</span>
    <span class="p">(</span><span class="nv">interactive</span><span class="p">)</span>
    <span class="p">(</span><span class="nb">cond</span>
     <span class="p">((</span><span class="nv">region-active-p</span><span class="p">)</span>
      <span class="p">(</span><span class="nv">keyboard-quit</span><span class="p">))</span>
     <span class="p">((</span><span class="nv">derived-mode-p</span> <span class="ss">'completion-list-mode</span><span class="p">)</span>
      <span class="p">(</span><span class="nv">delete-completion-window</span><span class="p">))</span>
     <span class="p">((</span><span class="nb">&gt;</span> <span class="p">(</span><span class="nv">minibuffer-depth</span><span class="p">)</span> <span class="mi">0</span><span class="p">)</span>
      <span class="p">(</span><span class="nv">abort-recursive-edit</span><span class="p">))</span>
     <span class="p">(</span><span class="no">t</span>
      <span class="p">(</span><span class="nv">keyboard-quit</span><span class="p">))))</span>
  <span class="ss">:bind</span>
  <span class="p">(</span><span class="s">"C-g"</span> <span class="o">.</span> <span class="nv">prot/keyboard-quit-dwim</span><span class="p">)</span>
  <span class="ss">:config</span>
  <span class="c1">;; Set your favourite font family and height here.  The :height is</span>
  <span class="c1">;; 10x the point size you most commonly find on other applications.</span>
  <span class="p">(</span><span class="nv">set-face-attribute</span> <span class="ss">'default</span> <span class="no">nil</span> <span class="ss">:family</span> <span class="s">"Aporetic Sans Mono"</span> <span class="ss">:height</span> <span class="mi">160</span><span class="p">)</span>
  <span class="c1">;; Set your favourite font for elements that are designed to always</span>
  <span class="c1">;; be monospaced.  The height SHOULD BE a floating point, which is</span>
  <span class="c1">;; interpreted as relative to the `default'.</span>
  <span class="p">(</span><span class="nv">set-face-attribute</span> <span class="ss">'fixed-pitch</span> <span class="no">nil</span> <span class="ss">:family</span> <span class="s">"Aporetic Serif Mono"</span> <span class="ss">:height</span> <span class="mf">1.0</span><span class="p">)</span>
  <span class="c1">;; Same as above for proportionately spaced elements.  Make any</span>
  <span class="c1">;; buffer proportionately spaced by enabling the `variable-pitch-mode'.</span>
  <span class="c1">;;</span>
  <span class="c1">;; [ NOTE: If you use the Modus themes or derivatives, set</span>
  <span class="c1">;;   `modus-themes-mixed-fonts', load the theme for the option to</span>
  <span class="c1">;;   take effect, and then enable `variable-pitch-mode':</span>
  <span class="c1">;;   spacing-sensitive elements like Org tables and code blocks will</span>
  <span class="c1">;;   remain monospaced. ]</span>
  <span class="p">(</span><span class="nv">set-face-attribute</span> <span class="ss">'variable-pitch</span> <span class="no">nil</span> <span class="ss">:family</span> <span class="s">"Aporetic Sans"</span> <span class="ss">:height</span> <span class="mf">1.0</span><span class="p">)</span>

  <span class="c1">;; I have never seen a user say "no" to loading a theme they have</span>
  <span class="c1">;; downloaded.  Technically, any Elisp file can run arbitrary code,</span>
  <span class="c1">;; so this is not doing much on the security front.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">custom-safe-themes</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">use-short-answers</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">read-answer-short</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">help-window-select</span> <span class="no">t</span><span class="p">)</span> <span class="c1">; also check `display-buffer-alist' below</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">help-window-keep-selected</span> <span class="no">t</span><span class="p">)</span> <span class="c1">; Emacs 29</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">find-library-include-other-files</span> <span class="no">nil</span><span class="p">)</span> <span class="c1">; Emacs 29</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">window-combination-resize</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">save-interprogram-paste-before-kill</span> <span class="no">t</span><span class="p">)</span>
  <span class="c1">;; Do not jump to the current line in `*occur*' buffers.  The reason</span>
  <span class="c1">;; is that you are already on that line: you want to do `occur' to</span>
  <span class="c1">;; get more than that (and, presumably, to do something with the</span>
  <span class="c1">;; results such as to edit them with `occur-edit-mode').</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">list-matching-lines-jump-to-current-line</span> <span class="no">nil</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">completion-category-defaults</span> <span class="no">nil</span><span class="p">))</span>

<span class="c1">;;;; Save minibuffer histories</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">savehist</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="nv">savehist-mode</span> <span class="mi">1</span><span class="p">))</span>

<span class="c1">;;;; Delete the selected text when inserting new text</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">delsel</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="nv">delete-selection-mode</span> <span class="mi">1</span><span class="p">))</span>

<span class="c1">;;;; Bookmarks</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">bookmark</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; Emacs 29 displays a bookmark icon on the fringe.  Many people</span>
  <span class="c1">;; have asked me what that thing is.  I also think it is confusing.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">bookmark-fringe-mark</span> <span class="no">nil</span><span class="p">)</span>
  <span class="c1">;; Write changes to the bookmark file as soon as 1 modification is</span>
  <span class="c1">;; made (addition or deletion).  Otherwise Emacs will only save the</span>
  <span class="c1">;; bookmarks when it closes, which may never happen properly</span>
  <span class="c1">;; (e.g. power failure).</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">bookmark-save-flag</span> <span class="mi">1</span><span class="p">))</span>

<span class="c1">;;;; Dired</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">dired</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; Most people I have talked to prefer a single Dired buffer.</span>
  <span class="c1">;; Personally I like the many Dired buffers, but I understand why</span>
  <span class="c1">;; this feels overwhelming.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-kill-when-opening-new-dired-buffer</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-auto-revert-buffer</span> <span class="nf">#'</span><span class="nv">dired-directory-changed-p</span><span class="p">)</span> <span class="c1">; also see `dired-do-revert-buffer'</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-clean-up-buffers-too</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-clean-confirm-killing-deleted-buffers</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-recursive-copies</span> <span class="ss">'always</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-recursive-deletes</span> <span class="ss">'always</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">delete-by-moving-to-trash</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-create-destination-dirs</span> <span class="ss">'ask</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">dired-create-destination-dirs-on-trailing-dirsep</span> <span class="no">t</span><span class="p">)</span> <span class="c1">; Emacs 29</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">wdired-create-parent-directories</span> <span class="no">t</span><span class="p">))</span>

<span class="c1">;;;; Isearch</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">isearch</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; ;; Enable those to make "package install" match those words with</span>
  <span class="c1">;; ;; anything in between.  I think this is the single best tweak I</span>
  <span class="c1">;; ;; ever made.</span>
  <span class="c1">;;</span>
  <span class="c1">;; (setq search-whitespace-regexp ".*?")</span>
  <span class="c1">;; (setq isearch-lax-whitespace t)</span>
  <span class="c1">;; (setq isearch-regexp-lax-whitespace nil)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">isearch-lazy-count</span> <span class="no">t</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">lazy-count-prefix-format</span> <span class="s">"(%s/%s) "</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">lazy-count-suffix-format</span> <span class="no">nil</span><span class="p">))</span>

<span class="c1">;;;; Diff</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">diff</span>
  <span class="ss">:ensure</span>
  <span class="ss">:config</span>
  <span class="c1">;; You cannot expect the syntax highlighting of themes to look</span>
  <span class="c1">;; equally readabable against what typically are red and green</span>
  <span class="c1">;; backgrounds.  This should be opt-in by default, not opt-out.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">diff-font-lock-syntax</span> <span class="no">nil</span><span class="p">))</span>

<span class="c1">;;;; Ediff</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">ediff</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; Ediff is virtually unusable without those.  Especially on tiling</span>
  <span class="c1">;; window managers.  But even on a regular desktop environment it is</span>
  <span class="c1">;; confusing and cumbersome to have the control panel in another</span>
  <span class="c1">;; frame.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">ediff-split-window-function</span> <span class="ss">'split-window-horizontally</span><span class="p">)</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">ediff-window-setup-function</span> <span class="ss">'ediff-setup-windows-plain</span><span class="p">))</span>

<span class="c1">;;;; SHR</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">shr</span>
  <span class="ss">:ensure</span> <span class="no">nil</span>
  <span class="ss">:config</span>
  <span class="c1">;; t is bad for accessibility and generally awkward for HTML email</span>
  <span class="c1">;; (especially with dark themes).</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">shr-use-colors</span> <span class="no">nil</span><span class="p">)</span>
  <span class="c1">;; This option should not exist, given `variable-pitch-mode'.</span>
  <span class="c1">;; Furthermore, its default value runs counter to almost everything</span>
  <span class="c1">;; else in Emacs which just uses the `default' face.</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">shr-use-fonts</span> <span class="no">nil</span><span class="p">))</span>

<span class="c1">;;;; Control the display of common ancillary windows</span>

<span class="c1">;; Always focus common ancillary windows.  Place them in a window</span>
<span class="c1">;; already occupied by their respective major mode or below the</span>
<span class="c1">;; current window.</span>
<span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'display-buffer-alist</span>
             <span class="o">'</span><span class="p">((</span><span class="nb">or</span> <span class="o">.</span> <span class="p">((</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">occur-mode</span><span class="p">)</span>
                      <span class="p">(</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">grep-mode</span><span class="p">)</span>
                      <span class="p">(</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">Buffer-menu-mode</span><span class="p">)</span>
                      <span class="p">(</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">log-view-mode</span><span class="p">)</span>
                      <span class="p">(</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">help-mode</span><span class="p">)))</span>
               <span class="p">(</span><span class="nv">display-buffer-reuse-mode-window</span> <span class="nv">display-buffer-below-selected</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">body-function</span> <span class="o">.</span> <span class="nv">select-window</span><span class="p">)))</span>

<span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'display-buffer-alist</span>
             <span class="o">'</span><span class="p">(</span><span class="s">"\\`\\*\\(Org \\(Select\\|Note\\)\\|Agenda Commands\\)\\*\\'"</span> <span class="c1">; the `org-capture' key selection, `org-add-log-note', and agenda dispatcher</span>
               <span class="p">(</span><span class="nv">display-buffer-in-side-window</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">dedicated</span> <span class="o">.</span> <span class="no">t</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">side</span> <span class="o">.</span> <span class="nv">bottom</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">slot</span> <span class="o">.</span> <span class="mi">0</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">window-parameters</span> <span class="o">.</span> <span class="p">((</span><span class="nv">mode-line-format</span> <span class="o">.</span> <span class="nv">none</span><span class="p">)))))</span>

<span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'display-buffer-alist</span>
             <span class="o">'</span><span class="p">((</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">calendar-mode</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">display-buffer-reuse-mode-window</span> <span class="nv">display-buffer-below-selected</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">mode</span> <span class="o">.</span> <span class="p">(</span><span class="nv">calendar-mode</span> <span class="nv">bookmark-edit-annotation-mode</span> <span class="nv">ert-results-mode</span><span class="p">))</span>
               <span class="p">(</span><span class="nv">inhibit-switch-frame</span> <span class="o">.</span> <span class="no">t</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">dedicated</span> <span class="o">.</span> <span class="no">t</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">window-height</span> <span class="o">.</span> <span class="nv">fit-window-to-buffer</span><span class="p">)))</span>

<span class="p">(</span><span class="nv">add-to-list</span> <span class="ss">'display-buffer-alist</span>
             <span class="o">'</span><span class="p">((</span><span class="nv">derived-mode</span> <span class="o">.</span> <span class="nv">reb-mode</span><span class="p">)</span> <span class="c1">; M-x re-builder</span>
               <span class="p">(</span><span class="nv">display-buffer-reuse-mode-window</span> <span class="nv">display-buffer-below-selected</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">inhibit-switch-frame</span> <span class="o">.</span> <span class="no">t</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">window-height</span> <span class="o">.</span> <span class="mi">4</span><span class="p">)</span> <span class="c1">; note this is literal lines, not relative</span>
               <span class="p">(</span><span class="nv">dedicated</span> <span class="o">.</span> <span class="no">t</span><span class="p">)</span>
               <span class="p">(</span><span class="nv">preserve-size</span> <span class="o">.</span> <span class="p">(</span><span class="no">t</span> <span class="o">.</span> <span class="no">t</span><span class="p">))))</span>

<span class="c1">;;;; ESSENTIAL packages to install</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nv">vertico</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="nv">vertico-mode</span> <span class="mi">1</span><span class="p">))</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nv">marginalia</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="nv">marginalia-mode</span> <span class="mi">1</span><span class="p">))</span>

<span class="c1">;;;; VERY USEFUL but not essential packages</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">orderless</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:config</span>
  <span class="p">(</span><span class="k">setq</span> <span class="nv">completion-styles</span> <span class="o">'</span><span class="p">(</span><span class="nv">orderless</span> <span class="nv">basic</span><span class="p">)))</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nv">consult</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="c1">;; All commands have their utility, but those are commonly needed.</span>
  <span class="ss">:commands</span> <span class="p">(</span><span class="nv">consult-buffer</span> <span class="nv">consult-line</span> <span class="nv">consult-outline</span> <span class="nv">consult-find</span> <span class="nv">consult-grep</span><span class="p">))</span>

<span class="p">(</span><span class="nb">use-package</span> <span class="nv">embark</span>
  <span class="ss">:ensure</span> <span class="no">t</span>
  <span class="ss">:bind</span>
  <span class="c1">;; Embark is helpful in every context, though there are other ways</span>
  <span class="c1">;; to do what it does.  Where it stands out is in its ability to</span>
  <span class="c1">;; deal with all the minibuffer results.  The equivalent of those</span>
  <span class="c1">;; two commands should be a core Emacs functionality.</span>
  <span class="p">(</span> <span class="ss">:map</span> <span class="nv">minibuffer-local-map</span>
    <span class="p">(</span><span class="s">"C-c C-c"</span> <span class="o">.</span> <span class="nv">embark-collect</span><span class="p">)</span>
    <span class="p">(</span><span class="s">"C-c C-e"</span> <span class="o">.</span> <span class="nv">embark-export</span><span class="p">))</span>
  <span class="ss">:config</span>
  <span class="c1">;; Needed for correct exporting while using Embark with Consult commands.</span>
  <span class="p">(</span><span class="nb">use-package</span> <span class="nv">embark-consult</span>
    <span class="ss">:ensure</span> <span class="no">t</span>
    <span class="ss">:after</span> <span class="nv">consult</span><span class="p">))</span>

<span class="c1">;; Useful when combined with `delete-by-moving-to-trash'.</span>
<span class="p">(</span><span class="nb">use-package</span> <span class="nv">trashed</span>
  <span class="ss">:ensure</span> <span class="no">t</span><span class="p">)</span>
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: The echo of my steel</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-04-29-echo-of-my-steel/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-04-29-echo-of-my-steel/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Where aromatic rose
and blackthorn shrub
spring from shared soil
you find what you seek
once you realise
that the mountain-god
heeds my prayer
as the echo
of my steel
</code></pre></div></div>

<p>I wrote the poem in the context of this journal entry: <a href="https://protesilaos.com/commentary/2026-04-29-doing-what-i-must/">Doing what I
must</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Doing what I must</title>
      <description>An excerpt from my journal in which I comment on how I handle my everyday affairs in my land while respecting the greater magnitudes</description>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-29-doing-what-i-must/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-29-doing-what-i-must/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal in which I comment on how I handle
my everyday affairs in my land while respecting the greater magnitudes.</p>

<hr />

<p>The hours are shorter when you have no idle moments. I have not had
the chance to write much because I am preoccupied with time-sensitive
tasks around my land on top of everything I do on the computer. I was
scheduled to have a video call in ~30 minutes but it got rescheduled,
so I am finding the opportunity to write this note.</p>

<p>Spring is the time of the year to plant vegetables and prepare
everything for the coming summer. Irrigation must be reliable and the
land should be clear of anything that cannot be controlled. Tall grass
represents a threat in two ways: (i) potentially venomous snakes may
take cover in it and (ii) once it gets dry it is a fire hazard.</p>

<p>A design choice for my land is to not pave anything that is not
essential. There is the foundation of my house, made out of concrete,
a one metre buffer around my house consisting of the extension of that
same concrete, and everything else is just soil with vegetation. The
cost for this arrangement is maintenance work to keep the wilderness
in check.</p>

<p>Controlling the grass is a time-consuming endeavour because it is a
manual process. I choose not to uproot it and am against the use of
chemicals for such a task. I carefully remove only what represents
some kind of danger to my continued presence here. The rest I control
and take care of.</p>

<p>Doing it carefully is important to spot new plants that take form.
This morning I discovered several more blackthorn offshots while I was
in the process of transplanting a few aromatic roses. They are less
than ten centimetres tall right now, though they will quickly gain
height. I will not be surprised if they even start bearing fruit in
the summer of 2027.</p>

<p>Many of my roses will blossom soon. They look beautiful while their
aroma makes me feel comfortable. I transplant them at the edges of my
land to form a perimeter. I enjoy the aesthetics while I also do it
for practical reasons. Plants keep the soil together.</p>

<p>Having the roots in the ground is among the best forms of insurance
one can get against soil erosion. This is true for the most hunble
blade of grade to the most imposing oak tree. Without plants, the soil
is dispersed easily.</p>

<p>Many farmers here will blithely cut down or poison everything, only to
say “god help us” when they get a heavily rainy season, such as the
past winter, which washes away parts of their land. I do not share
their outlook and feel nothing for their plight.</p>

<p>The mountain has its own logic. It answers no prayers. You cannot do
whatever you desire. It is better to think of it as an organism in its
own right, even though this may sound like mumbo jumbo to you. The
shape of the land itself creates certain conditions you must be aware
of, such as for the flow of rainwater and the direction of the
strongest winds. Where plants grow and what sort of conditions does
their growth create to the soil, to the presence of insects and birds.
These are all factors that are there. They form the situation you must
be aware of. You may choose to ignore them, but that does not make
them irrelevant.</p>

<p>Thus while god may one day answer your calls, continue doing what you
must, deliberately and decisively. Have forethought, understand the
mechanics of the system you are a part of, and conduct yourself in a
manner that respects, but does not fear, the greater magnitudes of
this world.</p>

<p>A trap many philosophers fall into is that of seeking the abstract
among the abstractions, while losing sight of the here-and-now of
their quotidian experience. The human condition is such where our body
imposes certain inescapable patterns of behaviour, while our mind
retains the capacity to fathom that which is transcendent. The key is
to find a balance, else we suffer.</p>

<p>I find that the notion of an abstract god is ultimately unhelpful as
such. Not because the idea is not worthwhile, but merely owning to the
fact that abstractions are necessarily not concrete. There must be
narratives that have immediate utility in what we do everyday. It
helps little, if at all, to pray to some deity in the heavens while
you do not recognise anything greater than you in your immediate
surroundings. The absence of an intermediate life form between
humanity and divinity easily devolves into a rudderless mode of
living. Even when that is couched in terms of ceremonial theism, of
talking to your priest and attending the liturgy, it remains
inherently atheistic in its day-by-day expression.</p>

<p>To picture the mountain, the sea, the forest, the earth at-large as
intermediate mountain-god, sea-god, forest-god, earth-god is not to
deny the possibility of that which is absolute, for there is a common
in the multitude of all that is—the mind inevitably discerns those
patterns in the cosmos. Think of what envelops, nourishes, and
outlives you as greater than you. It is a recognition of how things
are in our world, but also a means of keeping yourself in check,
specifically by not mistaking your ego as the master of this world and
the centre around which everything revolves.</p>

<p>I am here, not in the heavens. My condition demands that I have
situational awareness in order to thrive. When I admit that I am not
the most superior life form on this planet, for example, I account for
what my environment renders viable. I “respect” the rain-god, for
instance, by taking care of my land so that it is resilient and robust
to the forces of erosion. When I cut down the tall grass, I “worship”
the fire-god by acknowledging how easy it is to suffer irreparable
damage from wildfires. And so on.</p>

<p>I refer to them as “gods” in an artistic way. This is a metaphor,a
figment of the imagination, which helps me describe in a few words a
complex system whose workings can both benefit and harm me. It is my
responsibility to find what is benign by remaining alert, asking
questions, and seeking knowledge.</p>

<p>This “respect” or “worship” is not symbolic. It is neither expressed
through nor exhausted in rituals. There are no special garments I must
wear or certain words I have to chant. There are no intermediaries of
any sort; no hierophants who reveal mysteries to the initiates. It is
all about a life of readiness, a life of determination, a life of
unflinching resolve to do what is necessary. There is an immediate
feedback loop between my deeds and their consequences, which I find
invigorating. The outcomes keep me honest to my word, while they serve
as a reminder of the limits as well as the potential my power has.</p>

<p>Against this backdrop, I continue labouring with the same enthusiasm I
had in the beginning. Which now inspires me to write this poem:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The echo of my steel

Where aromatic rose
and blackthorn shrub
spring from shared soil
you find what you seek
once you realise
that the mountain-god
heeds my prayer
as the echo
of my steel
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Philosophy: violence, safe spaces, and inevitability</title>
      <description>In this video I explain the connection between violence and safe spaces.</description>
      <pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/books/2026-04-25-violence-safe-spaces-inevitability/</link>
      <guid isPermaLink="true">https://protesilaos.com/books/2026-04-25-violence-safe-spaces-inevitability/</guid>
      <content:encoded><![CDATA[<p>In this ~30-minute video, I talk about the relationship between
violence and safe spaces. How violence carves a space out of the
wilderness and how it keeps it free from danger. I bring up several
examples and also discuss the concept of inevitability as one of the
three fates. The point is to accept the world as-is; to understand
that there are things we cannot opt out of even if we do not like
them. Then, we may carry out certain deeds without taking on a burden
that is not ours.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: looking away from the camera</title>
      <description>Close up picture of me looking away from the camera.</description>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-04-23-looking-sideways/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-04-23-looking-sideways/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs spontaneous live stream on Denote, TMR, and more at 19:00 Europe/Athens</title>
      <description>I will continue my package maintenance work for Emacs, focusing on Denote and TMR.</description>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-23-emacs-spontaneous-live-denote-tmr/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-23-emacs-spontaneous-live-denote-tmr/</guid>
      <content:encoded><![CDATA[<p>[ The video will be recorded. ]</p>

<p>This is a spontaneous live stream. The stream starts in ~20 minutes. I
will continue maintaining my packages. My plan is to start with Denote
and then move to TMR. Depending on how I do, I will check some of my
other packages as well.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: the dogman (technically not a selfie)</title>
      <description>Picture of me holding my four dogs on the leash while on a walk through some built-up area.</description>
      <pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-04-22-the-dogman/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-04-22-the-dogman/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live stream with Sacha Chua on 2026-04-30 17:30 Europe/Athens</title>
      <description>I will do a live stream together with Sacha Chua where we will do some programming on Emacs.</description>
      <pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-22-emacs-live-with-sacha-chua/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-22-emacs-live-with-sacha-chua/</guid>
      <content:encoded><![CDATA[<p>Mark your calendar for next Thursday. I will do another live stream
with Sacha Chua. We will talk about Emacs and I will check on her
progress since our last meeting. I am looking forward to it!</p>

<p>Note that the event will be recorded.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “Do not ask me” by Manos Loizos</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'Do not ask me'.</description>
      <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-04-21-loizos-do-not-ask-me/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-04-21-loizos-do-not-ask-me/</guid>
      <content:encoded><![CDATA[<p>For this entry in the series I have picked a song from the collection
of composer and songmaker Manos Loizos. Manos was among the most
influential artists of his era. <em>Do not ask me</em> is an old song that
remains relevant: <a href="https://www.youtube.com/watch?v=iW26ERE2lnE">https://www.youtube.com/watch?v=iW26ERE2lnE</a>.</p>

<p>Below are the lyrics, my translation of them, and further comments.</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>Do not ask me

Singer:  Manos Loizos
Lyrics:  Lefteris Papadopoulos
Music:   Manos Loisos


The machine guns have quietened
The towns have been evacuated and closed down
A frozen north wind
sweeps the desolate land

Soldiers come-go
Asking why they fought
and you turn silent
you place the finger
to find the wound

Do not ask me, I do not remember
Do not ask me, do not ask me, do not ask me
Do not look at me, I am afraid of you
Do not look at me, do not ask me, do not look at me

Night comes to the polity
The snow covers the rooftops
A truck loads up
and cuts the silence in two

Patrol on the streets
and a voice that issues orders
and you turn silent
you place the finger
to find the wound
</code></pre></div></div>

<p><em>Do not ask me</em> describes some of the horrors of war. Deserted lands
and broken people abound. The average soldier was recruited under the
pretence of moral superiority, of fighting for some noble cause, only
to question everything after the fact; after they have been treated as
expendable.</p>

<p>The war apparatus relies on impressionable folk who have yet to form a
coherent and questioning view of the world. By the time they figure
out how things work, they have already been given as fodder to the
cannons or their vitality has been snuffed out. Whatever shell of a
person remains subsists in desperation, while decision-makers and
their corporate cronies are enjoying their newfound wealth.</p>

<p>War is devastating at such a mind-boggling scale in part because those
who decide in its favour are not directly involved in the fighting. It
would have been different if the president was leading the charge in
his threat to erase an entire civilisation. Would genocide be
happening if the prime minister was on the front lines? Would forever
wars be a thing if all decision-makers were to form the vanguard as a
matter of principle? I doubt it.</p>

<p>As with private matters, corruption occurs when actions are decoupled
from their consequences or, at least, when there is a good chance that
the decoupling will occur. Once combined with the power to determine
the fate of nations, such corruption becomes an inexhaustible capacity
for inhumanity.</p>

<p>Plans are drawn by policy wonks behind closed doors. The same core
message is disseminated on repeat under the guise of impartial
journalism through a network of channels that are owned by the
oligarchs (i.e. the beneficiaries of the regime; a regime which claims
the moral high ground). The moneymen who pull the strings connive on
how to maximise their gains while socialising the costs.</p>

<p>Against this backdrop, the titular plea to suspend all questions is
the veteran’s coping mechanism in the face of torment as well as the
realisation of deep-seated misanthropy among the elites. Some veterans
know they were offered as blood sacrifice to the altars of greed, yet
cannot muster the strength to argue anymore. Such is their broken
heart that they even fear the poetic “you”, which is presented as a
benevolent caregiver figure.</p>

<p>This second person shows compassion. They are not there to make
probing questions. Their role is to provide much-needed relief from
what has transpired. As such, they focus on treating the wounds. We
find here the interpersonal spark that gives people hope, including
those who are dead inside.</p>

<p>It is the genuine caring for another in times of strife and
uncertainty: the solidarity that ordinary people show when placed
under collective duress. It does not conform with the profiteer’s
calculus. It comes without strings attached. There is no fine print
and hidden fees. It manifests as a gentle touch; a reminder that there
is beauty to be found in the little things even when all seems lost.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Omitting the surname</title>
      <description>From now on I will only be called 'Protesilaos' instead of 'Protesilaos Stavrou'.</description>
      <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/news/2026-04-21-omitting-the-surname/</link>
      <guid isPermaLink="true">https://protesilaos.com/news/2026-04-21-omitting-the-surname/</guid>
      <content:encoded><![CDATA[<p>I will stop using my legal name online. Henceforth I am identifying as
“Protesilaos”. The legal name—Protesilaos Stavrou—will remain in
place for practical purposes.</p>

<p>My surname is “Stavrou” (Stávrou, Σταύρου). It is the genitive case of
the given name “Stavros” (Stávros, Σταύρος), which is related to the
Greek word for “cross” (σταυρός). As is the norm among Greeks, this is
the family name on my father’s side.</p>

<p>Stavros (or variants) is a common name mostly among males but also for
females (Stavri, Stavriani, Stavroula). By contrast, Protesilaos is an
extremely rare name of ancient origin. I do not know anyone who has
it.</p>

<p>Because of the rarity or maybe uniqueness of my name, I never needed
any qualifiers to specify who I am. People call me “Protesilaos” or
one of its shortened variants (Protos, Proto, Prote, Prot). This also
happens in places where others would normally be addressed by their
surname. For example, public servants or bank clerks will
spontaneously default to “Mr. Protesilaos” (κύριε Πρωτεσίλαε).</p>

<p>“Protos” means “first” while “laos” or “las” means “the people”.
Several Greek names have laos/las as a constituent: Agisilaos,
Charilaos, Menelaos, Nikolaos. “Protesilaos” is a posthumous title
bestowed upon the legendary hero of the Trojan War Iolaos (again,
“laos”), perhaps (i) to immortalise his initiative as the first among
his people to proceed through self-sacrifice and also (ii) to exalt
the belief in the primacy of the common good over personal gain.</p>

<p>I am no hero of legend. Mine is but an uneventful mountain life. I do
nonetheless have a strong sense of contributing to the commons however
I can. Everything I have published, for instance, is available for
free and in freedom. These are my deeds, not my claims.</p>

<p>I am on good terms with everyone in my family. Though I do not feel
any sense of belonging to them. We talk from time to time, have fun,
and that is all. I otherwise know very little about their everyday
affairs. Their actions do not define me.</p>

<p>I have been away from my homeland for two decades and do not show any
particular interest in my Greek nationality. Even my accent in English
does not sound like that of the average person from Greece. In Cyprus,
where I have been living for many years already, I am not truly a
local but not a real foreigner either. I have friendly relationships
with everyone around me though, again, I am not connected to them in
any special way.</p>

<p>I am not religious, meaning that I do not partake in the single most
important expression of religiosity: communal events. This will not
change, as I feel no attraction to religion. Not even towards the
ethnic Greek religion which I like aesthetically and which I recognise
as the closest to my way of living.</p>

<p>I do not participate in the commons in some other capacity, such as
through politics. I am an outsider and do not have the enthusiasm to
get involved. Sport would have been the exception, as I remain at the
peak of my fitness, but there are no sporting events in my region: it
is a sparsely populated area.</p>

<p>Omitting the surname is a recognition of my lived experience. There is
no “my people” and no legacy to pass on. I just mind my business in
this patch of earth. The rarity of my name turns out to be the rarity
of my person or, perhaps, the rarity of my situation.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “The world that changes” by Alkinoos Ioannidis</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'The world that changes'.</description>
      <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-04-17-alkinoos-the-world-that-changes/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-04-17-alkinoos-the-world-that-changes/</guid>
      <content:encoded><![CDATA[<p>For this entry in the series, I have picked <em>The world that changes</em>
by renowned songmaker Alkinoos Ioannidis: <a href="https://www.youtube.com/watch?v=ddiCJ76fPbs">https://www.youtube.com/watch?v=ddiCJ76fPbs</a>.
What I discern in the songs of Alkinoos is originality as well as
variety in the images they evoke. Not only are they masterful
musically, they also are profound intellectually.</p>

<p>Below are the original lyrics, my faithful translation of them, and
further comments on what all this is about.</p>

<p>Other entries I have written related to Alkinoos Ioannidis:</p>

<ul>
  <li><a href="https://protesilaos.com/interpretations/2022-06-28-alkinoos-mirror/">Mirror</a> (2022-06-28)</li>
  <li><a href="https://protesilaos.com/interpretations/2022-09-03-alkinoos-space-and-time/">Out of space and time</a> (2022-09-03)</li>
</ul>

<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 world that changes

Singer:  Alkinoos Ioannidis
Lyrics:  Alkinoos Ioannidis
Music:   Alkinoos Ioannidis


Large tree is the sigh
also large is its shadow
spreads its roots to the soul
to the body [it spreads] its branches
Just as a bird spreads
its wings against the air
the tree becomes a feast
and the day flaps

How many times should I tell you
how many to convey it to you?
Shall I tell you in whispers
or shall I sing it to you?
I will tell you in whispers
the way the glance speaks
which hides in the silence
all of the world's blood

This world that changes
how it resembles you, how it resembles you
This world that changes
it scares me, it scares me

Losers we seem to be, then
at the tour of death
in the frost of the definitive
at the fear of the invisible
But you will forever be lost
only if you so choose
like how the music chooses
the expressions and the words

This world that changes
how it resembles you, how it resembles you
This world that changes
it scares me, it scares me
</code></pre></div></div>

<p>This is a song about a person who experiences stagnation and is now
confronted with the prospect of change. Humans are animals of habit.
We get accustomed even to situations that are not benign to us. This
is how we end up with the concept of “the devil you know”. The
prevailing conditions will bedevil us, yet we remain reluctant to
introduce thoroughgoing changes out of fear that we might end up with
something worse.</p>

<p>Stagnation, of the sort here considered, breeds pessimism. Every
reform is treated as the harbinger of a greater evil. It is thus to be
avoided at all costs. The person remains stuck. Grief takes hold. Its
roots grow deep and get entangled everywhere. This situation
normalises itself through the force of habit. Only then may the tree
of disappointment be perceived as a feast. It becomes a celebration of
itself, which is a metaphor for how a person will cling on to the
devil they know, as if they were having fun the whole time.</p>

<p>Now why would the artist describe stagnation in terms of something as
beautiful and peaceful as a tree and a bird? It is to emphasise how
the logic of “the devil you know” works: it impresses in us the
feeling that whatever prevailing conditions are not too bad after
all—they may even be wonderful in some twisted way! This is the part
where we find excuses to not make any changes and, thus, to conceal
the attendant fear.</p>

<p>The poetic first person eventually musters the courage to speak about
their dread. They decide to do so as discreetly as possible by
whispering. Here the artist communicates a sense of emotional
intensity: the whisper is likened to the silent yet decisively
passionate glance. We know that stare, that moment when everything is
said without words, when something pierces us and time stops for a
little while. The blood in the second verse is a reference to passion.
It is how we get all excited in those moments; a telltale sign of an
emotionally charged experience.</p>

<p>Not all is lost though. Losers are those who declare themselves thus,
who choose to quit without trying in earnest. They are the people who
make the mistake of befriending their fears and making best buddies
with their own inhibitions. When we choose to be losers, we condition
our life accordingly. This is exactly how a given rhythm only enables
certain lyrics, while precluding all others.</p>

<p>All consequential decisions delineate the horizon of possible
subsequent actions. This is because we live with their consequences
and, thus, operate within the confines of the state of affairs they
engender. Choosing to fight is difficult for this exact reason: it
needs longer-term commitment.</p>

<p>Whether one is a fighter or a loser is a matter of outlook. That can
change. It is embedded as lifestyle through everyday affairs. To put
the desk in order, for example, is a task that requires some
relatively minor effort against inertia. Achieving that engenders the
feeling that the immediate surroundings are controllable or, in other
words, that our actions can indeed change our world one tiny bit at a
time. By gradually increasing the intensity while widening the scope
of our initiative, we can change our ways.</p>

<p>Fear, then, need not be interpreted as an evil. It simply is a
mechanism which brings some reality to the foreground of our
conscience. What matters is how we respond to it. This is about our
attitude and the kind of resolve we show. To recognise one’s fear, and
perhaps to share it with another, as does the poetic first person in
this song, is the precondition for overcoming said fear.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>That which is inescapable</title>
      <description>An entry from my journal in which I comment about processes in our world that do not fit into some neat divide between right or wrong.</description>
      <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-16-that-which-is-inescapable/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-16-that-which-is-inescapable/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal in which I comment about processes
in our world that do not fit into some neat divide between right or
wrong.</p>

<hr />

<p>Twenty minutes to midnight. I am back from the nightly hike. As
always, I have my four dogs for company. Hoot… Hoot… Hoot… The
owl is nearby. It is here to hunt and kill for its survival. There is
no point in arguing whether this is right or wrong. Those are narrow
categories that apply to a subset of human affairs. The owl simply
acts. Even though there is some variability to its behaviour, it is
framed by an overarching constraint that it cannot modify. To be a
bird of prey is the predicament its nature makes unavoidable.</p>

<p>The same is true for human volition. Whatever manoeuvring space is
available is ultimately delineated by a prior condition that the
individual cannot escape from. Like the birds of prey, human has to
kill in order to live; kill at all times. Whether this is meat or
vegetables is secondary to the fact that some form of life has to be
consumed.</p>

<p>For the cosmos as a whole, there is no loss. These are the workings of
transfiguration. The same star dust continues to shape-shift,
sometimes as a galaxy, at others as a puppy. What comes goes, only to
come again. A circular motion that does not repeat itself in exact
copies. An everlasting helix.</p>

<p>A dog with sufficient size, strength, and drive, such as any of my
dogs, will attack and eliminate cats. Not out of hunger, but to
preemptively reduce the number of competitors. It does not matter that
I am the guarantor of food. They are still hardwired to treat “others”
with extreme prejudice.</p>

<p>Plants are no different. It is only after I clearer the bramble from
most of my land, and kept the space open, that almond trees and
blackthorns, among others, started to grow. Some forms of vegetable
life cooperate with each other, while others compete for land, water,
air, and sunshine.</p>

<p>Everywhere I look, I find tension and release, attraction and
repulsion, friendship and enmity, leadership and subservience. All
nested towards infinity. None of this is specific to human beings. Yet
many think they are above the rest. They fancy themselves are purely
spiritual beings who occupy some higher moral ground when, in reality,
we are all governed by the same forces that non even the sun can defy.</p>

<p>Our world, the small milieu of human affairs, is heading full speed
towards a planet-wide conflagration. The Europeans are shifting to a
militarised economy as they remain committed to their forever war
against Russia. The Japanese are casting aside whatever nominal
pacifism they were once committed to in their renewed ambition to
control larger parts of east Asia while providing an antipode to the
Chinese. China will eventually transmogrify into what Westerners think
it already is. And so on.</p>

<p>It is understandable why we want to find someone to blame for all
this. A person or group has to be responsible and there must be some
grand plan behind it all. We cannot accept that we have no control
over the framework we operate in. Even in our darkest hours, we search
for a good story with unlikely heroes and shady characters. Whether it
is the imperialists, the globalists, the nationalists, the
militarists, the fundamentalists, the Zionists, the Jihadis, and more,
each adds a layer of explanatory narrative on top of processes that
are decisively beyond their reach.</p>

<p>Humans are compelled into action by powerful drives they cannot opt
out of. To survive, which entails cooperation and competition.
Instrumental are the forces that lead humans to pursue conquest,
glory, and domination. Even the otherwise innocuous outlook of the
explorer, be it in physical or mental space, bestows some kind of
advantage vis-à-vis one’s competition; an advantage that can be
exploited when necessary. Necessity guides us.</p>

<p>Even when there is no warfare, society at-large experiences the
incessant transfiguration that creates some and annihilates others.
From employment to unemployment, success to failure, enrichment to
impoverishment. It flows, it comes, it goes. A macro view of history
exposes the same patterns, of shifting political geographies, of
alliances that evolve, of enemies that become friends before
squabbling again, of intellectuals who believe they learn from the
past as they boldly move ever closer to some supposed enlightenment
only to repeat the mistakes of their predecessors.</p>

<p>There is no rest. No form of life stays in place. An individual
person, which in actuality is a system of systems, also changes
continuously: eating, moving, sleeping, ageing… The entropy of our
entire reality is the precondition for its configuration anew. It does
not come from nothing and will not go towards nothing. It simply is.</p>

<p>Yet I cannot help but recognise my emotions. I feel disappointed that
we cannot rely on our common sense to manage our affairs. It is not
“common”, alas! The distribution of character traits and talents is
such. Some have a more pronounced rational side. Others are led by
emotion. There is no right or wrong, no better or worse. This may even
be the optimal arrangement if we think of it in terms of economising
resources at scale: have few that are inventors and pioneers, and let
the many be capable of replicating the results. An expensive
computation, which amounts to some discovery, need only be performed
once before it is reproduced much more cheaply through imitation.</p>

<p>I learnt how to program, for example. I merely follow in the footsteps
of others who had to do all the hard work of inventing the relevant
paradigms and clearing the path as it were. If so, I cannot bemoan the
distribution of skills among our kind. It ultimately is what defines
life as we experience it, both for the parts we cherish and those we
loath.</p>

<p>Some will try to remake people in a certain image, such as through
indoctrination, religious absolutism, or even eugenics and designer
babies. This is the exploratory part, underpinned by the want for
safety. The uniform or the homogeneous is that which can be predicted
and, thus, that which can be measured and guarded against. Yet the
explorer is at odds with the underlying motivation to find a
totalising integrating force. They need sufficient openendedness to
make excursions that others have not even fathomed.</p>

<p>Perhaps we can have different types of people with a distribution
unlike what we are used to. It might even be viable. Though it may
also reveal to those daring souls that they did not know what they
were wishing for.</p>

<p>Who is to blame? Nobody. Every form of life does that which its
condition renderes inescapable.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: new modus-themes-exporter package live today @ 15:00 Europe/Athens</title>
      <description>I am doing a live stream where I will develop the new modus-themes-exporter package live.</description>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-13-emacs-live-develop-modus-themes-exporter-package/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-13-emacs-live-develop-modus-themes-exporter-package/</guid>
      <content:encoded><![CDATA[<p><strong>UPDATE 2026-04-13 18:00 +0300:</strong> I wrote the package during the
stream: <a href="https://github.com/protesilaos/modus-themes-exporter">https://github.com/protesilaos/modus-themes-exporter</a>.</p>

<hr />

<p>[ The stream will be recorded. You can watch it later. ]</p>

<p>Today, the 13th of April 2026, at 15:00 Europe/Athens I will do a live
stream in which I will develop the new <code class="language-plaintext highlighter-rouge">modus-themes-exporter</code> package
for Emacs.</p>

<p>The idea for this package is based on an old experiment of mine: to
get the palette of a Modus theme and “export” it to another file
format for use in supported terminal emulators or, potentially, other
applications.</p>

<p>My focus today will be on writing the core functionality and testing
it with at least one target application.</p>

<p>Prior work of mine from my pre-Emacs days is the
<code class="language-plaintext highlighter-rouge">tempus-themes-generator</code>, which was written in Bash:
<a href="https://gitlab.com/protesilaos/tempus-themes-generator">https://gitlab.com/protesilaos/tempus-themes-generator</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Not interfering in the affairs of others</title>
      <description>An entry from my journal in which I comment how I do not meddle in other people's affairs.</description>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-13-not-interfering-affairs-others/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-13-not-interfering-affairs-others/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal.</p>

<hr />

<p>Another productive Monday comes to an end. The days are getting
warmer. Nights continue to be cold though. I spent most of the morning
hours doing manual labour on my land. I prepared some raised garden
beds and planted tomatoes. In the coming days I will do the same for
zucchinis, onions, garlic, peppers, and lettuce. Having my own
vegetables saves me some of the cost for groceries. The other day a
kilo of tomatoes sold for ~6 EUR. These are extortionate prices—and
the most chilling effects of the financial crunch have not even hit us
yet!</p>

<p>In the 2010s I was working and studying. This in itself is an
experience that many in the West cannot relate to: they fancy the
student life as a time of prolonged parties. Mine was limited to work,
home, and school. Those days the economy was mired in recession. There
was uncertainty about the very foundations of the euro area. The
powers that be were implementing policies that redistributed wealth
upward. Those were presented with euphemisms, moralistic palaver, and
obscurantist jargon such as “austerity”, “haircut”, “outright monetary
transactions”, “longer-term refinancing operations”, “quantitative
easing”… Apparatchiks are experts at spinning a monumental cash grab
as heavenly grace.</p>

<p>I had to count cents to the euro to buy a loaf of bread. It was not
fun. I managed though. Perhaps I was lucky enough to grow up without
access to a cornucopia of comforts. Me and people in my community were
raised in a world of few opportunities. Oftentimes we did not have a
football to play with. Our games would involve some plastic bottle
that we would fill up with stones and kick around until exhaustion.</p>

<p>Many of the kids I knew and was friends with found smoking at around
age ten, then discovered weed, and eventually the harder substances.
They ended up becoming drug addicts in their teenage years. Perhaps
the grinding austerity was too much for them. Or they thought there
was an easier path forward. They were seeking a way out. I cannot
blame them. Some of them died. Others turned mad. This effectively is
the road of no return in a country that is woefully underfunded,
understaffed, and underequipped in this and many other areas.</p>

<p>I have not done enough soul-searching on this front. Maybe one of the
reasons I have not revisited my homeland in twenty years is because I
do not want to get a status update. It was not pretty then when there
was no financial downturn being reported in the news. I shudder to
think how bad the reality on the ground would be in the Greek milieu
post 2008. Economic data may show growth, though this is driven by the
sellout of the country’s resources to foreigners. The average person
there is on an inexorable path to serfdom and immiseration.</p>

<p>What I have learnt in the process is to have dignity and self-respect.
I set the highest standard for myself and make no discounts or
exceptions to it. Part of that is a defence mechanism, to prevent
others from finding reasons to put the blame on me. If, for example, I
was lazy people would quickly attribute my financial woes on my
laziness. At least now they have to think twice when they notice the
sheer amount of work I do.</p>

<p>The first lecture I got as an adult on the topic of discipline and
“real men” was when I remarked how it is not right that we are living
in such a lopsided political order. The other guy who got all the
riches from daddy went on a monologue about how real men do not
complain like pussies and how they are gritty. He did not know
anything about me. He was just in the business of virtue signalling.
This is the precinct of the smartass who talks big without backing it
up with deeds. They will judge you even though they know nothing about
your life. And when you challenge them, they will take the easy way
out by claiming that “these are the standards, but I am working on
it”. Sure!</p>

<p>The smartass exists in every field of endeavour and represents every
school of thought. On the topic of “real men” and their putative
innate virtues, some of the most disciplined people I have ever met
are women. You do not need a penis to be self-motivated and keep
things in order. It is common for guys who are not insecure about
their manhood to admit that their girlfriend/wife helped them become a
better person in some ways.</p>

<p>Where the smartass is found in high numbers is in domains that have a
strong moral component. Religion is one of them, as are political
ideologies. They find the central elements of the creed and then go
around telling everyone how they should live. Consider, for example,
the activism in favour of Palestine. It is easy to tweet “Free
Palestine 🇵🇸” and carry on with your life. Then you may get emboldened
to go on the offensive and tell someone like me, who has not been
vociferous about the topic, how I need to be mobilised and such. To
which I ask: if you are so passionate about your cause, what are you
sacrificing for it? Will you go fight on the front lines? Will you
join the red cross/crescent? Will you give up your vacation and other
perks of your lifestyle to send aid to the refugees? Tweeting and
being obnoxious about it is trivial. The part where you live up to
your own standard is when things get real.</p>

<p>To be clear: I do not mind if someone is posting something online. I
do not check their thoughts and am not interested in their conduct.
But if they are posting it and are trying to push me around because of
it, then I will push back.</p>

<p>I got plenty of comments for the entries I published recently that
cover Easter, among others:</p>

<ul>
  <li><a href="https://protesilaos.com/commentary/2026-04-11-there-goes-another-easter/">There goes another Easter</a> (2026-04-11)</li>
  <li><a href="https://protesilaos.com/commentary/2026-04-12-lunch-without-alcohol/">Lunch without alcohol</a> (2026-04-12)</li>
</ul>

<p>My commentary is not about the substance of religion. I have nothing
against it. If someone felt offended, that was not my intention. I
never argue from a position of “my faith is more real than yours”. I
do not appeal to any authority. And, above all, I do not claim to be a
moral person. If I happen to be doing the right thing, that will be
the product of my actions, not my words.</p>

<p>All I do, when others try to incorporate me in their programme, is
apply the standard that they profess to live by on to their own deeds.
In effect, I present them with a mirror. If you tell me how we ought
to be doing this and that, while demanding that I conform to your
exhortations, then I expect you to be leading by example.</p>

<p>I do not consume porngraphy, for instance. Its widespread usage is a
common secret. I do not walk around telling everyone how they should
live their life and what to do on their computing device. I have a
strict diet and, again, I do not pressure others to eat this or that.
I do not gamble, yet said nothing to those who organised gambling
sessions in the square overlooking their church. There is no need to
belabour this point: I leave others alone and demand the same
treatment.</p>

<p>Every person is on their own path. If they ever need help, I am happy
to support them if I can. What I will not do, however, is punch down
and kiss up in pursuit of social points and to boost my ego.</p>

<p>The treatment I receive is not the same though, so I will not pretend
to not notice. Easter is the period of peak virtue signalling among
believers. I am merely describing what I am exposed to, not the
articles of faith as such.</p>

<p>The other day I was walking back home, moving in a direction away from
the nearest church close to the hour of the liturgy. A fellow in a
luxury car who was driving towards the church stopped and asked in
shock: “are you not attending the liturgy!?”. I did not even know who
this person was. I replied negatively, adding that I had essential
work to do. Without even considering the “why” I work every day
without ever going on a vacation, this person went on to explain how
important those pious days are, why we should praise the Lord, how I
can be a better person myself, blah, blah, blah. As if I grew up on
Mars and know nothing about what people believe in.</p>

<p>If God is all-knowing, then He knows my predicament. And if He is
omnipotent, He does not need this zealot to force me into conformity.
I remain calm. Such a character does not represent any cause. Theirs
is an inconsiderate exposition that is meant to make them look good
relative to another person. I do not compete with anyone and do not
care what they do with their life. I said “okay, bye”. The problem,
however, is that this is not an isolated event. The pressure is to be
“good” on the outside for a few days and then you can go on and
secretly indulge in everything you consider inappropriate. Why? Focus
on yourself, embed in your everyday conduct what you believe is
divine, and leave me alone.</p>

<p>To me, religion is not limited to a corpus of propositions. That is a
reductive exercise that takes away from the interpersonal dynamics at
play. Religion is a web of lived social experiences. I do not see the
point of the argument that such and such historical source contradicts
what people are actually doing. I care about the effective
religiosity, not the one in the books. The prescribed one is not
pertinent to what I am observing. I am commenting on phenomena as they
unfold, not on some ideal world or, indeed, the substantive points of
the precepts.</p>

<p>From time to time I get prompts about studying this or that material.
Christians, Muslims, Buddhists, but also secular thinkers. I am
curious to learn more. Though buying books is a luxury in itself while
I have more pressing issues to deal with, but that is beside the
point. The gist is that I am not the target audience at this point in
my life. I never asked for salvation. I did not express existential
angst that needs to be addressed. I do not claim to be religious or
particularly spiritual: I do not pray, I do not do yoga, I do not
practice mindfulness meditation… I have not even said that I am a
good person. I probably am not good in sense you imagine because I
have many times before broken a bully and will do it again if I must.</p>

<p>As I write these final words, I hear the owl nearby. It makes that
familiar vocalisation. This is the large variety. It is a bit smaller
than the eagle: a mighty bird of prey in its own right. I find it nice
to pay attention to my immediate environment. Earlier I spotted
another almond tree offshoot as well as the first signs of what
appears to be jasmine. Life forms all around me are in continuous
motion. Tomorrow I have another day full of activities. I will commit
to them to the best of my ability, with no tricks and no gimmicks.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>A lunch without alcohol</title>
      <description>An entry from my journal in which I describe a little bit of life in the mountains and my experience at an Easter celebration.</description>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-12-lunch-without-alcohol/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-12-lunch-without-alcohol/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal. I describe a small part of life in
the mountains as well as my experience at an Easter celebration.</p>

<hr />

<p>On Sundays it is common for people here to prepare <em>souvla</em> (barbecued
meat on a long skewer), if the weather is good enough. Other dishes
are also available, so there is something for everyone. Though meat is
the main serving. Winter in the mountains is usually too cold or rainy
for souvla. But the other months provide ample opportunities.</p>

<p>Today was one such day. I was invited to attend a lunch not too far
from my house. Nominally, it was about celebrating Easter. Though in
practice we were all there for the food and the companionship. Few
ever bring up religious topics on such occasions.</p>

<p>There were lots of people present, all of which I have met before in
other gatherings. Last time I was there all the people around me
consumed vast quantities of alcohol. Beer, wine, zivania, and whiskey.
I abstain from alcohol, though I never tell anyone in person why. When
somebody asks if I want some, I simply respond with something like
“no, I quit long ago—thank you!”.</p>

<p>What helps my case is that the tone of my voice and body language
communicate an unequivocal view. This is basically the opposite of how
a shy person responds, where they say one thing while they invite
others to tease out something else.</p>

<p>People are respectful when you draw clear boundaries. Those who are
not qualify as bullies, which you can then deal with more forcefully.
That I do with alacrity. But in the vast majority of cases everybody
means well.</p>

<p>When someone appears pushy yet has no obvious bad intention, it is
because they get mixed signals from you. They will nudge you to answer
affirmatively, perhaps by appealing to your sense of camaraderie:
“here, have a shot in the name of our newfound friendship”. And if you
do not know how to respond firmly, you will eventually yield, thus
positively reinforcing the original push.</p>

<p>I do not talk about my life choices. I am not interested in converting
anyone to my views and the manner of my living. Why I abstain from
alcohol is my own business: in short, I prioritise longer-term health
over scoring meaningless points at the lunch table. Plus, I am
perfectly sociable without pampers. If others choose to consume it, I
respect their choices. I was a bartender for many years, after all.</p>

<p>The table today had all the usual offerings of alcoholic beverage.
There were bottles of wine, cans of beer, a freezer packed with
zivania, and plenty of ice cubes for those who wanted to blend whiskey
with cola. Some folks who were sitting further away from me were
drinking as usual. Though those around me chose to abstain for once.
Someone remarked that “we are already having a good time, we do not
need the drinks”. I nodded without saying a word.</p>

<p>My lifestyle can be summed up as “do, not tell” or, better, “master it
first, teach it afterwards”.. If I believe in something, I embed it in
my activities. And if it is benign, then I am the embodiment of its
efficacy. I do not need to preach what is obvious. Others will notice
the effects and try the same. And if they do not discern the pattern,
then they are not ready for it, anyway. I find talk that is devoid of
action to be disempowering. It inevitably devolves into a vicious
cycle of overthinking and attendant restlessness.</p>

<p>There are no deep conversations at such gatherings. Topics range from
political commentary, to one’s adventures at the hunt, to matters of
farming, to some construction work that is being planned. Whatever
lacunae are filled in by blanket generalisations. You learn to not
take anything seriously. It is innocuous chit-chat. Its function is to
strengthen the sense of trust among those present. Anyone who has a
strong urge to be pedantic will suffer at such an event.</p>

<p>Even though I am on good terms with everyone here, I do not have any
friends. Nobody knows exactly what my interests are and how much
in-depth I am willing to go in any given exchange. They have a vague
sense of what I do, but are otherwise not curious to learn more. I
have long accepted that my interests lead me down the path of
loneliness. It is virtually impossible to meet like-minded people in a
sparsely populated region. This is partly why I spend more time hiking
than mingling with the locals.</p>

<p>I am also dismayed to observe, time and again, that the local
communities are dying of old age. There are no young people here and
no prospect of there being any in the foreseeable future. The women I
met an aeon ago gave me lectures about baby machines and the familiar
talking points. To think of the greatest power of all, to birth a new
form of life, in such demeaning terms… I remained silent and left.</p>

<p>Millenials in my part of the world grew up with the promise of the
comfortable life, having been fed the tale of inexorably expanding
economic prosperity. Well, except those of us who were already
poor—we were earmarked for the meat-grinder. When the 2008+
financial crisis hit them, they joined the various Occupy/Indignados
movements to announce to the world how angry they were for not getting
what they thought was their birthright.</p>

<p>We are still reeling from that crisis. It was, at its core, a
dismantling of the underlying value system and the expectations that
went along with it. Many of those people never moved on. They were
broken and defeated; a “lost generation” as the media was correctly
portraying it.</p>

<p>I am a man of action. With severely limited means, yes, but with the
attitude to fight until the bitter end. I like to make things happen
and get bored when thinking leads to nowhere. In this case, however, I
have no solution. Maybe I have not been daring or creative enough in
my approach, in which case I shall change my ways and try anew.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>There goes another Easter</title>
      <description>An entry from my journal in which I describe my thoughts as they occur moments to midnight.</description>
      <pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-11-there-goes-another-easter/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-11-there-goes-another-easter/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal.</p>

<hr />

<p>The church bells were ringing in the distance. The first explosions
echo in the valley. It is almost Easter in this part of the world. In
about ten minutes there will be fireworks. I finished a long day’s
work and then went for the nightly hike with my dogs. Walking with my
canine friends is among my favourite activities.</p>

<p>The season is pleasant in secular terms. We are at the tail end of
winter in the mountains. It is still cold during daytime, though it
starts to get sunnier. The last heavy rainfall was on Thursday.
Another is expected next week, as days become more dry. Flowers are
popping up everywhere, while the grass reaches its maximum height at
about half a metre tall. Most trees need a few more weeks to blossom.
The oak trees take their turn fairly late at around May.</p>

<p>In religious terms, however, we are asked to go through induced grief.
All around us there is life yet our mental state revolves around
death. The week of Easter is about pretending to suffer along with
Jesus. “Pretending” is the operative term. If you are actually
suffering, you do not have to wait for this time of the year to go
through the torment. And, conversely, if you are not suffering, then
you likely have the luxury to put on a show.</p>

<p>Unlike Christmas, Easter has always had a more religious undertone in
my experience. Christmas is practically not a religious period. There
is the myth of the flying grandpa who brings gifts galore, trolls that
seek to cut down the tree of life only to be lured away from their
mischief by treats, and children going around the neighbourhood
singing songs in exchange for pocket money. In short, it is whimsical
and fun. I love it!</p>

<p>As for the religious story, it essentially is about a child being
born. Every stable family considers that a gift from the heavens.
Theodoros and all such variations (Diodoros, Diogenis, Herodotos,
Apollodoros, etc.) are ancient names, after all, describing the
newborn as a gift from a certain deity or the divine at-large. This
goes back millennia. We do not need to search much further than the
gratitude of the parents to appreciate the symbolism of baby Jesus.</p>

<p>By comparison, Easter is the reign of darkness. The social pressure to
behave in certain ways is much more pronounced. It starts fourty days
in advance and culminates on this day. There is increased church-going
or, at least, exhortations to that effect, and the emphasis is on
doctrine. There exists the Easter bunny and such lighthearted elements
but their role is marginal. The focus is on propriety and the
correctness of the creed.</p>

<p>It must be nice to be part of a group. To not push back and simply go
with the rest. You always have friends and attend all the parties. I
cannot be that person. I tried it once and it almost broke me. Part of
my personality is to not give in to social pressure. If I do not feel
a certain way, and if the matter affects me personally, I will not do
it solely to please others.</p>

<p>Fundamentally, nobody has control over me. This goes back to when I
was a child, though a more poignant example comes from my teenage
years. All my friends and virtually every boy my age was a smoker. I
did not try it once. Not even out of curiosity. My mates never
attempted to pressure me into smoking because they knew it was a lost
cause.</p>

<p>I am the same with the performative aspects of religiosity. I will not
pretend to feel pain when I am not. I cannot act like I am suffering
when I am feeling as energetic as ever. And, more importantly, I do
not check the calendar to decide when to do what I consider right: I
just do it without exceptions.</p>

<p>I am, nevertheless, considerate enough to not argue for the sake of
arguing. Intellectual matters require a level of commitment to the
topic that the vast majority of people do not have. For those cases, I
remain silent, wish everybody all the best, and mind my business.</p>

<p>My attention is on the here-and-now. The temperatures will rise next
week before dropping back to normal for the foreseeable future. I have
lots of plans for my land and am confident that my hard work will be
fruitful. The only pain I feel is the one I bring unto myself by
committing many hours of my day to manual labour. I find it empowering
to witness the compounding effects of my industry; to know that I can
rely on the infrastructure I have set up and to continuously build on
top of what I already did.</p>

<p>I have done so much already and am eager to continue with the same
intensity. However, the rapidly deteriorating economic situation has
hindered my house-related initiatives. I will not do anything here at
least for another year or two. It is a pity, though I must wait for
the next opportunity. Such is life. We deal with the circumstances as
they evolve. Our duty, in the meantime, is to retain our vitality and
be poised to act.</p>

<p>As for Easter, everybody will revert to business as usual within a few
hours. We all know it is a shadow play of spirituality, yet find it
expedient to act as if something grand is happening.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs modus-themes live stream today @ 14:00 Europe/Athens</title>
      <description>I am doing a live stream related to Emacs, where I will write tests for my modus-themes.</description>
      <pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-10-emacs-spontaneous-live-modus-themes/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-10-emacs-spontaneous-live-modus-themes/</guid>
      <content:encoded><![CDATA[<p>[ The stream will be recorded. You can watch it later. ]</p>

<p>At 14:00 Europe/Athens I will hold a live stream about Emacs.
Specifically, I will work on my <code class="language-plaintext highlighter-rouge">modus-themes</code> package.</p>

<p>The idea is to write more tests and refine the relevant functions
along the way.</p>

<p>I am announcing this -45 minutes before I go live. I will keep the
chat open in case there are any questions.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Interpretation of “The Elves” by Socratis Malamas &amp; Ioulia Karapataki</title>
      <description>Translation of---and philosophical commentary on---a Greek song whose translated title is 'The Elves'.</description>
      <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/interpretations/2026-04-09-malamas-karapataki-elves/</link>
      <guid isPermaLink="true">https://protesilaos.com/interpretations/2026-04-09-malamas-karapataki-elves/</guid>
      <content:encoded><![CDATA[<p>For this entry in the series, I have picked a beautiful song which
evokes that curiosity we have about the otherworldly. <em>The Elves</em> is a
song written and composed by the much-beloved Socratis Malamas. My
favourite version is performed at a live concert together with Ioulia
Karapataki: <a href="https://www.youtube.com/watch?v=PU9UDuiqHOU">https://www.youtube.com/watch?v=PU9UDuiqHOU</a>.</p>

<p>Below are the original lyrics, my faithful translation of them, and
further commentary on my part.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Τα Ξωτικά

Ερμηνεία:  Σωκράτης Μάλαμας &amp; Ιουλία Καραπατάκη
Στίχοι:    Σωκράτης Μάλαμας
Μουσική:   Σωκράτης Μάλαμας


Σε ποια σκιά τα μάτια σου θολώνουν
Μικρό πουλί σ'αγάπησα πολύ
Τα βήματα στα κύματα βουλιάζουν
Να'σουν εδώ να σε βρει η ανατολή

Μέσα στα ρούχα μου σε κρύβω σαν φωτιά
Να'χουν να λεν πως δε σε γνώρισα ποτέ
Όνειρο είναι η ιστορία μας καρδιά μου
Τα ξωτικά γυρνούν τις νύχτες συντροφιά μου

Δωσ'μου το φως κι ας κάνω πως δεν είδα
Δώσ'μου νερό να σβήσω τα βαριά
Ό,τι έχει μείνει μέχρι εδώ απ'το κερί μου
είναι τα μάτια σου που καίνε σαν φωτιά

Μέσα στα ρούχα μου σε κρύβω σαν φωτιά
Να'χουν να λεν πως δε σε γνώρισα ποτέ
Όνειρο είναι η ιστορία μας καρδιά μου
Τα ξωτικά γυρνούν τις νύχτες συντροφιά μου
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The Elves

Singer:  Socratis Malamas &amp; Ioulia Karapataki
Lyrics:  Socratis Malamas
Music:   Socratis Malamas


Under which shade do your eyes blur
Little bird I loved you so much
The steps sink in the waves
I wish you were here to be found by dawn

In my clothes I keep you like fire
So that they may say that I never met you
Our story is a dream my heart
The elves roam around with me at night

Give me the light although I pretend not to see
Give me water to erase the heavy parts
Whatever remains here of my candle
are your eyes that burn like fire

In my clothes I keep you like fire
So that they may say that I never met you
Our story is a dream my heart
The elves roam around with me at night
</code></pre></div></div>

<p>At the surface level, this sounds like yet another love song. It is
how I used to think of <em>The Elves</em> for the longest time. Though now I
am of the view that there is an alternative explanation, the hint for
which we already get from the title.</p>

<p>Elves are a figment of humanity’s artistic genius. As with all myths,
they are a metaphor for phenomena we bear witness to. This one, in
particular, pertains to experiences that are at once relatable yet
decisively alien. We can recognise in them patterns that the human
psyche resonates with while realising that they cannot fit into the
narrow confines of our quotidian affairs.</p>

<p>One does not encounter the elves at their 9-5 job. No. What we do for
a living is typically a matter of need. It has a logic of its own as
we have to suppress at least some of our individuality or altogether
sacrifice a part of who we are to the altars of expedience and
necessity.</p>

<p>The elves are exotic creatures. They are found well beyond the milieux
most of us operate in and seldom escape from. They inhabit ancient
forests and pristine lands. These we describe as “nature”. Nature is
always close to where we live. A short trip is enough to take us to
the nearest grove, mountain, or water element, for example. Proximity,
however, does not necessarily imply a connection of any meaningful
depth.</p>

<p>People can be physically close to “nature” yet clearly beyond reach of
it. This happens because we need time to get accustomed to the new
realities. Humans are products of their environment. They cannot just
switch contexts without requiring a period of adjustment. Life outside
the bustling human world unfolds at a slower pace than what we are
conditioned to accept as the baseline of interpersonal relations. The
stimuli we get in the great outdoors are much more subtle. There are
sounds and musicality all around, though they are subdued enough for
us to get the initial impression that the place is eerily quiet.</p>

<p>Furthermore, we fail to have situational awareness whenever we turn
inward and forget to come back out. This is our default modus
operandi. It reduces us to androids; cogs in a society-wide machine.
Much of what we do is to just get by. It happens mindlessly as we sink
into routines and thinking patterns that we eventually take for
granted.</p>

<p>The elf as an artistic device, then, reminds us that the magic all
around us is accessible to all of us provided we change our ways. It
does not matter that something is close. What is of import is to
develop the capacity to appreciate it. This requires that we free up
resources from cognitively burdensome but ultimately needless
preoccupations.</p>

<p>With those granted, we can understand the lyrics of <em>The Elves</em> as an
appreciation of nuance: to discern that which hides in the open. This
is not a typical love song because there is no lover involved. In the
first verse, the poetic “I” figure wishes that some abstract “you”
were present, while walking alone along the beach (where waves would
wash away all the footprints on the sand).</p>

<p>In the refrain we learn how knowledge of this seemingly dreamy
otherworldliness is kept within. It is not materialised as a person,
as the partner to love, but as the impersonal fire that fuels one’s
actions. Others will never notice because they did not get out of
their own inward-looking routines. Had they done so, they would have
encountered the elves themselves.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: a casual afternoon</title>
      <description>Selfie picture of me on a walk wearing sunglasses</description>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-04-08-casual-afternoon/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-04-08-casual-afternoon/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: From the age of myth</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-04-07-from-the-age-of-myth/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-04-07-from-the-age-of-myth/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>From the age of myth
you arrive as thunder
and whispering fountain
As the vivifying warmth
of a luminous star
Intensity you are
of a special kind
that moves hearts
and reshapes the land
In the dragon's year
grey became blue
green turned to amber
Indeterminate
Captivating
Potent
Manifest you now make
the collective will
of the sages
in yet another
awakening
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live stream for writing Denote tests and more on Monday 6 April @ 20:00 Europe/Athens</title>
      <description>I am doing a live stream related to Emacs, where I will write tests for Denote.</description>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-06-emacs-spontaneous-live-tonight-denote/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-06-emacs-spontaneous-live-tonight-denote/</guid>
      <content:encoded><![CDATA[<p>[ The stream will be recorded. You can watch it later. ]</p>

<p>Tonight I will work on my <code class="language-plaintext highlighter-rouge">denote</code> package. There is a feature branch
I implemented this morning and am now ready to continue refining the
code. The immediate goals:</p>

<ul>
  <li>Update unit tests that are still calling deprecated functions.</li>
  <li>Write new tests, starting with the <code class="language-plaintext highlighter-rouge">denote-dired</code> command and all
its ancillary functions.</li>
  <li>Review all the commands that filter the query buffers (which are
produced by commands such as <code class="language-plaintext highlighter-rouge">denote-grep</code>, <code class="language-plaintext highlighter-rouge">denote-backlinks</code>,
<code class="language-plaintext highlighter-rouge">denote-query-contents-link</code>).</li>
  <li>Edit the manual accordingly.</li>
</ul>

<p>I expect the stream to go on for 2-3 hours, but we will see.</p>

<p>I will keep the chat open in case there are any comments. I am happy
to respond to them.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs live stream with Sacha Chua on 2026-04-16 17:30 Europe/Athens</title>
      <description>I will do a live together with Sacha Chua where we will do some programming on Emacs.</description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-04-emacs-live-with-sacha-chua/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-04-emacs-live-with-sacha-chua/</guid>
      <content:encoded><![CDATA[<p>The other day I had a coaching session with Sacha Chua. Sacha asked me
if she could record and publish it, to which I agreed. More here:
<a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/">https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/</a>/.</p>

<p>Our next meeting will be done live on the 16th of April 2026 at 10:30
America/Toronto, 17:30 Europe/Athens time: <a href="https://youtube.com/live/djE_pVlgDHg">https://youtube.com/live/djE_pVlgDHg</a>.</p>

<p>I will check with Sacha how she imagines doing this. Though I am the
laissez faire type, so will adapt as we go.</p>

<p>[ Note that all my coaching sessions are private: I never share
  details of my meetings. This is an exception because Sacha asked me
  about it. ]</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: new sequence scheme for the ‘denote-sequence’ package</title>
      <description>Information about a new feature that I just added to the 'denote-sequence' package.</description>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-04-03-emacs-denote-sequence-new-alphanumeric-delimited-scheme/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-04-03-emacs-denote-sequence-new-alphanumeric-delimited-scheme/</guid>
      <content:encoded><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">denote-sequence</code> package is an optional extension to <code class="language-plaintext highlighter-rouge">denote</code>
that empowers users to write “sequence notes”, else “folgezettel”, in
the style of Niklas Luhmann.</p>

<p>Sequence notes are created in relation to other notes, as parent,
child, or sibling. <code class="language-plaintext highlighter-rouge">denote-sequence</code> communicates such relationships
by writing a “sequence” to the file name, in accordance with the
Denote file-naming scheme (technically, it uses the optional
<code class="language-plaintext highlighter-rouge">SIGNATURE</code> component of the file name, which is defined as a
free-form field for users to use as they see fit—so this is just one
application of it).</p>

<h2>The package supported two schemes before</h2>

<p>The exact presentation of such sequences is subject to the user option
<code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code>. The package has hitherto supported two
schemes, the <code class="language-plaintext highlighter-rouge">numeric</code> and <code class="language-plaintext highlighter-rouge">alphanumeric</code>.</p>

<p>In the numeric scheme, each level of depth is delimited by the equals
sign. The sequence <code class="language-plaintext highlighter-rouge">1=2=3</code> thus has three levels of depth. It means
“the third child of the second child of the first parent”.</p>

<p>By contrast, the alphanumeric scheme relies on the alternation between
numbers and letters to communicate levels of depth. The above example
is thus expressed as <code class="language-plaintext highlighter-rouge">1b3</code>.</p>

<h2>The new <code class="language-plaintext highlighter-rouge">alphanumeric-delimited</code> scheme</h2>

<p>Many users have told me that the alphanumeric scheme looks cleaner.
Though I think it is hard to read when sequences get really long, like
<code class="language-plaintext highlighter-rouge">2a13c6d2a</code>. To this end, the new sequence scheme augments the
alphanumeric style with delimiters that are placed after the first
level of depth and every third level of depth thereafter. Thus:
<code class="language-plaintext highlighter-rouge">2=a13=c6d=2a</code>.</p>

<p>Users may find this easier to work with.</p>

<h2>Remember the <code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> command</h2>

<p>This command has been part of the package since its inception. It can
convert from one sequence scheme to the others.</p>

<p><code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> has a “do what I mean behaviour” with regard
to which file or files it should operate on:</p>

<ul>
  <li>
    <p>When called from inside a file with a Denote sequence, it operates
on the current file.</p>
  </li>
  <li>
    <p>When called from a Dired buffer, it operates on all the marked
files.</p>
  </li>
  <li>
    <p>When there are no marked files in the Dired buffer, it operates on
the file at point.</p>
  </li>
</ul>

<p>The target sequence scheme for the conversion is whatever is assigned
to the user option <code class="language-plaintext highlighter-rouge">denote-sequence-scheme</code>. If, however,
<code class="language-plaintext highlighter-rouge">denote-sequence-convert</code> is called with a prefix argument (<code class="language-plaintext highlighter-rouge">C-u</code> by
default), then it will prompt for the target sequence scheme.</p>

<h2>Coming in version 0.3.0</h2>

<p>I just merged the code into trunk. Users who are building the package
from source can try the new feature right away. Otherwise, it will be
available in the next stable version of the package. I hope to have
that ready some time in mid-April.</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">denote-sequence</code></li>
  <li>Official manual: <a href="https://protesilaos.com/emacs/denote-sequence">https://protesilaos.com/emacs/denote-sequence</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/denote-sequence">https://github.com/protesilaos/denote-sequence</a></li>
  <li>Backronym: Denote… Sequences Efficiently Queue Unsorted Entries
Notwithstanding Curation Efforts.</li>
</ul>]]></content:encoded>
    </item>
    
    <item>
      <title>Prot Asks: Hjalmar about Emacs for music, the joy of art, and Internet sociability</title>
      <description>In this 2-hour video I talk with Hjalmar about using Emacs to write music, the joy of artistic expression, and sociability in the Internet era.</description>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/prot-asks/2026-04-02-hjalmar-emacs-music-joy-art-internet-sociability/</link>
      <guid isPermaLink="true">https://protesilaos.com/prot-asks/2026-04-02-hjalmar-emacs-music-joy-art-internet-sociability/</guid>
      <content:encoded><![CDATA[<p>In this 2-hour video, I talk with Hjalmar about using Emacs to write
music, the joy of artistic expression, and sociability in the Internet
era.</p>

<p>Hjalmar is a viola player and composer who currently studies
composition at the Norwegian Academy of Music. We start our discussion
with me asking how it is to study music. I learn about Hjalmar’s
experiences in that regard.</p>

<p>Hjalmar writes music in Emacs using a setup that involves Org, the Org
Babel system, and the LilyPond music notation. Hjalmar describes in
further detail how this process works.</p>

<p>I was curious how Hjalmar discovered Emacs to learn that it was a
hobby that developed during the Covid pandemic. We discuss how even
though Emacs is known as a programmer’s tool, it is equally capable
for people who do not write code, such as musicians, academics, and
journalists. A large part of that is Org and its wider ecosystem of
extended functionality.</p>

<p>I ask about Hjalmar’s creative process. It is an iterative process of
accumulating lots of pieces and then jumbling them to produce a
result. Hjalmar will typically settle for the second version, given
that it is an attempt to address all the mistakes of the first draft.</p>

<p>A large part of our exchange is about the process of artistic
expression. Hjalmar is interested in creating playful interactions
with the audience, to blur the lines between what is and what is not
music, and to make everyone present a participant. I learn more about
how this works and the relevant ideas that inform the approach.</p>

<p>The other big theme of our talk is the human experience in the context
of digital technology and the Internet. This is about artistic stimuli
as well as interpersonal affairs. We discuss the community aspect of
art and how that relates to the feelings of connection and creativity.
The gist is how we benefit from face-to-face interactions in ways that
our technology cannot replicate.</p>

<h2>Links from Hjalmar</h2>

<ul>
  <li>Personal website: <a href="https://hjalmarbjerner.com/">https://hjalmarbjerner.com/</a></li>
  <li>YouTube channel: <a href="https://youtube.com/@hjallis22">https://youtube.com/@hjallis22</a></li>
</ul>

<h2>About “Prot Asks”</h2>

<p>In this video series, I talk to anybody who is interested to have a
video call with me (so do contact me if you want!). The topics cover
anything related to Emacs, technology, and life in general. More here:
<a href="https://protesilaos.com/prot-asks">https://protesilaos.com/prot-asks</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Learning from the land</title>
      <description>An entry from my journal where I comment on how I learn by observing the phenomena around me.</description>
      <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-02-learning-from-land/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-02-learning-from-land/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal where I comment on how I learn by
observing the phenomena around me.</p>

<hr />

<p>Another rainy day goes by. This is the first wet winter at the hut.
The previous two were quite dry, foreshadowing the droughts that
followed for the rest of the year. Last winter was especially harsh in
this regard. It led to an extra dry spring and summer, which
culminated in the devastating wildfires that affected a large part of
the island.</p>

<p>Living here has made me more aware of my surroundings. This is because
I tend to my land. Each day I walk around, to casually enjoy the
little things but also to update my mental model of what is in my
midst. I take note of changes to the environment. A new offshoot
appears, grass grows more dense in an area that was once barren, or
there are signs of water accumulating at some spot. This is the raw
data that allows me to anticipate change and plan accordingly.</p>

<p>For example, soon after I got here I realised that the back side of my
land was prone to flooding. The adjacent stream brings an unstoppable
torrent of water after each heavy rainfall. I could tell that the risk
of me getting hit was remote, but was eager to work towards mitigating
the threat. Cutting the long story short, I laboured to redirect the
flow of water, such that it does not touch my land at a steep angle.
Flooding is practically impossible now.</p>

<p>I recognise that to be here I have to show respect to the forces
around me. They have their own mechanisms, which I must discern and
align my presence with. When you take matters into your own hands, it
is dangerous to be frivolous and absent-minded. Or, to put it
differently, you cannot afford to be such unless you are being taken
care of.</p>

<p>The world is alive. It is not a mere backdrop to the show I am
featuring in. Concepts such as “the environment” are mental shortcuts.
If we want to be more accurate, we have to talk about systems of
systems within which different forms of life are made manifest. To be
aware of my surroundings, then, is another way of describing my
continuous study of immanent life.</p>

<p>The more I observe, the better I understand that the cosmos is
consistent. I can discern patterns in how the landscape develops over
time which ultimately find application to human affairs. The flowing
waters, for instance, have made poignant the notion that mountains are
being flattened over time. The human lifespan is too short to measure
up to such a process, though even within a few years we can appreciate
how a tiny bit of mountain is moved by the weather.</p>

<p>I built some stairs out of soil by carving them on the side of the
mountain. Within less than three years, they have been smoothed by
the succession of sunshine and rainfall. A stepped configuration has
turned into a near slide. It shows how continuous exposure can create
smoothness, given a certain unit of time. This is not a descriptor
that is limited to the soil though. It works equally well for our own
experiences.</p>

<p>In everything we do, we are subject to this mechanism. It is neither
good nor bad, or it is both good and bad, depending on the specifics
of the case. Sometimes, the smoothing out is what makes us more
effective at our role. We reduce the friction by removing the sharp
edges. At other times, being more smooth means that we have declined:
those edges are what gave us our comparative advantage.</p>

<p>It helps to be mindful of this phenomenon. It couches our outlook in
terms of dynamism. Instead of treating any given state of affairs as
static, we appreciate its potential for change; change that may be
gradual yet inexorable insofar as creating conditions that undo the
case we started out with. We often refrain from trying something in
earnest because we overestimate the staying power of the initial
friction. At the other end, we cling on to an arrangement of
relationships and routines without realising that our role and its
impact have been eroded.</p>

<p>I learn from the land by giving it my undivided attention. It
ultimately is how I have developed most of my thoughts about life: be
mindful and think things through. People will often ask “which books
have you read”. The truth is that I have not read much. From now on I
will start responding with “the real issue is how attentively you are
observing, how carefully you are listening, and how deeply you are
thinking”. Not to imply that books are useless, but that the book
count or, indeed, the entries in one’s private library, are not a
reliable predictor.</p>

<p>The consistency of the world means that we do not need to explore
every corner of it to develop profound insights. A small portion will
suffice. I have not seen all of the flowers, for instance. The ones
that do grow in my vicinity are beautiful. Appreciating their beauty
does not require knowledge of the totality of flowers. I do not have
to fathom every possible flower. What I get is enough and I am
thankful for it.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>When knowing it all does not matter</title>
      <description>An essay from my journal in which I express the connection with my surroundings and how I do not need all the answers.</description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-04-01-when-knowing-it-all-does-not-matter/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-04-01-when-knowing-it-all-does-not-matter/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal. I express the connection with my
surroundings and how I do not need all the answers.</p>

<hr />

<p>Minutes to eleven. Another rainy day comes to a close. I just came
back from my nightly hike with the dogs. We walk around the mountains
for several hours per day. This is basically paradise for dogs. It is
equally benign for me as well. I remain as fit as ever. I always have
energy to do what I like. My mental state is stable, my thoughts are
clear, my presence focused. The mountains empower me. I forgot how it
is to live with perennial stress. Everything is easier when you have a
good connection with your environment and your inner world.</p>

<p>There is nothing grand happening. This note describes the present
moment, though it also applies to what I was feeling yesterday, and
the year before, and, probably what I will experience in the future.
Stability sounds boring to someone who is used to trying new things
all the time. Though it actually is not. Once you get used to this
reality, you develop a finer appreciation of the phenomena. It is a
little bit like conditioning yourself to eat unsalted salads: at first
it is bland until it eventually becomes a combination of natural
flavours that were once obscured by the salt.</p>

<p>I keep treading the same paths. Though I always notice something
different. The environment is alive. Every form of life in it is in
motion. It is working towards some end. The grass tries to be taller
and wider, in order to maximise its exposure to the sun and access to
soil plus water. The acorn proceeds towards becoming an oak tree over
the course of centuries. Even the land itself is transforming. Every
single rainfall takes some hard matter from the higher parts and moves
it downstream. Where there was once solid ground one now finds signs
of flowing water. In the geological time frame, the earth itself
becomes something other than what it was.</p>

<p>I lack the depth of conscience to communicate with the earth the way I
do with my dogs or other people. Though I can already sense that it is
an organism. I discern the manifestations of life all around me. And I
am aware that there are strata of emergence to each phenomenon. What I
understand as myself, a unit of human, Protesilaos the one and only,
is a system of systems. To describe even a single part of my body, I
would need to spend a lifetime studying all the technicalities. I am
ignorant about the full extent of knowledge that is embedded in the
making of the eye, for example, or the interplay between the brain and
the gut. Yet there is a sense in which I know myself. I operate at a
certain stratum of emergence. What happens at the strata below or
above is not at the centre of my conscious world, although it is a
precondition for it.</p>

<p>The reason I am content with the little things is because I have
understood that they are actually not insignificant. They are subtle,
yes. It is as if they are hiding in plain sight, testing our capacity
for mindfulness. Many of the world’s religions promise an escape from
this world. I do not resonate with their teachings. I was listening to
some monk the other day talk about how suffering is innate to the
present experience and how we must not feel moved by what is around
us. How so? I feel calm. To be moved is to be, for all presences are
in motion. I keep finding reasons to smile: they are all around me.</p>

<p>What I did wish to escape from was the expectation of knowing it all.
The idea that there has to be a beginning, middle, and end to this
story, and that I should be aware of it. I do not feel entitled to
know everything. I do not prey for the universe to conspire in my
favour. I do not ask for an opt out clause, some derogation from the
rules that govern the mechanics of the system of systems. I love what
is and am thankful for what I have for as long as it is beside me on
my path.</p>

<p>The gods offer hints but no explanations. We can only work with what
we have. Even if they did tell us explicitly, we lack the means to
definitively know: are they being truthful or trying to test us? If,
for example, Jesus performed all those miracles and got resurrected,
those all prove that he did perform these very miracles and did get
resurrected. There is nothing in those events, in isolation or in
combination, that necessarily proves everything else that Christians
claim to know about God: agentic, triadic, benevolent, omniscient,
omnipotent, ubiquitous. The leap of faith is unavoidable.</p>

<p>We deal with what is germane to the human condition, recognising that
it is an amalgamation of joy and sorrow, of enthusiasm and
disappointment, of tension and release. We suffer when we are unable
to connect with that which is immanent; that which is so close to us
at all times; that which we underestimate, take for granted, or
altogether ignore. Giving it a name, telling a story about it, is
useful insofar as we do not forget that this is an artistic device. We
do it for the fun of it, to have something to talk about with other
people, and to contribute to the workings of our social reproduction.</p>

<p>God dies in the naming of god, in the framing of it as only one
instead of the multitude and the monad, in the stories we take too
seriously as we turn them into inflexible doctrines. God is lost once
the dogma we impose on our psyche forbids us from reaching out to the
source, to the singing spring whose waters always flow.</p>

<p>When I sense the cold rain on my face, as I close my eyes and turn
skyward, I find peace in the knowledge that I am not special in my
need for water and air. Just as I require them, so do the plants and
other animals all around me. This is not merely about surviving, but
feeling the connection with that which envelops and underpins me.
From my constitutive subsystems to the supersystems I partake in,
there is life ever-lasting, ever-transfiguring.</p>

<p>The rainy days will continue until the first third of April. I do not
have someone to tell this to, so I am putting it in the present bottle
and tossing it to the sea. Not having all the answers does not bother
me. I am like that bottled note, moving wherever the current takes me.
That there even is an ocean is astonishing. I cannot fathom the full
extent of the factors whose interplay contributes to there being an
ocean. Can we even draw clear delineations in the cosmic continuum? Is
there an in vitro expression of anything to be studied in isolation
from totality?</p>

<p>I will go to bed now. Tomorrow morning I will get the chance to
continue with my projects around my house. Well, unless there is heavy
rainfall. Every yard here contains hours of my labour. Though no
matter how much sweat I spill, I can never make the land an extension
of myself. It belongs to me just as it belongs to the grass and the
insects below of it. We are all together. Admitting as much keeps
things in perspective and makes everything simpler.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs coaching with Sacha Chua</title>
      <description>I will do a coaching session with Sacha Chua. She wrote a blog post about it and I am making comments on it.</description>
      <pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-31-emacs-coaching-with-sacha-chua/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-31-emacs-coaching-with-sacha-chua/</guid>
      <content:encoded><![CDATA[<p>Sacha Chua contacted me to schedule a coaching session later this
week. She wrote about it here:
<a href="https://sachachua.com/blog/2026/03/thinking-about-coaching-goals-with-prot/">https://sachachua.com/blog/2026/03/thinking-about-coaching-goals-with-prot/</a>.</p>

<p>I maintain a strict privacy policy with everyone I meet. Specifically,
I do not say anything about our meeting. But since Sacha has already
published this information, I am happy to do this in the open.</p>

<p>What follows are some comments on her post.</p>

<h2>Testing interactive functions</h2>

<blockquote>
  <p>writing tests, especially for things that are more interactive</p>
</blockquote>

<p>What helps here is to think of the interactive part as the way to get
the arguments. If the interactivity is more involved, then you want to
think how it can be broken down into smaller routines. Each routine
should eventually be reduced to a function that can be called
non-interactively with a certain argument. This way, your tests are
easier to reason about.</p>

<p>Consider this example:</p>

<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-greet-person</span> <span class="p">(</span><span class="nv">name</span><span class="p">)</span>
  <span class="s">"Return Hello string to person with NAME."</span>
  <span class="p">(</span><span class="nb">format</span> <span class="s">"Hello %s"</span> <span class="nv">name</span><span class="p">))</span>
</code></pre></div></div>

<p>The substantive part of the test would be something like this:</p>

<div class="language-elisp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">(</span><span class="k">let</span> <span class="p">((</span><span class="nv">name</span> <span class="s">"Sacha"</span><span class="p">))</span>
  <span class="p">(</span><span class="nb">string=</span> <span class="p">(</span><span class="nv">my-greet-person</span> <span class="nv">name</span><span class="p">)</span> <span class="s">"Hello Sacha"</span><span class="p">))</span>
</code></pre></div></div>

<p>Now add interactivity to the function:</p>

<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-greet-person</span> <span class="p">(</span><span class="nv">name</span><span class="p">)</span>
  <span class="s">"Return Hello string to person with NAME.
When called interactively, prompt for NAME.  Else NAME is a string."</span>
  <span class="p">(</span><span class="nv">interactive</span> <span class="p">(</span><span class="nb">list</span> <span class="p">(</span><span class="nv">read-string</span> <span class="s">"Whom to greet: "</span><span class="p">)))</span>
  <span class="p">(</span><span class="nb">format</span> <span class="s">"Hello %s"</span> <span class="nv">name</span><span class="p">))</span>
</code></pre></div></div>

<p>Even though this function can be called interactively, the test is the
same because the <code class="language-plaintext highlighter-rouge">interactive</code> simply sets the value of <code class="language-plaintext highlighter-rouge">name</code>.</p>

<p>There will, of course, be more complex scenaria. We can think how best
to approach them. Though this is the general idea.</p>

<h2>Navigating Lisp code across many files</h2>

<blockquote>
  <p>navigating code that might be scattered in literate config files or
in Emacs Lisp files</p>
</blockquote>

<p>What I find helpful:</p>

<ul>
  <li>Use the Emacs bookmarking system. I add a bookmark for anything I
visit frequently. Then I can find what I need with <code class="language-plaintext highlighter-rouge">bookmark-jump</code>
or <code class="language-plaintext highlighter-rouge">consult-buffer</code> (from Daniel Mendler’s <code class="language-plaintext highlighter-rouge">consult</code> package).</li>
  <li>Have a single root for all your programming projects. In my case
this is <code class="language-plaintext highlighter-rouge">~/Git/</code>.</li>
  <li>In that directory, create subdirectories with areas of interest. One
of them should be specific to the projects you maintain. For
example, I have <code class="language-plaintext highlighter-rouge">~/Git/emacs-community/</code> and <code class="language-plaintext highlighter-rouge">~/Git/Projects/</code>. The
latter consists of everything I develop/maintain.</li>
  <li>With these directories in place, you can always rely on a recursive
Grep to find what you need.</li>
  <li>Otherwise, we have <code class="language-plaintext highlighter-rouge">xref-find-definitions</code> as well as all the help
functions like <code class="language-plaintext highlighter-rouge">describe-function</code> which normally link to the file
where the definition is.</li>
</ul>

<h2>Sharing with others</h2>

<blockquote>
  <p>If I get better at sharing what I’m working on, I might be able to
connect with more people and bounce ideas around.</p>
</blockquote>

<p>Getting better is nice. I think here the goal is to structure what you
are sharing in a certain way. Then people can use it more easily. Once
that happens, you will receive more feedback.</p>

<blockquote>
  <p>Also, accountability might help me nudge this over the threshold.</p>
</blockquote>

<p>This is key. When we make a promise in earnest, we are motivated to
deliver on it. The fact that you have published this adds to the
effectiveness of it.</p>

<blockquote>
  <p>I’m curious about other people’s workflows for sharing. I like
joining meetups, but I tend to share stuff only if no one else has
anything planned, because I have my blog and my YouTube channel in
case I want to share anything with a wider group of people. I just
have to actually post things.</p>
</blockquote>

<p>Each person is different and there is no one answer to rule them all.
What I do, as someone who publishes on a number of topics, is to reach
a point that is an honest representation of my current level. This
point is not approaching perfection, as that is a trap. If it were
about perfection, I would never publish anything!</p>

<p>Once I do what is within my current level, I am casual about it. In
other words, I do not need to prove that I am worthy of it—I am
already there and this is my current normal state. This makes the
process of writing less emotionally challenging (well, not challenging
at all). It also opens me to learn more. I am not defensive or
argumentative because, fundamentally, I feel secure with what I have:
I am not hiding something and do not worry about what others may
think.</p>

<p>About your case, I get the impression that you are already improving
your content. It starts by recognising that there is improvement to be
had. Then, you write blog posts such as the one I am now commenting on,
which show that you have put thought into your processes. In other
words, you are mindful of your current state. Whatever I may point out
during our meeting will thus be easier for you to incorporate in your
thinking. Why? Because you already know the space, as it were, and
so you will have a good intuition of where to put the new thing.</p>

<h2>Getting used to streaming</h2>

<blockquote>
  <p>Streaming: Still need to get the hang of talking to myself or having
half-conversations with chat: can be worked around by scheduling a
session with Prot and opening it to the public</p>
</blockquote>

<p>I am happy to do this in public. Either as a coaching session or some
collaborative live stream. We can discuss the details.</p>

<p>At any rate, “practice makes perfect”. The only way to get used to
talking to the camera is to do it enough times. I can talk at length,
though I still find it hard to laugh when I am by myself, so I look
dead serious in all of my monologues. Whereas, say, in the “Prot Asks”
series I often laugh. This is because I have a natural response
towards someone. Talking to the selfie camera does not create in me
the same friendly emotions.</p>

<h2>Sharing code</h2>

<blockquote>
  <p>renaming things when I want to move them to a library</p>
</blockquote>

<p>Before finding a name, you need to have a clear vision for the
package: what is it meant to do. Then try to think about words that
describe either the goal or the workflow. Use phrases, like what you
have with “speech input”. Those work fine.</p>

<p>Come up with placeholder names if you are not sure. Then, once you are
ready to share the package, do a final round of thinking to check if
you can think of a more suitable name. Otherwise just use some
descriptive phrase.</p>

<p>This concerns the prefix for the entire package. Though your code may
still consist of different areas of focus. For example, in my <code class="language-plaintext highlighter-rouge">denote</code>
package there is a subset of functionality related to “rename”
operations. All of those share a compound prefix of the name of the
package plus the name of the area they are specialising in like this
helper function: <code class="language-plaintext highlighter-rouge">denote-rename-buffer--format</code>. By the name alone, I
can tell that it relates to the “rename” operation and, specifically,
is ancillary to <code class="language-plaintext highlighter-rouge">denote-rename-buffer</code>.</p>

<p>I can provide concrete suggestions for your code.</p>

<blockquote>
  <p>duplicating small functions (ex: simplify string)</p>
</blockquote>

<p>You may choose to put those in their own package. Though I personally
do not mind a little bit of duplication/repetition when that is easier
to maintain. The principle of not repeating yourself is good in
general, though there are cases where trying to avoid it is not worth
the effort.</p>

<blockquote>
  <p>figuring out how to make it possible for someone else to start using
my stuff</p>
</blockquote>

<p>For any non-trivial code you write, you want to treat it like its own
“package”. In other words, it exists in a file of its own, it has all
the <code class="language-plaintext highlighter-rouge">require</code> calls for its dependencies, defines <code class="language-plaintext highlighter-rouge">defcustom</code>
variables if it must, uses <code class="language-plaintext highlighter-rouge">autoload</code> where relevant, and has a
<code class="language-plaintext highlighter-rouge">provide</code> call at the end. Even if you never move it out of your
configuration, you have already done the work of clearing up your
thoughts/code. Others will already benefit from that, as they can now
copy the file with greater confidence in its utility.</p>

<h2>Questions for Prot</h2>

<blockquote>
  <p>Meta: what are people finding useful for coaching and behaviour
change, like learning new keyboard shortcuts or workflows?</p>
</blockquote>

<p>Each person has their own goals. Some enjoy a pair programming
session. Others like me to check on their progress and to provide
feedback. Plus, there is more than the purely Emacs component: I make
comments about matters of perspective, whether it is about some piece
of code or life in general.</p>

<p>Those granted, I do not collect any data about the people I meet. I do
not ask them for testimonials or feedback. I prefer not to do that
because I do not wish to ever have to handle private information. I
like my meetings to be nice and simple. Plus, I do not want to
manipulate or influence the behaviour of people.</p>

<blockquote>
  <p>Your literate config exports to individual .el files. I could
probably do something similar to separate my functions from my
personal config in order to make it easier for people to reuse parts
of my config. Is it worth doing so? Do people tell you that they use
those private Emacs Lisp files by loading them, or do they mostly
rely on your published packages?</p>
</blockquote>

<p>Most rely on my packages. I design those to be as flexible as possible
and maintain them accordingly.</p>

<p>The individual <code class="language-plaintext highlighter-rouge">.el</code> files of my configuration are helpful to me. I
stay in the flow of designing my code in a package-ready way. If
anybody needs to use it, then they already have something that is
close to an actual package.</p>

<blockquote>
  <p>Do you have some tweaks to make it easier to jump to function
definitions considering a literate configuration?</p>
</blockquote>

<p>No, I have not had a need for this. When I choose to work on some part
of my configuration, I navigate to the relevant heading (with
something like <code class="language-plaintext highlighter-rouge">consult-outline</code>) and then use <code class="language-plaintext highlighter-rouge">org-edit-special</code> to
edit the source block.</p>

<p>You will show me what you have been doing, which may give me some
ideas.</p>

<blockquote>
  <p>What’s your general process for migrating things from your config to
a repository or package?</p>
</blockquote>

<p>It all starts with splitting the code into many <code class="language-plaintext highlighter-rouge">.el</code> files. Make sure
one file is not entangled with other files. Or, at least, put in the
effort to list every other file as a dependency and write the
necessary <code class="language-plaintext highlighter-rouge">require</code> for it.</p>

<p>Have one such file for each area of focus. This way you can reason
about what you have and what may be missing. A clear initial idea will
determine the direction of the package long-term. The reason is that
it establishes boundaries: what to do and what not to do.</p>

<p>From there, you can decide if some file is of value to other users. If
you think it is, then start implementing <code class="language-plaintext highlighter-rouge">defcustom</code> variables for it,
define the commands that users would want, and have <code class="language-plaintext highlighter-rouge">autoload</code>
directives for them if they are meant as points of entry.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Sacrifice in the era of the adultchild</title>
      <description>An essay from my journal in which I comment on the prevailing norms in my culture and, probably, that of other cultures around the world</description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-30-sacrifice-era-adultchild/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-30-sacrifice-era-adultchild/</guid>
      <content:encoded><![CDATA[<p>This is an essay from my journal. It is a commentary on the prevailing
norms in my culture and, probably, that of other cultures around the
world.</p>

<hr />

<p>Strong cold winds this evening. Apparent temperatures are hovering
slightly above zero degrees Celsius. The days remain cloudy. We have
gotten plenty of rainfall, with much more to come. It has been an
exceptionally dark five months since early November. Once October is
over, the days get noticeably shorter until the winter solstice. After
that we gain roughly a minute of sunlight each day. Though it does not
feel that way until around the spring equinox because winter coincides
with the rainy season.</p>

<p>Dark days and brights days are practically the same here. It is not
like those busy places where people congregate some square to enjoy
the sunshine. I live outside any built-up area. Though, generally,
there are few residents in the Cypriot hinterlands. Three of them died
recently of old age. Many more will follow soon. Nobody is taking
their stead. The local communities are vanishing. I cannot remember
the last time I met a local who is younger than me.</p>

<p>I am part of the problem. I do not have a family. Never got the
chance. Nor do most of my relatives. Not even any of my friends back
in Greece. Were it just me, I would blithely admit to my shortcomings.
I do not have a fragile ego, anyway, and have no problem acknowledging
that I am a loser. Such is the world. Not all can be winners. I am
sure I could be doing things differently and trying to be an even
better version of myself. Though I refuse to accept that everyone I
know well is just defective. There are systemic issues at play.</p>

<p>The economic situation is the obvious explanation, though I find it
wanting. The generations of my grandparents and their grandparents had
5+ children each. They were dirt pour, dealt with wars at home, while
they had to work long hours for every sort of activity we now take for
granted. Try to wash the clothes by hand, for example. Make your own
bread for the family. Prepare sausages, cheese, pickles, jams, et
cetera to understand how it is to not throw anything away. Carry the
harvest with the donkeys under the beating sun. Work the fields with
limited equipment while it is raining. Mend your shoes and patch your
own clothes, as you will not get new ones. And so on. Every task was
labour intensive and punishing. Their diet was strictly seasonal. They
would eat whatever was available at the given time of the year. They
could not afford to be picky: a life of austerity beats any capricious
wants out of you.</p>

<p>Their communities were thriving though. There was vitality all around.
The village closest to my house used to have a few thousand residents
only a few decades ago. Most of them were young. Today there are only
tens of them registered with the local authorities and none of them is
brimming with zest. Nobody is curious to learn something new or try
new experiences. Although they are still around, they have effectively
checked out, waiting for their inevitable demise.</p>

<p>There is a trend among men to blame women for this state of affairs. I
do not share that worldview, even though I acknowledge the excesses of
toxic expressions of feminism. To me, what we are experiencing is a
crisis of values; a crisis of perspective. We have forgotten how to
make sacrifices. We have been conditioned by a brief period of
relative affluence and its attendant technological arrangements to
operate like children, as we demand immediate gratification in
increasingly more areas of life. This is the era of the person who
ages without growing mentally: the manchild or womanchild, else the
adultchild.</p>

<p>Fundamentally, our culture has lost respect, indeed awareness, for
magnitudes beyond one’s ego. The individual’s outlook is self-centred
and self-aggrandising: to get what one desires instantly and in
quantities that cannot possibly be exhausted, to prioritise one’s
wants above everything else, and to treat personal feelings as the
ironclad truth that the world must not assail.</p>

<p>From art to food, everything we experience as a stimulus is optimised
to keep us hooked. There is no more watching a movie: you binge watch
an entire series. You do not read the news, you doomscroll in search
for the next ragebait or lewd material. What we eat is turbocharged in
being salty, creamy, greasy, sugary, spicy, often most of those at
once. Fine art is abandoning its finesse and subtlety in pursuit of
intense colours and sharp sounds. Perhaps the want for gore is a
matter of necessity to catch the attention of those whose baseline of
stimulation is intensity as such.</p>

<p>This is a crisis of character. It cannot be addressed with a mere
edict from the government. People need to change their ways to
rediscover what always worked reasonably well. At the heart of such a
pivot to sustainability is sacrifice. To give up something you want
dearly. Sacrifice need not be bloody or, indeed, all that costly. It
can consist of virtually inconsequential rituals and practices that
introduce delayed gratification in everyday life. The goal is to
depose the child within from the throne it should never be occupying.
In other words, to train oneself to seek ever fewer of those
easy-to-get-easy-to-lose rushes of excitement.</p>

<p>Thinking back to my grandparents, they knew how to incorporate
sacrifice in their quotidian affairs. It empowered them to be patient
throughout and to gracefully adapt to all the hardships. One ritual my
grandmother, the matriarch of the family, would observe involved the
slicing of the New Year’s cake. While everyone, including little boy
me, was sitting at the table without making any noise, she would
slowly create pieces out of the delicacy. Child me wanted the first
piece and was being impatient. Grandma told me to remain silent and
show respect. “The first piece belongs to God”, she said. “The second
piece is for Jesus and the third for the Holy Spirit”. Then came all
the relatives who were not with us and only then would we be assigned
to a small piece of the cake.</p>

<p>Those two minutes of waiting were enough to teach me a valuable lesson
for life. I could overcome my immediate urge to devour the dish. I had
control over my self. I would do it for the common good. To recognise
that there are others at the table who are also waiting patiently to
be served. To further realise that I must extend my respect to
potential participants, the relatives who were not present, and then
the divine at-large. This was not a religious ceremony. My
grandparents were secular people who held an amalgamation of beliefs
drawing from the Greek religion, from Christianity, astrology, and all
sorts of magic. Yet their routines were underpinned by wisdom, the
kind of spirituality that one develops by dealing with the world, not
by trying to escape from it.</p>

<p>Same principle for when I would ask my grandfather for a new toy. We
would walk past a store and something flashy would capture my childish
attention. Grandpa would calmly respond “sure, my child, I will buy it
for you”, then he would pause for a second, “I will buy it on your
birthday”. I knew that my birthday was months away and would protest.
He taught me to wait and to measure my options. “A promise is a
promise”, he pointed out. Ultimately, I learnt to know what I want,
instead of falling for tricks and gimmicks. And I also developed the
same attitude of treating my word as sacrosanct, which is why I do not
talk big. When I state something, it is because I do it.</p>

<p>Those sacrifices were always small in scale. They did not constitute
any kind of devastating loss. That cake was all ours in the end. We
just had to go through that initial ritual. I now am at a point where
I appreciate that dedicating the first pieces to the gods is of
paramount importance. Not because the divine needs anything from us.
No. Not even because I necessarily believe in it the way major
religions preach. Again, no. God exists only when we act as if God
exists. This is because the divine inspires us to pursue our highest
as we think of the bigger picture. As such, our deeds will be of a
better sort, to the extent possible. And, conversely, God does not
exist when we behave as if God does not exist. For it is then that our
affairs are defined by that which is most pernicious.</p>

<p>This is not a matter of religiosity. There are plenty of believers I
have met who operate without respect for others or, indeed,
themselves. Theirs is a godless modus operandi, in the aforementioned
sense. It is religion in its tokenistic manifestation. Nothing but a
series of rites without substance; idolatry in essence. Respect is
towards all. It is inward and outward. And there are no exceptions to
it: it happens at home, in the workplace, the temple, and the great
outdoors. In short, it consists in recognising that there is a whole
world out there that does not revolved around one’s volition.</p>

<p>Perhaps the most pernicious, albeit well-meaning, claim in the
mainstream is how “God loves you the way you are”. While there is a
kernel of hope there, it teaches us to be complacent, to indulge in
our voracious wants, and then to maintain a transactional relationship
with the cosmos. All because of how special and entitled we think we
are.</p>

<p>In my world, the gods love nobody because they tend to the wellness of
all. Theirs is a cosmic reach. There can be no exception therein, no
special treatments, no shortcuts for the royalty, the parvenu middle
class, and the modest workers. All are exposed to the vicissitudes
that bring joy and grief. And all have to deal with the consequences
of actions, whether it is their own or those of people in their
milieu. There is no escape from the consequences, no matter how
valuable you think you are, sweetheart.</p>

<p>As such, we have to persevere through the troubles and take what comes
our way with grace. Only when we rediscover the spirit of sacrifice
and its concomitant grit, will we start seeing vibrant communities
again. Else we are moving towards our collective death. This is how
nature gets rid of unsustainable arrangements, after all.</p>

<p>In the era of the adultchild, I am reminded of the Greek concept of
«φυγοπονία» (feegoponia or feegopony), which literally means “flight
from pain/hardship”. Feegopony is the defining quality of the
adultchild and the midpoint of the modern society. It is up to each of
us to put forward the best version of ourselves, to pursue excellence,
and to do it with integrity. Maybe then we will remember how to
appreciate the little things.</p>

<p>But I have no hope of this happening anytime soon. The mountains are
being deserted because the adultchildren cannot tolerate the living
conditions here. They have it all, yet complain about how much they
are suffering. This is too cold, that is too dark, the other is too
difficult, and so on. We get what we deserve. It saddens me to know
that such an avoidable calamity seems inevitable.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Philosophy: about the God of war, anger, and nuance</title>
      <description>In this video I expound on the Greek notion of 'god of war' and how we can generally think in nuanced terms.</description>
      <pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/books/2026-03-28-god-of-war-anger-nuance/</link>
      <guid isPermaLink="true">https://protesilaos.com/books/2026-03-28-god-of-war-anger-nuance/</guid>
      <content:encoded><![CDATA[<p>In this 30-minute video I talk about the Greek god of war, Ares. I
note how the very concept of “god of war” can make us feel
uncomfortable because (i) we associate the divine with something noble
and (ii) we consider war ignoble.</p>

<p>I explain how we can appreciate the nuances by incorporating in our
thinking the notion that there is no pure instantiation of good or
evil. All that we are dealing with is in a state of admixture. What
makes something “good” or “bad” is a matter of degree, relative to an
inertial frame of reference.</p>

<p>Couched in those terms, I discuss the mechanics of conflict: it breaks
a given status quo. As such, it has in it the potential to undo a
given state of affairs which, in turn, may give way to something new.</p>

<p>By interpreting the world through its nuances, we move from the mode
of judging to the mode of describing and of adapting accordingly.
There is no opt-out from the things we do not like in this world.</p>

<p>As part of the presentation, I elaborate on why the Greeks think that
the concept of “god of war” is appropriately descriptive. Though I
also note that this is not a religious matter, but a view to how we
make sense of phenomena.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Maintaining projects long-term</title>
      <description>An entry from my journal where I explain how long-term projects help me stay focused and not get disheartened.</description>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-26-maintaining-projects-long-term/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-26-maintaining-projects-long-term/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal. I explain how long-term projects
help me stay focused.</p>

<hr />

<p>Local time is 23:00. I spent a combined total of five hours today
doing manual labour by the stream. Half of that was in the morning and
the remainder early in the afternoon, with a meal and then some
computer work in between and afterwards.</p>

<p>What I am doing outdoors these days is reinforcing my already robust
flood-control infrastructure. This has been an especially rainy
winter, coming off the back of two years of drought. As expected, soil
erosion occurs everywhere. I see it in the flowing waters downstream
at the base of the valley where I live: the waters are muddy and carry
with them gravel.</p>

<p>I collect all the coarse earth I can find. From gravel to small stones
and even large rocks that I can barely lift off the ground. Everything
is useful to me. Wherever there is a slippery spot in my land, I apply
gravel on top to improve traction. Depending on the specifics, I will
even make small holes to place stones in and then add soil on top. In
effect, I am making parts of the surface harder. Rocks are useful to
stairs and to reinforce all the edge from where water could flow.</p>

<p>The idea is to have soft terrain everywhere that I plant vegetables
and solid ground on all the pathways as well as the perimeter. Part of
this is my commitment to not fill the place up with concrete or make
it look like the walled garden of some mansion. I want it to remain
natural, even though it clearly is a largely controlled environment.</p>

<p>There is no pressing reason to do all of this project now. I could
wait for the rainy days to pass and commit to it during the summer.
Though this is not how I operate. My principle is to not postpone
things. If I can do something, I do it. When I say something, it is
the law. There are no excuses. In the summer there will be something
else to do or, maybe, I will just want to sunbathe and enjoy my day.</p>

<p>Maintaining projects long-term requires a certain level of enthusiasm.
You have to enjoy what you are doing. I wake up every morning with the
same zeal to carry out what I have committed to. I like that I have an
impact on my immediate environment and that I experience the feedback
loop between my actions and their consequences.</p>

<p>By discerning the results of my deeds, I have a better appreciation of
my power as well as its limitations. I am powerful, in the sense of
having the means to make certain things happen. Though I understand I
am not omnipotent. Everything requires a considerable amount of
physically taxing work. Those five hours today are barely noticeable
in terms of changes to the surroundings. There is a little bit here
and a little bit there. Nothing fancy.</p>

<p>Because I have been doing such work for long enough, I can estimate
how many workhours some initiative will take. I do not feel the
pressure to quit abruptly, as I never get frustrated with my progress.
I also do not set lofty targets: whatever I commit to will be done
when it is ready. The process is organic. If I need to stop, I do it
without feeling guilty about it. Though, generally, I work for long
hours. The point is that I do not turn myself into a servant of my own
standards. I remain in control, since I interpret my rules mindfully.
If the circumstances demand that I suspend their application, I do it
without hesitation. Otherwise, I would be reckless.</p>

<p>The immediate feedback loop of what I do informs my situational
awareness. I know what kind of initiative is viable and what is
impractical. I have an intuitive understanding of the economics of my
time. I will intentionally settle for a makeshift solution, if it buys
me enough time to collect money in pursuit of an improved arrangement.
Or, simply, if it allows me to prioritise another task in the
meantime. I do not expect perfection, because I am aware of my limited
resources. I love the little things, the nuances, those details that
are otherwise easy to miss. I do not need much to feel happy.</p>

<p>People sometimes tell me something along the lines of “I like your
life there and wish I could do the same”. It is one of those cases
where the adage “be careful what you wish for” applies fully. What
most fellas usually mean is that they would like to retain the life
they have and combine it with the serenity of a rural setting. This is
not how it is in my world though.</p>

<p>My life is one of austerity. Only a small part of that is my choice.
There are inherent constraints to a life in a sparsely populated
region that I cannot overcome. For example, I do not have any friends
here. I know most of the locals, but we merely are on good terms. I do
not have a deep connection with anybody. Nobody knows what I did
today, whether I created something or not, if I have any intellectual
pursuits… If I were to disappear tomorrow, nobody would lose
anything. I am an individual in what effectively is an alien world.</p>

<p>When there are few people around, people who are considerably older
than you, you do not get to choose who you spend your time with.
Either you pick the one option for socialisation or you just spend
your days alone. I do the latter. The good thing is that I can either
work on my projects without interruptions or go for hikes with my
dogs. So I am always doing something I enjoy. Though the point is that
I can tolerate this state of affairs because I do not ask for much.
Another person, especially someone who thinks that my life is cool but
has never lived this way before, will probably not have the same
tolerance for uneventfulness.</p>

<p>Against this backdrop, maintaining projects for years is a reliable
way to remain focused and to not be disheartened. I tend to the work
that requires my input. Its results benefit my life in a tangible way.
I remain at the peak of my powers, as sharp and active as ever,
largely because what I do does not take a toll on my state of mind. I
will continue to quietly do my thing in this little corner. Nobody
will notice, though I always take stock of the progress, which is all
that matters.</p>

<p>It is time to go to bed now. The dogs have been sleeping for a couple
of hours already. We will all be up at sunrise, ready to start our
morning with the same decisiveness that defined this day.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Prot Asks: Arkadiusz about blindness, Emacspeak, Hyperbole, Chinese and Slavic culture</title>
      <description>In this 2-hour video I talk with Arkadiusz about how he uses the computer as a blind person and several other topics.</description>
      <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/prot-asks/2026-03-25-arkadiusz-blindness-emacspeak-hyperbole-chinese-slavic-culture/</link>
      <guid isPermaLink="true">https://protesilaos.com/prot-asks/2026-03-25-arkadiusz-blindness-emacspeak-hyperbole-chinese-slavic-culture/</guid>
      <content:encoded><![CDATA[<p>In this 2-hour video I talk with Arkadiusz about how he uses the
computer as a blind person. We also cover a range of other issues,
from cultural values to topics of artificial intelligence. Much of our
conversation revolves around the use of Emacs, which empowers
Arkadiusz to do much of his computing.</p>

<p>Emacs has a package called <code class="language-plaintext highlighter-rouge">emacspeak</code>, which provides an audio
interface to the computer. Arkadiusz explains how this is a powerful
piece of technology because it benefits greatly from the
introspectability and extensibility of Emacs. I get an idea of how
<code class="language-plaintext highlighter-rouge">emacspeak</code> works and how it can augment the experience by giving
feedback about the given context.</p>

<p>Another Emacs package that has context-aware functionality is
<code class="language-plaintext highlighter-rouge">hyperbole</code>. Arkadiusz considers it an excellent addition to his
workflow. With <code class="language-plaintext highlighter-rouge">hyperbole</code> Arkadiusz has developed the intuition to
quickly act on so-called “implicit buttons”, which are portions of
text that <code class="language-plaintext highlighter-rouge">hyperbole</code> can do something useful on. There also are
“explicit buttons”, which Arkadiusz has designed himself to perform
actions that streamline his workflow.</p>

<p>As we gradually move away from discussing Emacs, I ask Arkadiusz about
his study of Chinese. He tells me the experience he had back in
Poland, his native country, and how he was able to continue his
studies in Italy. Part of this discussion covers Arkadiusz’s blindness
and describes how he showed strength of character to not let a setback
derail his life.</p>

<p>I then want to learn more about the connection between Chinese and
Slavic cultures. Arkadiusz suggests that there are some shared values
between the two cultures, even though politics may sometimes get in
the way. I learn how people value virtues such as hard work and
honesty. To this end, I comment that the ethos is essentially about
not settling for mediocrity when you can have excellence.</p>

<p>Our discussion continues into accessibility beyond the computer.
Arkadiusz tells me how it is to live as a blind person and how one
depends on the infrastructure being accessible. To illustrate the
point, Arkadiusz tells me that he could never live like me alone in
the mountains, even if he likes to, because some of the essentials for
him would not be available. Along those lines, Arkadiusz shares his
thoughts about not overly protecting people, such as in the case of
special schools, as that tends to have adverse long-term effects:
people have to be exposed to society at-large and thus need to be able
to cope with it.</p>

<p>As we continue talking, we eventually get to the point of Artificial
Intelligence, which Arkadiusz correctly distinguishes from machine
learning. I want to learn what Arkadiusz thinks about the present
state of affairs. Arkadiusz explains his moral reservations about AI
and how, fundamentally, it being controlled by a handful of
corporations is harmful. We discuss several related issues along those
lines, including matters of personal creativity.</p>

<h2>Links from Arkadiusz</h2>

<p>These pertain to a talk Arkadiusz gave at the Pragma 2025 conference
about using the computer as a blind person.</p>

<ol>
  <li>Pragma video: <a href="https://www.youtube.com/watch?v=Ry77etLCAfg">https://www.youtube.com/watch?v=Ry77etLCAfg</a>.</li>
  <li>Presentation repository: <a href="https://github.com/Nuno69/Pragma2025">https://github.com/Nuno69/Pragma2025</a>.</li>
</ol>

<h2>About “Prot Asks”</h2>

<p>In this video series, I talk to anybody who is interested to have a
video call with me (so do contact me if you want!). The topics cover
anything related to Emacs, technology, and life in general. More here:
<a href="https://protesilaos.com/prot-asks">https://protesilaos.com/prot-asks</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: Of carmine clouds</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-03-24-carmine-clouds/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-03-24-carmine-clouds/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Of carmine clouds I think
while searching for
the flowing waters
of rejuvenation
Like structural colour
in the eyes of whom
shall not be named
indeterminate you are
Yet deep down I know
there will come a day
when you will tell us
where you went and why
nobody ever joined you
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: spontaneous live stream Tuesday 24 March @ 21:30 Europe/Athens</title>
      <description>I am doing a live stream related to Emacs, where I will continue working on my denote-sequence package.</description>
      <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-24-emacs-another-spontaneous-live-stream/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-24-emacs-another-spontaneous-live-stream/</guid>
      <content:encoded><![CDATA[<p>[ The stream will be recorded. You can watch it later. ]</p>

<p>At 21:30 Europe/Athens time I will do a live stream (~30 minutes from
this writing). The plan is to continue some of the work I am doing on
my denote-sequence package for Emacs.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: spontaneous live stream Monday 23 March @ 17:00 Europe/Athens</title>
      <description>I am doing a live stream related to Emacs, where I will try to implement a new feature for the denote-sequence package.</description>
      <pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-23-emacs-spontaneous-live-stream/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-23-emacs-spontaneous-live-stream/</guid>
      <content:encoded><![CDATA[<p>[ The stream will be recorded. You can watch it later. ]</p>

<p>I do not have any work this evening, so I will do a live stream. My
plan is to do some programming. I have a new idea for the
<code class="language-plaintext highlighter-rouge">denote-sequence</code> package that I will try to implement.</p>

<p>If there are any questions from the chat, I will answer them. They can
be about what I will be working on or any other topic.</p>

<p>Talk to you soon!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: doric-themes version 1.1.0</title>
      <description>Minimalist themes for GNU Emacs to complement my ef-themes (maximalist) and modus-themes (moderate).</description>
      <pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-23-emacs-doric-themes-1-1-0/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-23-emacs-doric-themes-1-1-0/</guid>
      <content:encoded><![CDATA[<p>These are my minimalist themes. They use few colours and will appear
mostly monochromatic in many contexts. Styles involve the careful use
of typography, such as italics and bold italics.</p>

<p>If you want maximalist themes in terms of colour, check my <code class="language-plaintext highlighter-rouge">ef-themes</code>
package. For something in-between, which I would consider the best
“default theme” for a text editor, opt for my <code class="language-plaintext highlighter-rouge">modus-themes</code>.</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">doric-themes</code></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/doric-themes-pictures">https://protesilaos.com/emacs/doric-themes-pictures</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/doric-themes">https://github.com/protesilaos/doric-themes</a></li>
  <li>Backronym: Doric Only Really Intensifies Conservatively … themes.</li>
</ul>

<p>Below are the release notes.</p>

<hr />

<h2>Version 1.1.0 on 2026-03-23</h2>

<p>This version introduces minor refinements to the underlying code as
well as four new themes.</p>

<p>The new themes are as follows:</p>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">doric-almond</code>: A light theme that combines green and magenta
colours. It evokes a feeling of early springtime, as the almond tree
is among the first to bloom.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">doric-coral</code>: A light theme with a warmer feel that combines red,
orange, and cyan colours against a sandy backdrop.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">doric-magma</code>: A dark theme with a dominant red and orange style.
The combination of those intense hues with lighter greys creates the
necessary balance.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">doric-walnut</code>: A dark theme with an overall green style, drawing
inspiration from the broad leaves of the walnut tree. The green
colours are combined with shades of brown and grey to make for a
pleasant presentation.</p>
  </li>
</ul>

<p>Enjoy!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>The responsibility to keep flowing</title>
      <description>I describe the prevailing conditions in my mountains and how those relate to matters of complacency, responsibility, foresight, and adaptability.</description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-21-responsibility-keep-flowing/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-21-responsibility-keep-flowing/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal. I describe the prevailing
conditions in my mountains and how those relate to matters of
complacency, responsibility, foresight, and adaptability.</p>

<hr />

<p>The rainy days continue. Twice I went with the dogs for a walk while
it was pouring, only to encounter heavy rainfall along the way. We
could not afford to stay indoors any longer. The dogs need it and I
enjoy my hikes as well. I have ran out of dry shoes to wear, though
this is not a major problem: I can always walk barefoot, which I have
done plenty of times. Granted, that is not my preferred mode of
traversing the mountains, as it increases the risk of injury. Though I
can tolerate it—and I am extra cautious.</p>

<p>This morning I discovered that the side of the slope opposite my land
collapsed under the pressure. The stream below it is very strong right
now, as are the showers coming from above. My side remains intact
because of the flood-control projects I have been doing. I rely on
natural means, such as grass/herbs/bushes for holding together the
surface level and roots of trees to keep the underground in place.
Though I have also added rocks and whatever odds and ends I could
gather to function as barriers that shield the land from the running
waters.</p>

<p>There are landslides in many parts around my area. Large boulders have
rolled downhill. I expect more of the same for the next ~10 days. It
is what happens after two years of drought. Though the human element
cannot be underestimated.</p>

<p>Most farmers have this misbegotten notion that everything in and
around their land should stay “clean”. They thus cut down everything,
poison it, and burn it, leaving a near-naked landscape in their wake:
neat and tidy, for sure. Then, when this kind of weather finally
arrives, they can only marvel at what I may poetically describe as
“the wrath of the gods”.</p>

<p>The gods are not interested in avenging anybody or in helping us fight
for some cause. That sort of narrative gives us too much credit. What
is happening here is a matter for people to use their common sense,
take responsibility for their deeds, and stop blaming their lack of
foresight on the putative whims of the divine.</p>

<p>Everything matters in the system. There is nothing that you can
eliminate without incurring a cost. Everything you do has far-reaching
implications, whose effects condition the subsequent workings of the
system. You remove a so-called “useless” tree from the edges of your
land, thus creating a vacuum. In its stead shall arise a new order,
whose particularities you have not foreseen and no longer control for.
It starts with a small slide until it turns into a deep fissure.</p>

<p>What happens in our natural milieu also applies to human affairs, even
though we mistakenly fancy ourselves as occupying a special place in
the natural order. For example, international relations exhibit the
same pattern of a power vacuum being filled in by newer forces. There
is no such thing as idleness or rest. The cultures which think they
have done their part and can now “just chill” are those which will go
extinct. But I digress.</p>

<p>The point is that it is irresponsible to be complacent about any given
status quo. Perform rigorous inspections. Question how things are. If
something stands the test of time, try to understand it instead of
dismissing it as old and parochial: it probably encodes millennia of
wisdom, whose finer points elude you. In other words, do not be smug
and do not take what you have for granted. This can be about the land
you are homesteading or the polity you are a member of. Everything can
degenerate quickly if left unchecked.</p>

<p>Complacency is, at its core, a turn inward. It happens when the person
or group no longer has situational awareness. They do not pay
attention to their environment. Indeed, they think of their
surroundings as inert “environment”, as that which merely envelops
their subject, instead of a living organism with its own patterns of
behaviour: a system of systems all the way up and down. To turn inward
is to think of oneself as special, at least in the belief that one is
immune to damage or decline.</p>

<p>Complacency is typically made manifest in views that tout humankind as
exceptional in this world. “God loves you”, is an oft spoken claim.
“You” in particular? How cute! Will the application of the rules be
suspended just because of “you”, darling? Of course not. I think it is
more appropriate, for the sake of artistic expression, to say that the
gods do not tend to our wellness in particular, either individually or
collectively, but to the cosmic balance at-large. The rest is your
problem. If, for example, you do not account for the mechanics of the
living universe that you are a part of, and if you thus proceed to
destroy the elements of it whose functioning you do not understand,
then no god will come to your rescue once calamity inevitably strikes.</p>

<p>When farmers here opt for the easy solution of spraying poison all
over the place and setting the rest on fire, they think they have
discovered some miraculous “science” that lets them get the job done
in a few minutes instead of labouring at the farm all day. In other
words, they fancy themselves as smart. What they do not consider are
the externalities. There is a cost to keeping the place “clean”, only
it is beyond the horizon of their short-term thinking.</p>

<p>All of this is an exercise in prescience and decisiveness; an exercise
in assuming responsibility and taking the initiative. I knew that
there would come a day where the severe droughts would be followed by
intense precipitation. For several months since the early days I got
here I laboured to secure my position. And I remain vigilant in case
of an emergency.</p>

<p>Everything continues to flow. To live in this world, one has to be
adaptable, poised to act when the situation demands it, while also
ready to change their ways if the results are not as expected. Above
all, though, one must show respect and self-awareness in recognising
their limits. We all learn from mistakes. The key is to embed all
teachings into our lifestyle, without thinking too highly of what we
do.</p>

<p>I can hear the running waters from my room. I enjoy listening to them
all day. This is a beautiful state of affairs. Whether it is so
despite or because of its latent danger, I cannot tell. Perhaps both.
Awe is, after all, the combination of admiration and fear. What I do
get as part of the input is also a stark reminder that this world is
not (i) revolving around me and (ii) conspiring in my favour.
Underestimate the phenomena or overestimate your abilities and your
life shall be forfeit.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Maintaining the long-term view</title>
      <description>An entry from my journal in which I describe how I do not lose my patience while working in my land.</description>
      <pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-20-maintaining-long-term-view/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-20-maintaining-long-term-view/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal. I describe how I do not lose my
patience while working in my land.</p>

<hr />

<p>22:45 local time. Heavy rainfall, strong winds, and low temperature.
This is how the whole day unfolded. The forecast is for more rain
until the end of the month, albeit at a lesser intensity.</p>

<p>The flood-control and anti-erosion projects I have been working on
have held well. Today was the most demanding stress test. I started
thinking of how to control floods at a time when there were barely any
rainy days. I knew that I needed to be ready for that eventuality. But
I do not rest on my laurels. My approach has been a success thus far,
though the execution of it can always be improved.</p>

<p>This morning I inspected the parts bordering the nearby stream. They
could benefit from some further reinforcements, namely, an extra layer
of stone and gravel. I had already collected a large pile of gravel
from the stream before it got flooded. It probably fills up three
handcarts. I then walked by the nearby river to collect large rocks.
Some of them I could barely lift off the ground. Little by little, I
placed them in the handcart and placed them where they needed to be.</p>

<p>In the coming days, I will collect more stones. I need them to
reinforce the stairs on the side of the hillock where the solar panels
are. When I first did those, I merely carved them into the mountain.
They are just soil. Continuous exposure to rainfall will turn any
stepped surface into a slide. This is because of how the water
accumulates until it eventually flows down, thus movign the soil with
it and creating the slope. Adding stones on the top and the base of
each stair ensures that rainwater cannot have this effect. I have
successfully done this already in some other parts. Time to update the
oldest staircase I built here almost three years ago.</p>

<p>Doing anything in the rain is not comfortable. At least not when you
need to muster the willpower to start working. Past experience helps
though, as you know that the initial discomfort quickly fades. The
difficulty, then, consists in not losing your resolve within those
first few seconds. Having a good reason to act is also helpful, if not
essential: it compels you to move outside of your comfort zone and it
makes you more invested in a positive outcome. If you do not believe
in the cause, you will struggle to cope with the challenge. Belief is
what grants a person the power to fight against all the odds.</p>

<p>What underpins my efforts is the longer-term understanding of my
situation. I do not feel entitled to wellness. It was never easy out
there, except when I was a baby being taken care of by my parents. I
accept all the intermediate problems as part of the larger process
that is my life. I have my land and am improving it as I go. It will
eventually be a decent and safe place. This is how an acorn develops
into a vulnerable sprout, then a flimsy little tree, until it
eventually becomes a majestic oak tree.</p>

<p>I understand that I cannot rush things into existence. They can only
happen organically, as the cumulative effect of deeds that occur at a
smaller scale. Everything takes time. To move a few large rocks here I
need a couple of hours. To then do something useful with them is
another labour-intensive endeavour that will typically take up an
entire morning.</p>

<p>When you are in the mode of doing, patience comes naturally. It would
make no sense to become whinny, for example, about the fact that my
original staircase is not perfect. I understood the trade-offs back
then when I needed to have access to the hillock in order to install
the solar panels and move on to the rest of the house. And I remain
aware of the costs and benefits at each stage.</p>

<p>Conversely, when you operate exclusively at the level of aspirations
and wishful thinking, you have no frame of reference, no sense of the
economics of your limited resources, and thus no room for patience.
Same principle for disconcerted, ill-thought initiatives: you have to
know what you want and what your priorities are. Having electricity
and a roof over my head was more important at that time than making
sure the staircase would not be prone to erosion after a few years of
continuous exposure to the elements.</p>

<p>It is fine to be demanding and to seek perfection. I want to be the
best version of myself and continuously try to push the boundaries.
Though perfectionism can easily lead to inaction when it develops into
an intolerance towards intermediate—occasionally makeshift and
outright unappealing—arrangements.</p>

<p>I know not to worry about marginal gains when I have bigger issues to
focus on. The “good enough” or the “workable” is all I need at this
point. The strategy is one of preserving my vitality, the core of my
presence here, and then gradually expanding its reach. There are so
many interesting things I can do in my land. It would be cool, for
instance, to have a traditional oven somewhere outside. But this is an
item for the wishlist. It cannot be done now or in the foreseeable
future.</p>

<p>I am aware of my past and of how I ended up in this predicament. I
understand the “why” I am putting myself through the rigours. And I
have knowledge of the “what” I am working towards. The mind is clear.
There are no distractions, no unattainable and ultimately wasteful
wants. My thoughts will simply not set me up for failure. The body is
thus empowered to be tenacious and relentless.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Preparing for springtime</title>
      <description>I describe what I am doing these days and how I feel about the living environment I am a part of.</description>
      <pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-16-preparing-for-springtime/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-16-preparing-for-springtime/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal. I describe what I am doing these
days and how I feel about the living environment I am a part of.</p>

<hr />

<p>These days I am making raised garden beds for the coming spring. In
them I will plant tomatoes, zucchinis, and onions. It is still too
early to start with the vegetables, but I want the land to be ready as
soon as the temperatures get a bit warmer.</p>

<p>I also continuously inspect every spot in my land to have an idea of
how it is developing. This is a living system. It does not remain
static. At one spot, I identified eleven new blackthorns. They are
less than thirty centimetres in height, yet are growing fast. I had
cleared the land there last year, which created a vacuum that those
shrubs will soon fill in. At another location there are three new
almond tree offshoots that have just popped out of the ground. Within
six months they will be over a metre tall.</p>

<p>Whenever I clear some land, I do it with the intent of giving this
living system that I participate in a certain direction. I do not
destroy it, even when I cut something down or create a new opening.
Many people will bring their notions for the living room to the
outdoors. They want the fields to look “clean”, which is far more
invasive of a project than whatever one does to their living room.</p>

<p>Sometimes I get questions from labourers heading to the mountains:
“why did you leave the grass here?”, to which I respond “because it
does no harm”. They are used to spraying chemicals everywhere. I walk
past vineyards only to witness the grass in a yellow-red colour, a
sign that it is rapidly decaying from poisoning. There is nothing
there to hold the soil together. Once the land is dry and prone to
erosion, those same people bring in diggers and tractors to fix the
mess they created. But they never pause to consider that they could
cooperate with the land instead of being in direct conflict with it.</p>

<p>To me, my presence here is not a zero-sum game. I am not dominating my
area. I am shaping it, while giving other organisms the room to
thrive. They benefit from my initiatives, while I enjoy the benign
effect their life has on my stay here. I consider myself responsible
for their wellness. Even though I plan to live in this place for the
rest of my days, I see myself as a guest. I want to respect what I
have found and leave it in a good condition for those who will come
after I am gone.</p>

<p>Because of the severe droughts these past two years, I did not have
success in my farming endeavours. None of the vegetables made it.
While many of the trees I planted got burnt. Still, the side effects
of my careful labour are tremendously positive. There are so many new
trees and shrubs that are growing. Same for grapevines and aromatic
rose bushes. I have lots of them now.</p>

<p>All the transplants I have done these past few months have been
successful. I mostly focused on moving aromatic roses at the perimeter
of my land. They look beautiful, which is always a plus. But they also
perform the vital function of keeping the topmost layer of soil
intact. In other words, they prevent soil erosion coming from direct
rainfall. I combine those with rocks, to make the edges extra
resilient, given how grass and stone quickly form virtually
unbreakable bonds.</p>

<p>This winter has been especially rainy and there is forecast for yet
more heavy rainfall in the days to come. I am glad that all my work is
showing signs of progress, despite the setbacks with the droughts. I
know that I am moving towards the right direction. I have a clear
vision for my land and recognise that every form of life here has a
role to play.</p>

<p>In about a month from now the oak trees will start blossoming. At the
early stage they must be releasing some kind of sweet substance that
the honeybees adore. Whenever I walk outside during those days I hear
a constant buzz from what probably is millions of honeybees at work.
It does not disturb me. I stand there in admiration. I find it
remarkable how there is immanent reason throughout. One single insect
embodies know-how whose full extent eludes us.</p>

<p>I have observed time and again how this living system adapts to my
actions, in the same way I respond to the conditions it creates. I
clear some spot of land only to find that new vegetation grows there.
I plant some canes and then encounter doves take shelter among them. I
refrain from pruning dead branches off of some of the older almond
trees and each day am greeted to a crow or magpie sitting there. Birds
pick those branches because they provide a clear vantage point.</p>

<p>When a crow or magpie sees me, it does its familiar noises while
looking at me. I am confident that they know me. They must be
recognising the patterns in my motions. All animals do so: it is a
prerequisite for their survival to have situational awareness.</p>

<p>Plants are the same. They know, for example, that the spot is clear
for them to make their move. They understand how there is better
exposure to sunlight as well as improved access to air and, thus,
rainwater and humidity. Similarly, a root that gets exposed to the air
knows that it has to turn itself into an offshoot. It too is mindful.</p>

<p>I do not mean to suggest that other forms of life are human-like in
their qualities, but that what we think of as peculiar to humanity is
actually widespread.</p>

<p>Springtime is fast approaching. The more I understand my immediate
surroundings, the less important I feel I am. It is wonderful to be
aware of what is happening and to know that the world will carry on
without me.</p>

<p>“What do you do in your life?” One is inclined to write about their
career in the most favourable terms possible. I am content with “I
create clearings”.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Selfie: beard and hair are growing</title>
      <description>Selfie picture of me from the side showing my beard while holding my hair</description>
      <pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/selfies/2026-03-13-beard-hair-growing/</link>
      <guid isPermaLink="true">https://protesilaos.com/selfies/2026-03-13-beard-hair-growing/</guid>
      <content:encoded><![CDATA[]]></content:encoded>
    </item>
    
    <item>
      <title>Computing in freedom with GNU Emacs</title>
      <description>A holistic introduction to Emacs: how useful it is and how it champions free software.</description>
      <pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-13-computing-in-freedom-with-gnu-emacs/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-13-computing-in-freedom-with-gnu-emacs/</guid>
      <content:encoded><![CDATA[<p>This is a holistic introduction to Emacs: how useful it is and how it
champions free software. It is a modified version of the talk I did
for the “FLOSS @ Oxford” event, organised by people at the University
of Oxford. This is the page I wrote about that event:
<a href="https://protesilaos.com/codelog/2026-03-12-my-emacs-talk-floss-oxford/">https://protesilaos.com/codelog/2026-03-12-my-emacs-talk-floss-oxford/</a>.</p>

<hr />

<h1>Table of Contents</h1>

<ol>
  <li><a href="#orgfd50a75">This is a holistic introduction to Emacs</a></li>
  <li><a href="#org3a4ba20">Emacs as a capable text editor</a></li>
  <li><a href="#org5591f88">Support for Unicode</a></li>
  <li><a href="#orgf1c4f01">Include several fonts on the same page</a></li>
  <li><a href="#orge4f335e">Emacs can display graphics alongside text</a></li>
  <li><a href="#orgf8c1b6f">Emacs is an extensible text editor</a></li>
  <li><a href="#org99a48c2">Extending Emacs creates a community</a></li>
  <li><a href="#orgd27848f">The extensibility of Emacs happens live</a></li>
  <li><a href="#org394a3f3">My view without the “presentation mode”</a></li>
  <li><a href="#org034b25d">Emacs puts you in control of your computing</a></li>
  <li><a href="#org64517ba">Your control extends to all workflows</a></li>
  <li><a href="#org06c4615">For an integrated computing environment</a></li>
  <li><a href="#org40d4ee4">Many apps do not combine nicely</a></li>
  <li><a href="#orgd541b5c">Emacs makes your workflow consistent</a></li>
  <li><a href="#orgff36a33">Integrated computing in practice</a></li>
  <li><a href="#org3c03994">Emacs makes integration easier</a></li>
  <li><a href="#org79e8a3a">Integration gives you emergent properties</a></li>
  <li><a href="#orgf9e4f44">This is plain text that works like a slideshow</a></li>
  <li><a href="#orgc31ae17">Consistency facilitates productivity</a></li>
  <li><a href="#org124b771">Consistency remove the cognitive burden</a></li>
  <li><a href="#orgb512578">The consistency of Emacs in action</a></li>
  <li><a href="#org0bd43c1">Use Emacs Lisp to configure everything</a></li>
  <li><a href="#org2e55e24">Learning Emacs Lisp improves the experience</a></li>
  <li><a href="#org614ea19">Emacs embodies software freedom</a></li>
  <li><a href="#org40d68c8">The freedom of Emacs helps with learning</a></li>
  <li><a href="#orge1d150b">Emacs is not only for programmers</a></li>
  <li><a href="#org2be826e">You benefit from all the Emacs extensions</a></li>
  <li><a href="#org9f08566">Some powerful extensions are built-in</a></li>
  <li><a href="#org370d80c">The documentation culture of Emacs</a></li>
  <li><a href="#org96add87">Most packages have high quality manuals</a></li>
  <li><a href="#org45b5677">Emacs has a steep learning curve</a></li>
  <li><a href="#org4460604">Do not skip the manuals</a></li>
  <li><a href="#org5ce2296">Adjust your expectations</a></li>
  <li><a href="#org3e35022">Why it is worth learning how to use Emacs</a></li>
  <li><a href="#org8a7c786">The initial effort pays off long-term</a></li>
  <li><a href="#org9b2bf6a">Good luck and have fun!</a></li>
</ol>

<p>Hello everyone! My name is Protesilaos, also known as “Prot”.</p>

<p>This presentation is a modified version of the talk I gave last night
at the <em>FLOSS @ Oxford</em> event:
<a href="https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou">https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou</a>.</p>

<p>It was an event organised by people from the University of Oxford. I
thank them for giving me the opportunity to participate in their
programme.</p>

<p>I want to have this modified version here for people who do not read
my website. They may not be aware that I talked at this Oxford event.</p>

<p>Having the video on this platform means that everyone can benefit from
it.</p>

<p><a id="orgfd50a75"></a></p>

<h1>1 This is a holistic introduction to Emacs</h1>

<p>In this presentation I will talk to you about GNU Emacs, or simply,
“Emacs”. Emacs is a program you run on your computer. I am using it
right now for this presentation.</p>

<p>Emacs is free or libre software. It allows you to read all of its
source code, to modify it, and to share it with your customisations.
Thus you contribute to—and benefit from—a community of
welcoming Emacs users.</p>

<p>I will tell you what all this means in practice and how you can
improve your computing experience by switching to Emacs.</p>

<p><a id="org3a4ba20"></a></p>

<h1>2 Emacs as a capable text editor</h1>

<p>When you first start using Emacs, it feels like a regular text editor
program.</p>

<p>You move the cursor around and edit text. Nothing obviously impressive
out-of-the-box.</p>

<p>As a text editor, Emacs is highly capable. It has all sorts of
keyboard shortcuts that let you efficiently operate on text.</p>

<p>You can control Emacs without relying on the mouse, if you want.</p>

<p><a id="org5591f88"></a></p>

<h1>3 Support for Unicode</h1>

<p>Emacs supports the Unicode standard, which is essential for
inclusivity of peoples.</p>

<p>The world’s scripts can be expressed in Emacs. I am a native Greek
speaker.</p>

<p>I can use functionality that is built into Emacs to switch to the
Greek alphabet in order to write something, such as to say
«καλησπέρα», which means “good evening”.</p>

<p>I can even spell out “Dao De Jing” (道德经), which is the title of a
book from ancient China.</p>

<p>Plus emoji: 🦚🦬🐉.</p>

<p><a id="orgf1c4f01"></a></p>

<h1>4 Include several fonts on the same page</h1>

<p>The multitude of scripts can be present in the same document.</p>

<p>This is an advantage for multilingual people like myself or those who
do research that involves many natural languages.</p>

<p>Emacs can combine several fonts in the same page as well as different
colours.</p>

<p>Each fonts can have its own attributes, such as for its relative size
and typographic intensity.</p>

<p>Same idea for colours.</p>

<p>On my screen right now, I am already combining two different font
styles: that of the heading and the body of the text.</p>

<p><a id="orge4f335e"></a></p>

<h1>5 Emacs can display graphics alongside text</h1>

<p>Emacs does not limit you to a text-only interface. It can also display
images and PDF documents. Below I have a link to an image file. I will
now type a keyboard shortcut to reveal this image. And I will do it
again to hide it.</p>

<p>This, by the way, is a spot somewhere in my mountains.</p>

<p><a id="orgf8c1b6f"></a></p>

<h1>6 Emacs is an extensible text editor</h1>

<p>Although you can benefit from using Emacs as a generic text editor,
what really appeals to people like me is the option to extend Emacs.</p>

<p>“Extend” here means to introduce new functionality; functionality that
is not available in the default program you install on your computer.</p>

<p>These extensions are written in the same programming language as most
of Emacs. It is a programming language called “Emacs Lisp” or “Elisp”.</p>

<p>You can extend Emacs on your own, by writing some program in Elisp, or
you can download an existing extension that the community has made
available.</p>

<p><a id="org99a48c2"></a></p>

<h1>7 Extending Emacs creates a community</h1>

<p>For example, when I create a new extension for Emacs, I publish it
under the terms of a free software license—the same terms that
Emacs uses.</p>

<p>Others can then download my extension and use it as they prefer. If
they want, they can make their own modifications on top, which may
introduce other extensions that I had not thought of in my original
implementation.</p>

<p>And if those users follow my example, then I can also benefit from
their additions once they publish them.</p>

<p>As such, there exists a community of enthusiastic users of Emacs who
care about sharing their works with the rest of the world.</p>

<p><a id="orgd27848f"></a></p>

<h1>8 The extensibility of Emacs happens live</h1>

<p>Users can extend Emacs by running some Emacs Lisp program. Such a
program can be as short as a single line. Or it can be as long as it
needs to be. It does not matter.</p>

<p>Users run the program and Emacs immediately does what the program
renders possible.</p>

<p>For example, I am doing this presentation inside of Emacs. But Emacs
does not have a “presentation mode” built into it. I thus developed my
own extension which empowers me to do what I am doing right now.</p>

<p>Let me toggle off my presentation mode to show you what I mean.</p>

<p><a id="org394a3f3"></a></p>

<h1>9 My view without the “presentation mode”</h1>

<p>Notice that the display has changed.My main font is monospaced now.</p>

<p>The headings are smaller than they were before: they are the same size
as the rest of the text. There is no number next to the heading
anymore.</p>

<p>Then, there is a bar at the bottom of my screen, with information
about what I am working on. On the side, there are line numbers,
indicating where my cursor is in this file. Plus, my current line is
highlighted with a distinct background colour. Let me shift it up and
down to illustrate this point.</p>

<p>All those elements are useful while I am programming. But they look
distracting when I wish to focus on some portion of text. So, I just
type the keyboard shortcut I have and—voilà!—I get the
style I prefer.</p>

<p><a id="org034b25d"></a></p>

<h1>10 Emacs puts you in control of your computing</h1>

<p>You may wonder: why do I even need a customisable text editor?</p>

<p>The answer is about control. You are in charge of what you use and how
you use it. You can piece together a workflow that works the way you
prefer.</p>

<p>This presentation mode I toggled on and off earlier behaves exactly
how I want. I decided which set of interface tweaks to apply. Another
user may have a different preference in this regard.</p>

<p>For instance, they may like having line numbers on the side of the
screen. There is no right or wrong answer. What matters is that Emacs
gives us the means to do what makes sense to us.</p>

<p><a id="org64517ba"></a></p>

<h1>11 Your control extends to all workflows</h1>

<p>Now apply this principle to everything you can use Emacs for: this
will generally be a text-centric project.</p>

<p>I run my agenda exclusively through Emacs.</p>

<p>I handle all my email correspondence with Emacs.</p>

<p>I do programming and I write prose, such as blog posts for my website
and books or technical manuals.</p>

<p>For each of these, I know that Emacs will empower me to perform my
tasks without arbitrary restrictions.</p>

<p>Emacs lets me use Elisp to modify how I do my emails, for instance,
and how I present tasks in my custom agenda view.</p>

<p><a id="org06c4615"></a></p>

<h1>12 For an integrated computing environment</h1>

<p>Without Emacs, I would not be in a position to control my computing
experience to the extent I do.</p>

<p>The reason is that I would be relying on many different applications.
Each application has its own interface and design paradigms.</p>

<p>Each application is configured, if at all, in a way that is specific
to it. Customisations in one application do not carry over to other
applications.</p>

<p>And, if we consider the important implementation details, each
application may configurable in its own programming language.</p>

<p>In other words, that is not an integrated computing experience.</p>

<p><a id="org40d4ee4"></a></p>

<h1>13 Many apps do not combine nicely</h1>

<p>To have the same degree of control that Emacs makes possible, I would
have to hope that somehow all those disparate applications would
conspire in my favour.</p>

<p>That is wishful thinking.</p>

<p>The reality is that piecing together many different applications is an
exercise in frustration and the path to a life of ever-distracting
context switching.</p>

<p><a id="orgd541b5c"></a></p>

<h1>14 Emacs makes your workflow consistent</h1>

<p>Having everything I need inside of Emacs ensures that things happen in
a manner that is consistent.</p>

<p>All customisations are written in the same programming language,
namely, Emacs Lisp.</p>

<p>What I define for one context, such as this “presentation mode”, can
be used in another context.</p>

<p>For example, I can have this presentation style enabled when I read
emails. Why?</p>

<p>Because it can make it more comfortable for me at a certain hour. And
I can even automate this with conditional logic, so it happens on its
own when I open a new email under certain circumstances.</p>

<p><a id="orgff36a33"></a></p>

<h1>15 Integrated computing in practice</h1>

<p>When you work with many applications that do not play nicely together,
you cannot do something that the developers have not envisaged.</p>

<p>For example, your email client likely does not have access to a
“presentation mode”. Same for your other applications.</p>

<p>Similarly, your many applications will not necessarily know how to
read and interpret the configurations you have in one application.</p>

<p>Suppose you define your favourite colour scheme for your email client.
You take the time to consider the harmonies and use precise typography
to your liking.</p>

<p>Now, you switch to your calendar application and none of that work
carries over: you have to do it again, assuming it is even possible.</p>

<p><a id="org3c03994"></a></p>

<h1>16 Emacs makes integration easier</h1>

<p>Colours and styles may seem like relatively small issues. But they are
indicative of something greater: disparate applications do not work
together seamlessly.</p>

<p>Emacs does not have this problem. You define something for one context
you have in mind and, eventually, it can be used in another context
that initially you had not even thought of.</p>

<p>For example, in my Emacs I wrote a small function to quickly copy the
“thing” at where the cursor is. This is useful when I do programming,
as the “thing” can be an entire expression, like the definition of a
function. But the “thing” may also be a link that I got in my email.</p>

<p>I had not thought of that use-case in advance. Yet it was trivial to
have my function do what I need in this once unforeseen situation.</p>

<p><a id="org79e8a3a"></a></p>

<h1>17 Integration gives you emergent properties</h1>

<p>The integrated computing environment of Emacs is more than the sum of
its parts.</p>

<p>This is because you can combine different pieces of functionality in
ways that the original developer had not foresaw.</p>

<p>You do not simply have your writing, your email, your agenda, et
cetera, in Emacs.</p>

<p>You have the functionality of one in tandem with the functionality of
another. And you draw linkages between them as you see fit.</p>

<p>Consider once again this presentation I am now doing. What I have in
front of me is the transcript of my talk. This is a plain text
document, which I can edit live. Let me CAPITALISE THIS to illustrate
the point.</p>

<p><a id="orgf9e4f44"></a></p>

<h1>18 This is plain text that works like a slideshow</h1>

<p>I have made this file look a little bit like a series of slides.</p>

<p>Notice that if I scroll up and down, which I will do shortly, you only
get the current section I am reading from: you do not have access to
the rest of the document. I will scroll up and down now.</p>

<p>This is a feature known as “narrowing”. Let me “widen” the view and
then try to scroll again. You will now be exposed to the rest of the
text.</p>

<p>The original developer of this “narrowing” facility did not know how
someone like me would make use of it.</p>

<p>I have it here for my presentation. Each heading becomes its own
pseudo-slide. I have narrowing for my emails, when I want to read a
portion of the text in a more focused way. It is all about how I
choose to do my computing.</p>

<p><a id="orgc31ae17"></a></p>

<h1>19 Consistency facilitates productivity</h1>

<p>For many years before switching to Emacs, I did not enjoy using the
computer.</p>

<p>I needed too much time to accomplish every single task.</p>

<p>I could never find any of my files in a timely fashion because there
was no program that would enforce on my behalf a predictable
file-naming scheme.</p>

<p>All my notes were eventually not retrievable. This made them useless.
Data you save is only good if you can find what you are searching for.</p>

<p>My music collection was inconsistent because I needed special software
to write the metadata… In short, I was not as productive as I
would like to be.</p>

<p>And, above all, it was not fun.</p>

<p><a id="org124b771"></a></p>

<h1>20 Consistency remove the cognitive burden</h1>

<p>Most of my work at the time was centred around the email client and a
word processor.</p>

<p>The email client had its own subsystem for handling reminders for
tasks. The format of those tasks was not interoperable with other
programs.</p>

<p>I could not access the tasks with my favourite text editor. I thus had
to use the clunky interface of the email client, which was never
designed for task management—and was not configurable.</p>

<p>And then I had all the cognitively burdensome annoyances of my two
applications looking quite different from each other.</p>

<p>My emails did not behave like my documents, which made it harder for
me to flip between the two and continue writing. I would roll my eyes
each time.</p>

<p><a id="orgb512578"></a></p>

<h1>21 The consistency of Emacs in action</h1>

<p>Emacs has elevated my computing experience.</p>

<p>I have been much more productive ever since I switched to it. Allow me
to demonstrate a tiny bit of what I do each day.</p>

<p>I will temporarily exit the presentation mode in this window.</p>

<p>Then, in the bottom half of my screen, I will open my email client to
read a message I got.</p>

<p>Once you follow my switch to the email client, I will hide the window
that shows this presentation.</p>

<p>After that I will switch to my agenda to record a task and review what
I have to do.</p>

<p>All this is done inside of Emacs. Time for action!</p>

<p><a id="org0bd43c1"></a></p>

<h1>22 Use Emacs Lisp to configure everything</h1>

<p>What I just demonstrated is a very small part of what I do every
single day.</p>

<p>There is much more, though I cannot cover it all in this presentation.</p>

<p>The point, however, is the consistency of the experience; consistency
throughout.</p>

<p>I have customised my email client by writing some Emacs Lisp code for
it. I have done the same for the custom agenda I have. And much more.</p>

<p>Every time I work with Emacs Lisp, I acquire skills that are
applicable outside the confines of the problem I am solving.</p>

<p>For example, by configuring email the way I want, I pick up
programming skills that I can then apply to the design of my custom
agenda.</p>

<p><a id="org2e55e24"></a></p>

<h1>23 Learning Emacs Lisp improves the experience</h1>

<p>This is an investment that pays off more and more.</p>

<p>Emacs will adapt to match my evolving needs. Each new workflow I
incorporate in my Emacs setup will thus benefit from all the knowledge
and features I have accumulated.</p>

<p>I do not have to relearn everything because I am not switching to
another application.</p>

<p>I do not have to throw away all the work I did all those years. It is
here to stay.</p>

<p>I do not feel the pressure to try the new shiny app of the day. I did
that many times and always regretted it. I lost my data and time in
the process.</p>

<p>Because I am rooted in this stability of Emacs, I remain productive
and efficient.</p>

<p><a id="org614ea19"></a></p>

<h1>24 Emacs embodies software freedom</h1>

<p>I mentioned earlier that Emacs is free or libre software. This means
that you can read its source code, modify it, and share your changes
with others.</p>

<p>Emacs has a license that gives users power. There is no corporation
that can take Emacs away from us. It belongs to the community and we
all tend to its wellness.</p>

<p>In the case of Emacs, software freedom is not just about the license.
It informs how you use the program. Emacs makes such freedom an
irriducible part of its functionality.</p>

<p>You can, at any moment, ask Emacs what does a keyboard shortcut
actually do. What is the definition of a function. What is the value
of a variable. And you may even access the source code to check for
yourself.</p>

<p>I will demonstrate this right now.</p>

<p><a id="org40d68c8"></a></p>

<h1>25 The freedom of Emacs helps with learning</h1>

<p>I actually learnt to program in Emacs Lisp by exercising this freedom.</p>

<p>I would tinker with Emacs and continuously check on its state. What
does this do? Which function is called by that keyboard shortcut? How
is a program able to determine if the file is not saved?</p>

<p>I wanted to learn how, for example, we move down a line. From there, I
learnt that we can move down many lines at once.</p>

<p>I then figured that we can move down the lines and then also do
something else, such as place the cursor at the end of the line and
create a pulse effect to bring attention to it.</p>

<p>Not only did I learn how to configure Emacs, I even wrote tens of
extensions for it. I have also authored a libre book titled “Emacs
Lisp Elements”. This freedom is not theoretical. I did not have a
background in programming, yet was empowered to act and to grow as a
person.</p>

<p><a id="orge1d150b"></a></p>

<h1>26 Emacs is not only for programmers</h1>

<p>Emacs is extended with Emacs Lisp. If you know how to program in that
language, you can be extra opinionated and particular about the way
Emacs facilitates your work.</p>

<p>But even without any expertise of this sort, you can still do much of
what you like. Remember that I started using Emacs without a
background in programming.</p>

<p>Emacs blurs the distinction between user and developer. Many of the
developers actually start out as users like myself. They learn along
the way and, eventually, they contribute to the development of Emacs.</p>

<p>I even have written code that is in core Emacs: my <code class="language-plaintext highlighter-rouge">modus-themes</code> as
well as several other smaller patches.</p>

<p><a id="org2be826e"></a></p>

<h1>27 You benefit from all the Emacs extensions</h1>

<p>The Emacs community has developed a rich corpus of extensions. You do
not need to invent anything right away in order to be productive.</p>

<p>We call these extensions “packages”, as they are distributed in a way
that makes them easy to install and then use directly.</p>

<p>The Emacs program you will download on your computer ships with plenty
of packages built-in.</p>

<p>Depending on your needs, you may not even have to install anything
from what the community has to offer.</p>

<p>Though if you want a package, it is fairly easy to get it and run it
on your system.</p>

<p>Emacs is not picky about how you should use it. You are empowered to
be opinionated.</p>

<p><a id="org9f08566"></a></p>

<h1>28 Some powerful extensions are built-in</h1>

<p>For example, Emacs ships with a package called <code class="language-plaintext highlighter-rouge">org</code> or “Org mode”. At
its core, this is a markup language. I am using it right now in this
document.</p>

<p>Notice how lines that start with an asterisk function as headings.
This is what the markup does.</p>

<p>Org lets you write documents, including books, handle your tasks,
organise your agenda, and much more. It is a powerhouse.</p>

<p>There are so many things to discover in Emacs as well as the broader
package ecosystem.</p>

<p>Emacs as a whole provides high quality documentation that explains
everything.</p>

<p><a id="org370d80c"></a></p>

<h1>29 The documentation culture of Emacs</h1>

<p>When you install Emacs, you get with it plenty of technical manuals.
There is also an interactive tutorial to help you make sense of the
basics.</p>

<p>Furthermore, when you ask Emacs for help about the definition of a
function or the value of a variable, you receive the documentation for
the thing you are looking for.</p>

<p>The expectation for all contributions to the official Emacs program is
that the code is well-documented and the manual is updated
accordingly.</p>

<p><a id="org96add87"></a></p>

<h1>30 Most packages have high quality manuals</h1>

<p>Core Emacs sets the standard of what good documentation looks like.
Package developers follow this practice.</p>

<p>For example, my <code class="language-plaintext highlighter-rouge">denote</code> package has a manual that is over 7500 lines
long. It exceeds 52000 words. In it users find detailed instructions
as well as code snippets that they can copy and use outright. And this
is not the exception. All my packages are like that, to the extent
necessary. Most other developers do the same.</p>

<p>As a community, we have access to so much knowledge for free and in
freedom. If we are committed enough, we can learn from others and thus
become better ourselves. We do so in a spirit of sharing and caring.
For me, specifically, all this was of great help. I am self-taught
because I received all those great resources from the community. I
consider it my duty to give back in kind.</p>

<p><a id="org45b5677"></a></p>

<h1>31 Emacs has a steep learning curve</h1>

<p>Because Emacs is extensible, there is practically no limit to what you
can do with it. At least this is the case for all tasks that are
text-heavy.</p>

<p>Emacs will just gracefully evolve to match your requirements, provided
you can extend it on your own or with a relevant package.</p>

<p>The downside, however, is that it is not easy to become proficient in
it. If you are committed, you can learn the basics within the first
few days.</p>

<p>Though you will need to invest a few weeks or months to become
skillful. It depends on how much effort you put into it, what sort of
work you are doing, and what your background is.</p>

<p>I learnt the basics within a few days. I started writing my own Emacs
Lisp within weeks. And within a year I had my <code class="language-plaintext highlighter-rouge">modus-themes</code> moved
into core Emacs.</p>

<p><a id="org4460604"></a></p>

<h1>32 Do not skip the manuals</h1>

<p>Several “starter kits” are available to help you get started. They set
things up so that you do not need to discover everything at the
outset.</p>

<p>The new version of Emacs (Emacs 31) will even come with a “newcomers
theme”, which configures several settings in advance.</p>

<p>These can make the learning curve a bit smoother. For me, anything
that improves the onboarding experiences is a plus.</p>

<p>Though I do not think that Emacs will ever become “plug and play”.
This is due to its sheer depth and extensibility. It does so much that
you still need to invest the time and effort into learning it.</p>

<p>However you start, the most reliable study involves the manuals. Those
are written for the benefit of the user. Read them carefully.</p>

<p><a id="org5ce2296"></a></p>

<h1>33 Adjust your expectations</h1>

<p>What I can say with confidence is that Emacs is not for tourists. You
cannot switch to it with the expectation that you will have a good
time right away.</p>

<p>No. That will not work. There simply is no shortcut to excellence.</p>

<p>I encourage you to take it one step at a time. Emacs will make you
more productive, provided you are patient enough to unlock its
virtually boundless potential.</p>

<p>Take it slow and be methodical. Rely on the official manual no matter
your starting point. Read from it and gradually incorporate its
insights into your workflow.</p>

<p>The community—myself included—has plenty of resources to
complement that study. Blog posts, video tutorials, books… But
do not skip the official manual. Learning it slowly means that you
will become proficient faster than you otherwise would.</p>

<p><a id="org3e35022"></a></p>

<h1>34 Why it is worth learning how to use Emacs</h1>

<p>I already talked about the technical side of things with regard to the
integrated computing environment. Now combine that with two facts:</p>

<ol>
  <li>Emacs is free software. This means that we as a community are its
custodians.</li>
  <li>GNU Emacs has been around since the 1980s. It will stay relevant
for decades to come.</li>
</ol>

<p>Emacs is not old, it is timeless. This is because it can be extended
in a spirit of freedom.</p>

<p>Whatever new technology or idea we have as a collective, we can
eventually bring it into Emacs.</p>

<p>This way, our integrated computing environment adapts with the times.</p>

<p>Thus Emacs remains ever-relevant.</p>

<p><a id="org8a7c786"></a></p>

<h1>35 The initial effort pays off long-term</h1>

<p>Couched in those terms, the initial effort you will put into learning
Emacs is actually not that much.</p>

<p>You have to maintain a longer-term view of this project.</p>

<p>If you are patient, Emacs will be one of the most reliable tools you
will ever use throughout your life. And I say this as a handy man
myself, someone who uses many tools for manual labour, having built
the house I am in, among others.</p>

<p>I switched to Emacs in the summer of 2019. It is almost 7 years
already. I see no reason not to use it for the next 7 years, if I can.</p>

<p>I will still want to write articles, do programming, maintain my
agenda, and probably make presentations like this one.</p>

<p><a id="org9b2bf6a"></a></p>

<h1>36 Good luck and have fun!</h1>

<p>Remember that you will not learn Emacs over the weekend. You are in it
for the long-term. Take it slow and you will enjoy the experience.</p>

<p>This is all I have for you today folks. Thank you very much for your
attention!</p>

<p>You can find this and everything else I publish on my website:
<a href="https://protesilaos.com">https://protesilaos.com</a>.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>My Emacs talk for FLOSS @ Oxford</title>
      <description>I talked about how to do computing in freedom with GNU Emacs.</description>
      <pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-12-my-emacs-talk-floss-oxford/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-12-my-emacs-talk-floss-oxford/</guid>
      <content:encoded><![CDATA[<p>Earlier today, at 20:00 Europe/Athens time, I provided an introduction
to Emacs at the event <em>FLOSS @ Oxford</em>:
<a href="https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou">https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou</a>.</p>

<p>I had written the transcript ahead of time to make my presentation
more accessible. The event was held live as a Jitsi call. There were
questions from participants, which I answered. A recording of the
event will be available before the end of this week. I will update
this article to include a link to the video.</p>

<p><strong>UPDATE 2026-03-16 07:49 +0200:</strong> The video is here: <a href="https://ogeer.org/ox/rec/emacs/">https://ogeer.org/ox/rec/emacs/</a>.</p>

<p>Below is the text of my talk. It is titled “Computing in freedom with
GNU Emacs”. Note that some parts of my presentation only make sense in
the video format, though I tried to describe in the transcript what I
was demonstrating.</p>

<hr />

<h2>Table of Contents</h2>

<ol>
  <li><a href="#org0e4cb01">Emacs as a capable text editor</a></li>
  <li><a href="#orgdebea7c">Emacs can display graphics alongside text</a></li>
  <li><a href="#orgd2f5d4e">Emacs is an extensible text editor</a></li>
  <li><a href="#orga9b1321">The extensibility of Emacs happens live</a></li>
  <li><a href="#org5eb1f93">Emacs puts you in control of your computing</a></li>
  <li><a href="#org762fb96">The promise of an integrated computing environment</a></li>
  <li><a href="#org67eee16">The integrated computing environment in practice</a></li>
  <li><a href="#orgf22c1ca">Integration gives you emergent properties</a></li>
  <li><a href="#org8e5ca04">Consistency facilitates productivity</a></li>
  <li><a href="#orgec85da1">The consistency of Emacs in action</a></li>
  <li><a href="#org7b170ca">Use Emacs Lisp to configure everything</a></li>
  <li><a href="#org69f7675">Emacs is the embodiment of software freedom</a></li>
  <li><a href="#orgeca3b3b">You do not need to be a programmer to use Emacs</a></li>
  <li><a href="#org65643a6">The documentation culture of Emacs</a></li>
  <li><a href="#org78badb8">Emacs has a steep learning curve</a></li>
  <li><a href="#orge7a15c6">Why it is worth learning how to use Emacs</a></li>
  <li><a href="#org20e78ee">Good luck and have fun!</a></li>
</ol>

<p>Hello everyone! My name is Protesilaos, also known as “Prot”. I am
joining you from the mountains of Cyprus. Cyprus is an island in the
Eastern Mediterranean Sea.</p>

<p>In this presentation I will talk to you about GNU Emacs, or simply,
“Emacs”. Emacs is a program you run on your computer. I am using it
right now for this presentation.</p>

<p>Emacs is free or libre software. It allows you to read all of its
source code, to modify it, and to share it with your customisations.
Thus you contribute to—and benefit from—a community of
welcoming Emacs users.</p>

<p>I will tell you what all this means in practice and how you can
improve your computing experience by switching to Emacs.</p>

<p><a id="org0e4cb01"></a></p>

<h2>Emacs as a capable text editor</h2>

<p>When you first start using Emacs, it feels like a regular text editor
program. You move the cursor around and edit text. Nothing obviously
impressive out-of-the-box. As a text editor, Emacs is highly capable.
It has all sorts of keyboard shortcuts that let you efficiently
operate on text. You can control Emacs without relying on the mouse,
if you want.</p>

<p>Emacs supports the Unicode standard, which is essential for
inclusivity of peoples. The world’s scripts can be expressed in Emacs.
I am a native Greek speaker. I can use functionality that is built
into Emacs to switch to the Greek alphabet in order to write
something, such as to say «καλησπέρα», which means “good evening”. I
can even spell out “Dao De Jing” (道德经), which is the title of a
book from ancient China. Plus emoji: 🙃.</p>

<p>The multitude of scripts can be present in the same document. This is
an advantage for multilingual people or those who do research that
involves many natural languages.</p>

<p>Emacs can combine several fonts in the same page as well as different
colours. Each fonts can have its own attributes, such as for its
relative size and typographic intensity. Same idea for colours. On my
screen right now, I am already combining two different font styles:
that of the heading and the body of the text.</p>

<p><a id="orgdebea7c"></a></p>

<h2>Emacs can display graphics alongside text</h2>

<p>Emacs does not limit you to a text-only interface. It can also display
images and PDF documents. Below I have a link to an image file. I will
now type a keyboard shortcut to reveal this image. And I will do it
again to hide it.</p>

<p>[Here is an image that I do not need to reproduce on my website: the
specific image does not matter]</p>

<p>This, by the way, is a spot somewhere in my mountains.</p>

<p><a id="orgd2f5d4e"></a></p>

<h2>Emacs is an extensible text editor</h2>

<p>Although you can benefit from using Emacs as a generic text editor,
what really appeals to people like me is the option to extend Emacs.
“Extend” here means to introduce new functionality; functionality that
is not available in the default program you install on your computer.</p>

<p>These extensions are written in the same programming language as most
of Emacs. It is a programming language called “Emacs Lisp” or “Elisp”.
You can extend Emacs on your own, by writing some program in Elisp, or
you can download an existing extension that the community has made
available.</p>

<p>For example, when I create a new extension for Emacs, I publish it
under the terms of a free software license—the same terms that
Emacs uses. Others can then download my extension and use it as they
prefer. If they want, they can make their own modifications on top,
which may introduce other extensions that I had not thought of in my
original implementation. And if those users follow my example, then I
can also benefit from their additions once they publish them.</p>

<p>As such, there exists a community of enthusiastic users of Emacs who
care about sharing their works with the rest of the world.</p>

<p><a id="orga9b1321"></a></p>

<h2>The extensibility of Emacs happens live</h2>

<p>Users can extend Emacs by running some Emacs Lisp program. Such a
program can be as small as a single line. Or it can be as long as it
needs to be. It does not matter. Users run the program and Emacs
immediately does what the program renders possible.</p>

<p>For example, I am doing this presentation inside of Emacs. But Emacs
does not have a “presentation mode” built into it. I thus developed my
own extension which empowers me to do what I am doing right now. Let
me toggle off my presentation mode to show you what I mean.</p>

<p>Notice that the display has changed. My main font is monospaced now.
The headings are smaller than they were before: they are the same size
as the rest of the text. There is no number next to the heading
anymore. Then, there is a bar at the bottom of my screen, with
information about what I am working on. On the side, there are line
numbers, indicating where my cursor is in this file. Plus, my current
line is highlighted with a distinct background colour. Let me shift it
up and down to illustrate this point.</p>

<p>All those elements are useful while I am programming. But they look
distracting when I wish to focus on some portion of text. So, I just
type the keyboard shortcut I have and—voilà!—I get the
style I prefer.</p>

<p><a id="org5eb1f93"></a></p>

<h2>Emacs puts you in control of your computing</h2>

<p>You may wonder: why do I even need a customisable text editor? The
answer is about control. You are in charge of what you use and how you
use it. You can piece together a workflow that works the way you
prefer.</p>

<p>This presentation mode I toggled on and off earlier behaves exactly
how I want. I decided which set of interface tweaks to apply. Another
user may have a different preference in this regard. For instance,
they may like having line numbers on the side of the screen. There is
no right or wrong answer. What matters is that Emacs gives us the
means to do what makes sense to us.</p>

<p>Now apply this principle to everything you can use Emacs for: this
will generally be a text-centric project. I run my agenda exclusively
through Emacs. I handle all my email correspondence with Emacs. I do
programming and I write prose, such as blog posts for my website and
books or technical manuals.</p>

<p>For each of these, I know that Emacs will empower me to perform my
tasks without arbitrary restrictions. Emacs lets me use Elisp to
modify how I do my emails, for instance, and how I present tasks in my
custom agenda view.</p>

<p><a id="org762fb96"></a></p>

<h2>The promise of an integrated computing environment</h2>

<p>Without Emacs, I would not be in a position to control my computing
experience to the extent I do. The reason is that I would be relying
on many different applications. Each application has its own interface
and design paradigms. Each application is configured, if at all, in a
way that is specific to it. Customisations in one application do not
carry over to other applications. And, if we consider the important
implementation details, each application may configurable in its own
programming language.</p>

<p>In other words, that is not an integrated computing experience. To
have the same degree of control that Emacs makes possible, I would
have to hope that somehow all those disparate applications would
conspire in my favour. That is wishful thinking. The reality is that
piecing together many different applications is an exercise in
frustration and the path to a life of ever-distracting context
switching.</p>

<p>Having everything I need inside of Emacs ensures that things happen in
a manner that is consistent. All customisations are written in the
same programming language, namely, Emacs Lisp. What I define for one
context, such as this “presentation mode”, can be used in another
context. For example, I can have this presentation style enabled when
I read emails. Why? Because it can make it more comfortable for me at
a certain hour. And I can even automate this, so it happens on its own
when I open a new email.</p>

<p><a id="org67eee16"></a></p>

<h2>The integrated computing environment in practice</h2>

<p>When you work with many applications that do not play nicely together,
you cannot do something that the developers have not envisaged. For
example, your email client likely does not have access to a
“presentation mode”. Same for your other applications.</p>

<p>Similarly, your many applications will not necessarily know how to
read and interpret the configurations you have in one application.
Suppose you define your favourite colour scheme for your email client.
You take the time to consider the harmonies and use precise typography
to your liking. Now, you switch to your calendar application and none
of that work carries over: you have to do it again, assuming it is
even possible.</p>

<p>Colours and styles may seem like relatively small issues. But they are
indicative of something greater: disparate applications do not work
together seamlessly.</p>

<p>Emacs does not have this problem. You define something for one context
you have in mind and, eventually, it can be used in another context
that initially you had not even thought of. For example, in my Emacs I
wrote a small function to quickly copy the “thing” at where the cursor
is. This is useful when I do programming, as the “thing” can be an
entire expression, like the definition of a function. But the “thing”
may also be a link that I got in my email. I had not thought of that
use-case in advance.</p>

<p><a id="orgf22c1ca"></a></p>

<h2>Integration gives you emergent properties</h2>

<p>The integrated computing environment of Emacs is more than the sum of
its parts. This is because you can combine different pieces of
functionality in ways that the original developer had not foresaw. You
do not simply have your writing, your email, your agenda, et cetera,
in Emacs. You have the functionality of one in tandem with the
functionality of another. And you draw linkages between them as you
see fit.</p>

<p>Consider once again this presentation I am now doing. What I have in
front of me is the transcript of my talk. This is a plain text
document, which I can edit live. Let me CAPITALISE THIS to illustrate
the point. But I have made this file look a little bit like a series
of slides. Notice that if I scroll up and down, which I will do now,
you only get the current section I am reading from: you do not have
access to the rest of the document. This is a feature known as
“narrowing”. Let me “widen” the view and then try to scroll again. You
will now be exposed to the rest of the text.</p>

<p>The original developer of this “narrowing” facility did not know how
someone like me would make use of it. I have it here for my
presentation. Each heading becomes its own pseudo-slide. I have
narrowing for my emails, when I want to read a portion of the text in
a more focused way. It is all about how I choose to do my computing.</p>

<p><a id="org8e5ca04"></a></p>

<h2>Consistency facilitates productivity</h2>

<p>For many years before switching to Emacs, I did not enjoy using the
computer. I needed too much time to accomplish every single task. I
could never find any of my files in a timely fashion because there was
no program that would enforce on my behalf a predictable file-naming
scheme.</p>

<p>All my notes were eventually not retrievable. My music collection was
inconsistent because I needed special software to write the
metadata… In short, I was not as productive as I would like to
be. And, above all, it was not fun.</p>

<p>Most of my work at the time was centred around the email client and a
word processor. The email client had its own subsystem for handling
reminders for tasks. The format of those tasks was not interoperable
with other programs. I could not access it with my favourite text
editor. I thus had to use the clunky interface of the email client,
which was never designed for task management—and was not
configurable.</p>

<p>And then I had all the cognitively burdensome annoyances of my two
applications looking quite different from each other. My emails did
not behave like my documents, which made it harder for me to flip
between the two and continue writing.</p>

<p><a id="orgec85da1"></a></p>

<h2>The consistency of Emacs in action</h2>

<p>Emacs has elevated my computing experience. I have been much more
productive ever since I switched to it. Allow me to demonstrate a tiny
bit of what I do each day. I will temporarily exit the presentation
mode in this window. Then, in the bottom half of my screen, I will
open my email client to read a message I got. After that I will switch
to my agenda to record a task and review what I have to do. All this
is done inside of Emacs. Time for action!</p>

<p><a id="org7b170ca"></a></p>

<h2>Use Emacs Lisp to configure everything</h2>

<p>What I just demonstrated is a very small part of what I do every
single day. There is much more, though I cannot cover it all in this
presentation. The point, however, is the consistency of the
experience; consistency throughout.</p>

<p>I have customised my email client by writing some Emacs Lisp code for
it. I have done the same for the custom agenda I have. And much more.</p>

<p>Every time I work with Emacs Lisp, I acquire skills that are
applicable outside the confines of the problem I am solving. For
example, by configuring email the way I want, I pick up programming
skills that I can then apply to the design of my custom agenda.</p>

<p>This is an investment that pays off more and more. Emacs will grow or
shrink to match my evolving needs. Each new workflow I incorporate in
my Emacs setup will thus benefit from all the knowledge and features I
have accumulated.</p>

<p>I do not have to relearn everything. I do not have to throw away all
the work I did. It is here to stay. I do not feel the pressure to try
the new shiny app of the day. And, because I am rooted in this
stability, I remain productive and efficient.</p>

<p><a id="org69f7675"></a></p>

<h2>Emacs is the embodiment of software freedom</h2>

<p>I mentioned earlier that Emacs is free or libre software. This means
that you can read its source code, modify it, and share your changes
with others. Emacs has a license that gives users power. There is no
corporation that can take Emacs away from us. It belongs to the
community and we all tend to its wellness.</p>

<p>Software freedom is not just about the license. Emacs makes such
freedom an irriducible part of its functionality. You can, at any
moment, ask Emacs what does a keyboard shortcut actually do. What is
the definition of a function. What is the value of a variable. And you
may even access the source code to check for yourself.</p>

<p>I actually learnt to program in Emacs Lisp by exercising this freedom.
I would tinker with Emacs and continuously check on its state. I
wanted to learn how, for example, we move down a line. From there, I
learnt that we can move down many lines at once. I then figured that
we can move down the lines and then also do something else, such as
place the cursor at the end of the line and create a pulse effect to
bring attention to it.</p>

<p>Not only did I learn how to configure Emacs, I even wrote tens of
extensions for it. I have also authored a libre book titled “Emacs
Lisp Elements”. This freedom is not theoretical. I did not have a
background in programming, yet was empowered to act.</p>

<p><a id="orgeca3b3b"></a></p>

<h2>You do not need to be a programmer to use Emacs</h2>

<p>Emacs is extended with Emacs Lisp. If you know how to program in that
language, you can be extra opinionated and particular about the way
Emacs facilitates your work.</p>

<p>But even without any expertise of this sort, you can still do much of
what you like. This is because the Emacs community has developed a
rich corpus of extensions. We call these extensions “packages”, as
they are distributed in a way that makes them easy to install and then
use directly.</p>

<p>The Emacs program you will download on your computer ships with plenty
of packages built-in. Depending on your needs, you may not even have
to install anything from what the community has to offer.</p>

<p>For example, Emacs ships with a package called <code class="language-plaintext highlighter-rouge">org</code> or “Org mode”. At
its core, this is a markup language. I am using it right now in this
document. Notice how lines that start with an asterisk function as
headings. This is what the markup does. Org lets you write documents,
including books, handle your tasks, organise your agenda, and much
more. It is a powerhouse. There are so many things to discover. Emacs
provides high quality documentation that explains everything.</p>

<p><a id="org65643a6"></a></p>

<h2>The documentation culture of Emacs</h2>

<p>When you install Emacs, you get with it plenty of technical manuals.
There is also an interactive tutorial to help you make sense of the
basics. Furthermore, when you ask Emacs for help about the definition
of a function or the value of a variable, you receive the
documentation for the thing you are looking for.</p>

<p>The expectation for all contributions to the official Emacs program is
that the code is well-documented and the manual is updated
accordingly.</p>

<p>This is true also for packages that the community develops. For
example, my <code class="language-plaintext highlighter-rouge">denote</code> package has a manual that is over 7500 lines
long. It exceeds 52000 words. In it users find detailed instructions
as well as code snippets that they can copy and use outright. And this
is not the exception. All my packages are like that, to the extent
necessary. Most other developers do the same.</p>

<p>As a community, we have access to so much knowledge for free and in
freedom. If we are committed enough, we can learn from others and thus
become better ourselves. We do so in a spirit of sharing and caring.
For me, specifically, all this was of great help. I am self-taught
because I received all those great resources from the community. I
consider it my duty to give back in kind.</p>

<p><a id="org78badb8"></a></p>

<h2>Emacs has a steep learning curve</h2>

<p>Because Emacs is extensible, there is practically no limit to what you
can do with it. At least this is the case for all tasks that are
text-heavy. Emacs will just gracefully evolve to match your
requirements, provided you know how to extend it.</p>

<p>The downside, however, is that it is not easy to become proficient in
it. If you are committed, you can learn the basics within the first
few days. Though you will need to invest a few weeks or months to
become skillful. It depends on how much effort you put into it.</p>

<p>What I can say with confidence is that Emacs is not for tourists. You
cannot switch to it with the expectation that you will have a good
time right away. No. That will not work. There simply is no shortcut
to excellence.</p>

<p>I thus encourage you to adjust your expectations. Emacs will make you
more productive, provided you are patient enough to unlock its
virtually boundless potential. Take it slow and be methodical. Rely on
the official manual. Read from it and gradually incorporate its
insights into your workflow. The community has plenty of resources to
complement that study. But do not skip the official manual. Learning
it slowly means that you will become proficient faster than you
otherwise would.</p>

<p><a id="orge7a15c6"></a></p>

<h2>Why it is worth learning how to use Emacs</h2>

<p>I already talked about the technical side of things with regard to the
integrated computing environment. Now combine that with two facts:</p>

<ol>
  <li>Emacs is free software. This means that we as a community are its
custodians.</li>
  <li>GNU Emacs has been around since the 1980s. It will stay relevant
for decades to come.</li>
</ol>

<p>Emacs is not old, it is timeless. This is because it can be extended
in a spirit of freedom. Whatever new technology or idea we have as a
collective, we can eventually bring it into Emacs. This way, our
integrated computing environment adapts with the times.</p>

<p>Couched in those terms, the initial effort you will put into learning
Emacs is actually not that much. You have to maintain a longer-term
view of this project. If are patient, Emacs will be one of the most
reliable tools you will ever use throughout your life. And I say this
as a handy man myself, having built the house I am in, among others.</p>

<p>I switched to Emacs in the summer of 2019. It is almost 7 years
already. I see no reason not to use it for the next 7 years, if I can.
I will still want to write articles, do programming, maintain my
agenda, and probably make presentations like this one.</p>

<p><a id="org20e78ee"></a></p>

<h2>Good luck and have fun!</h2>

<p>Remember that you will not learn Emacs over the weekend. You are in it
for the long-term. Take it slow and you will enjoy the experience.</p>

<p>This is all I have for you today folks. Thank you very much for your
attention!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>This Thursday I will talk about Emacs @ OxFLOSS (FLOSS @ Oxford)</title>
      <description>In this upcoming event I will introduce GNU Emacs to people at the University of Oxford.</description>
      <pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-09-thursday-emacs-computing-freedom-oxfloss/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-09-thursday-emacs-computing-freedom-oxfloss/</guid>
      <content:encoded><![CDATA[<p>This Thursday, the 12th of March, at 20:00 Europe/Athens time I will
do a live presentation of Emacs for OxFLOSS (FLOSS @ Oxford). This is
an event organised by people at the University of Oxford. My goal is
to introduce Emacs to a new audience by showing them a little of what
it can do while describing how exactly it gives users freedom.</p>

<p>The presentation will be about 40 minutes long. I will then answer any
questions from the audience. Anyone can participate: no registration
is required. The event will be recorded for future reference. The link
for the video call and further details are available here:
<a href="https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou">https://ox.ogeer.org/event/computing-in-freedom-with-gnu-emacs-protesilaos-stavrou</a>.</p>

<p>I will prepare a transcript for my talk. This way people can learn
about my presentation without having to access the video file.</p>

<p>Looking forward to it!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>New coaching prices to reflect the current market</title>
      <description>I have lowered the price of my coaching services to 10 EUR per hour.</description>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/news/2026-03-08-new-coaching-prices/</link>
      <guid isPermaLink="true">https://protesilaos.com/news/2026-03-08-new-coaching-prices/</guid>
      <content:encoded><![CDATA[<p>I am lowering the price of my coaching services to 10 EUR per hour.
Effective immediately.</p>

<p>This is because of the prevailing economic conditions, which I suspect
make it harder for prospective students to justify the old rate of 20
EUR per hour (was 15 EUR for college students).</p>

<p>I will inform current students who may not read this about the lowered
price point.</p>

<p>I thank all those who have taken up my coaching offer. Take care!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Emacs: four new themes are coming to the ‘doric-themes’</title>
      <description>I am developing four new themes for my minimalist 'doric-themes' package.</description>
      <pubDate>Sat, 07 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-07-emacs-four-new-doric-themes/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-07-emacs-four-new-doric-themes/</guid>
      <content:encoded><![CDATA[<p>I am developing four new themes for my <code class="language-plaintext highlighter-rouge">doric-themes</code> package:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">doric-almond</code> (light)</li>
  <li><code class="language-plaintext highlighter-rouge">doric-coral</code> (light)</li>
  <li><code class="language-plaintext highlighter-rouge">doric-magma</code> (dark)</li>
  <li><code class="language-plaintext highlighter-rouge">doric-walnut</code> (dark)</li>
</ul>

<p>Each of them has its own character, while they all retain the
minimalist Doric style. Below are some screenshots. Remember that
these themes use few colours, relying on typography to establish a
visual rhythm.</p>

<h2>doric-almond</h2>

<p><a href="https://protesilaos.com/assets/images/doric/doric-almond.png"><img alt="doric-almond theme sample" src="https://protesilaos.com/assets/images/doric/doric-almond.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-almond-org.png"><img alt="doric-almond theme sample" src="https://protesilaos.com/assets/images/doric/doric-almond-org.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-almond-message.png"><img alt="doric-almond theme sample" src="https://protesilaos.com/assets/images/doric/doric-almond-message.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-almond-magit.png"><img alt="doric-almond theme sample" src="https://protesilaos.com/assets/images/doric/doric-almond-magit.png" /></a></p>

<h2>doric-coral</h2>

<p><a href="https://protesilaos.com/assets/images/doric/doric-coral.png"><img alt="doric-coral theme sample" src="https://protesilaos.com/assets/images/doric/doric-coral.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-coral-org.png"><img alt="doric-coral theme sample" src="https://protesilaos.com/assets/images/doric/doric-coral-org.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-coral-message.png"><img alt="doric-coral theme sample" src="https://protesilaos.com/assets/images/doric/doric-coral-message.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-coral-magit.png"><img alt="doric-coral theme sample" src="https://protesilaos.com/assets/images/doric/doric-coral-magit.png" /></a></p>

<h2>doric-magma</h2>

<p><a href="https://protesilaos.com/assets/images/doric/doric-magma.png"><img alt="doric-magma theme sample" src="https://protesilaos.com/assets/images/doric/doric-magma.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-magma-org.png"><img alt="doric-magma theme sample" src="https://protesilaos.com/assets/images/doric/doric-magma-org.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-magma-message.png"><img alt="doric-magma theme sample" src="https://protesilaos.com/assets/images/doric/doric-magma-message.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-magma-magit.png"><img alt="doric-magma theme sample" src="https://protesilaos.com/assets/images/doric/doric-magma-magit.png" /></a></p>

<h2>doric-walnut</h2>

<p><a href="https://protesilaos.com/assets/images/doric/doric-walnut.png"><img alt="doric-walnut theme sample" src="https://protesilaos.com/assets/images/doric/doric-walnut.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-walnut-org.png"><img alt="doric-walnut theme sample" src="https://protesilaos.com/assets/images/doric/doric-walnut-org.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-walnut-message.png"><img alt="doric-walnut theme sample" src="https://protesilaos.com/assets/images/doric/doric-walnut-message.png" /></a></p>

<p><a href="https://protesilaos.com/assets/images/doric/doric-walnut-magit.png"><img alt="doric-walnut theme sample" src="https://protesilaos.com/assets/images/doric/doric-walnut-magit.png" /></a></p>

<h2>Coming in version 1.1.0</h2>

<p>All four themes are in development. I may still make some minor
refinements to them, though I have already defined their overall
appearance. If you like the minimalism of the <code class="language-plaintext highlighter-rouge">doric-themes</code>, I think
you will appreciate these new additions.</p>

<h2>Sources</h2>

<p>The Doric themes use few colours and will appear monochromatic in many
contexts. They are my most minimalist themes. Styles involve the
careful use of typographic features and subtleties in colour gradients
to establish a consistent rhythm.</p>

<p>If you want maximalist themes in terms of colour, check my <code class="language-plaintext highlighter-rouge">ef-themes</code>
package. For something in-between, which I would consider the best
“default theme” for a text editor, opt for my <code class="language-plaintext highlighter-rouge">modus-themes</code>.</p>

<ul>
  <li>Package name (GNU ELPA): <code class="language-plaintext highlighter-rouge">doric-themes</code></li>
  <li>Sample pictures: <a href="https://protesilaos.com/emacs/doric-themes-pictures">https://protesilaos.com/emacs/doric-themes-pictures</a></li>
  <li>Git repository: <a href="https://github.com/protesilaos/doric-themes">https://github.com/protesilaos/doric-themes</a></li>
  <li>Backronym: Doric Only Really Intensifies Conservatively … themes.</li>
</ul>]]></content:encoded>
    </item>
    
    <item>
      <title>Taking it easy</title>
      <description>An entry from my journal where I comment on how I do not worry about what will happen to this world.</description>
      <pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-06-taking-it-easy/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-06-taking-it-easy/</guid>
      <content:encoded><![CDATA[<p>This is an excerpt from my journal.</p>

<hr />

<p>A few people have sent me a message asking how I am doing given the
crisis in the Middle East. Cyprus is providing strategic depth to the
Western forces. The military bases of the United Kingdom in Cyprus are
assets of the war effort and, thus, prime targets for an attack. The
rest of the island is not directly involved in the conflict, though it
could be caught in the crossfires. The future is uncertain and we hope
for the best.</p>

<p>I keep living my life as usual. When I have work on the computer, I am
online. Otherwise, I am outdoors doing manual labour or hiking with my
dogs. The place is quiet here and nothing happens beside what I just
described. If I was not reading the news, I would not even know what
is happening in the wider region.</p>

<p>Knowledge of the war does not change my outlook though. I stick to my
routines because (i) I am content with them and (ii) I have no viable
alternative. Worrying about all the possible vectors of attack does
not change my material conditions. I have no means to enact reforms.
My power to even change the opinion of one person is limited, let
alone any attempt at stopping the military juggernauts of Iran,
Israel, USA, and friends.</p>

<p>I am a peasant. Having access to the Internet does not change this
fact. I mind my business in my small plot of land. My ambition only
goes as far as growing vegetables for this season, while taking care
of all the trees I have planted until they are strong enough to not
rely on my care. In my little world, there is no calculus over how to
control anybody else.</p>

<p>What I do here is inconsequential. If I were to stop doing it, nobody
would even notice. The world will carry on. I like this state of
affairs. I do not feel any pressure to live up to a certain standard
nor to care about people whose lives I do not have under my aegis. The
stakes are low, which makes me feel relaxed.</p>

<p>I do not think I am special or particularly good at anything. Anything
I do, someone does it better. Everything I have ever achieved, someone
has reached a greater height. All I have to show for is honest effort.
It is cute, but nothing extraordinary.</p>

<p>I do not assign disproportionate value to myself of the sort “what
will happen to others if I am gone?”. Others have to manage, anyway,
so they will keep doing what they do. My dogs are the ones who would
struggle, though I can only hope that their calm demeanour and the
good manners I have taught them will allow them to find food in some
built-up area. Beside that, I see no problem or, anyhow, nothing to
worry about.</p>

<p>This morning I spent three hours working the land. Every part here
embeds my efforts. I like that my sweat drops on the ground. It makes
it feel real. I know that even though I am but a visitor in this
world, I have for once made a connection with a place.</p>

<p>I never felt attached to a country or a community. Yes, I have had
many friends and was always treated with kindness, but I could not
ever claim to feel a part of something greater than me. My land gives
me a different feeling. It is as if I am growing roots here. Like the
oak trees, I affect my immediate environment, though not to dominate
but to direct it with respect as well as with determination.</p>

<p>Nominally, I am Greek, Cypriot, European. What do those even mean? I
have not been to Greece in two decades. I have spent more time abroad
than in my birthplace. Whatever I take from the Greek tradition is
available to anyone and not exclusive to individuals of a certain
bloodline. Being European is a figment of law and then the
imagination. I do not treat people of Europe any different than those
of other continents. If someone wants to talk with me, I am happy to
talk with them. Where they are from is irrelevant. As for the Cypriot
part, it is mostly a description of the fact that I am collocated with
a certain group of people. They are nice to me and I treat them with
respect, though I still do not see any deep bond there.</p>

<p>I know that my mode of living is uncommon even though it used to be
the norm for millennia. That is fine. Each person does what their
condition renders unavoidable. My land and these mountains bring me
peace. Every morning I am ready to start the day with enthusiasm. I am
in a good mood at all times, ready to make jokes where appropriate and
get some hard work done. Nothing disappoints me because I am not
committed to specific outcomes. I take what comes my way and work with
it. What I am committed to are my projects, which I pursue for as long
as I can or until they are done.</p>

<p>There is a future in which me and my land are no longer together. It
is all part of the process. How proximate or remote that eventuality
is does not matter. I remain in the here-and-now. This article shows
my ongoing ability to maintain focus, to continue with what I am
working on, and to proceed one step at a time. I know that this
ability, no matter how much I refine it, is not permanent. My volition
will never have the power to withdraw it from the world of
impermanence, to render it immune to the workings of the cosmos, and
to forever make it a part of a transcendent me.</p>

<p>Wars will keep happening. Not because humans in particular have
frailties of character. No. That gives us too much value. Nature all
around us exhibits the capacity for conflict among forms of live. What
we do is an expression of what is immanent, from bacteria competing
with each other, to plants fighting for a place in the sun, to
predators that kill their competitors. Same principle for solidarity.
We can cooperate, like other forms of life do. An equilibrium is
always established. I do not worry.</p>]]></content:encoded>
    </item>
    
    <item>
      <title>I talk with Joshua Blais about Emacs and life issues</title>
      <description>I had a ~2-hour chat with Joshua Blais, a fellow Emacs user, about Emacs and philosophy.</description>
      <pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/codelog/2026-03-05-emacs-and-philosophy-chat-with-joshua-blais/</link>
      <guid isPermaLink="true">https://protesilaos.com/codelog/2026-03-05-emacs-and-philosophy-chat-with-joshua-blais/</guid>
      <content:encoded><![CDATA[<p>I had a ~2-hour chat with Joshua Blais, a fellow Emacs user, over at
the @JoshuaBlais YouTube channel: <a href="https://www.youtube.com/@JoshuaBlais">https://www.youtube.com/@JoshuaBlais</a>.
We covered Emacs at length and also talked about general life issues.</p>

<p>The first topic we cover is how to place constraints on yourself in
order to avoid backsliding into bad habits. This ties in to the themes
of discipline and productivity that we discuss in some further length.</p>

<p>Joshua asks me how I got into Emacs and how I started
writing/maintaining packages for it. We talk about how Emacs provides
for an integrated computing experience. Learning Emacs Lisp allows you
to have better control of Emacs.</p>

<p>In this light we comment on Guix and how it is also configurable in a
dialect of Lisp. Joshua is using Nix and I learn more about that
experience.</p>

<p>Coming back to Emacs, we comment on its relationship to the Unix
philosophy. I think Emacs is compatible with Unix. Though my main
point is how Emacs empowers us to use the computer in a productive
way. It augments the experience.</p>

<p>Simple living and financial independence is another topic we cover.
Joshua wants to know how I approach this issue. I explain how it is a
matter of controlling your wants. Figure out what the parts of your
lifestyle that you would not sacrifice. Then you know how much money
you need for that lifestyle.</p>

<p>Joshua makes a connection of the simple life to Emacs and Unix tools.
I comment on that as well. Once you start using Emacs and friends, you
learn to appreciate the essentials. This you can then apply to other
parts of your life.</p>

<p>We move to note-taking, where I comment about Denote. I explain how it
is a file-naming scheme, which can also be used to write notes. What
matters is how well we can retrieve information. Joshua explains how
pen and paper helps him express his thoughts.</p>

<p>Learning on your own is our next point. Being an autodidact myself, I
comment how it empowers you. You are able to have initiative and be
more independent.</p>

<p>We then explore how things have infinite depth. This is how everything
in the world is connected. This also relates to the point about the
simple living, since you can have relatively few things that you keep
understanding in depth.</p>

<p>Joshua asks me about discipline. This is a capacity we can build up. I
give some examples.</p>

<p>Next on our list are mechanical keyboards. Joshua and I are using a
split keyboard.</p>

<p>Then we explore the theme of using tools the right way. One example is
the Internet as a whole. Another is with LLMs. It helps to know “why
am I doing this”, as then you can understand when you are meeting your
goals and when you are moving away from them. We explore this in
further depth.</p>

<p>I comment on a common mistake we make where we think that the complex
must be sophisticated and profound. Whereas there is profundity in
simplicity.</p>

<p>We connect the dots through all these as we wrap things up.</p>

<p>Thanks to Joshua Blais for this chat. I had a good time and wish him
all the best!</p>]]></content:encoded>
    </item>
    
    <item>
      <title>Poem: Not for an eternity</title>
      <description>Just read the poem. No further comment.</description>
      <pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/poems/2026-03-04-not-for-an-eternity/</link>
      <guid isPermaLink="true">https://protesilaos.com/poems/2026-03-04-not-for-an-eternity/</guid>
      <content:encoded><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Stay indoors" they say
and "avoid the windows"
Cower, then, in the dark
drink poison from your fear
as you regret all the times
you did not stand up for honour
To live in freedom for a day
to mix my sweat with this land
that I would not trade
for an eternity in their comforts
</code></pre></div></div>]]></content:encoded>
    </item>
    
    <item>
      <title>Finding enthusiasm in the face of boredom</title>
      <description>A journal entry where I describe how boredom works and why it helps to be honest with our feelings.</description>
      <pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://protesilaos.com/commentary/2026-03-03-finding-enthusiasm-boredom/</link>
      <guid isPermaLink="true">https://protesilaos.com/commentary/2026-03-03-finding-enthusiasm-boredom/</guid>
      <content:encoded><![CDATA[<p>This is an entry from my journal. I describe how boredom works and why
it helps to be honest with our feelings.</p>

<hr />

<p>My dogs understand all the verbal and non-verbal cues that signify “I
am done with the computer for now”. I had a meeting until 21:00 this
night. As soon as I said “goodbye”, the dogs raised their head and
started stretching. They know that once I am done, I will spend time
with them. Specifically, we will go out for a walk. The only exception
is during midday, when it is relatively warm (or extra hot during the
summer). The dogs will still want to be outdoors, but only to sunbathe
for a few minutes before eventually moving to the shade. We did go for
an hour-long walk and now I am back to write this entry before going
to bed.</p>

<p>One quality I like in dogs is how consistently eager they are. If it
is their time for a walk, they will want to go and they will be
excited about it. With people it is more complex, as we sometimes do
not feel like doing something even when the prevailing conditions are
favourable. We may simply be bored.</p>

<p>Boredom and the mental fogginess it creates influences how we feel
about our duties. Sometimes, boredom is a coping mechanism to make us
suspend some intense work schedule we are committed to. This is benign
and desirable, because we often lack the foresight to stop before
overworking ourselves. Though boredom can also be detrimental to us.
It is so when it keeps us inert in a situation that we would rather
not be in for too long.</p>

<p>I think of boredom as a mechanism of short-term preservation. What it
lacks is a view of the long-term, which we can only get through
reason. When boredom qua preservation helps us safeguard our vitality
from the potential harm of burnout, then it is good for us long-term.
Let this be the “preservation of essence”, which inhibits what we
would normally do. Though there is also the “preservation of
momentum”, else the kind of boredom that makes us stay in the state we
are in and inhibits actions that would undo it. This can be
problematic for us long-term, such as when we get used to bad habits.</p>

<p>Boredom, then, is neither good nor bad, or it is both good and bad. We
have to consider the specifics in light of our life’s trajectory. Only
then can be tell if preserving what we have is going to contribute to
our wellness. The longer-term view also means that we operate with
sustainability in mind. It is not enough for something to be pleasant
right now: it must also not be undermining our abilities for the
moments after.</p>

<p>This is where my competitiveness comes into play. When it comes to my
own decisions, I am a stern and demanding judge. If I think about the
situation of me being asked by my dogs to join them on a long walk at
night, I can come with a perfectly valid reason to declare how bored I
am. It would be the same as admitting to fatigue, which is okay and I
would indeed try to keep it short in such a case. Though I did not
feel tired and thus would not allow myself the easy way out. Not only
did I go for a walk, but it was also an intense one.</p>

<p>My competitiveness is not erga omnes. It is only directed towards me.
This is because I only know how I feel and thus sense that a certain
course of action is appropriate. The propriety of it does not exist in
a vacuum though. It can only be right if the particularities make it
possible. As such, I do not make prescriptions for others: they can do
as they feel. So it makes no sense to issue a pronouncement along the
lines of “go for a walk at night, no matter what”. That would be
uninformed and presumptuous.</p>

<p>I keep describing those as “walks”, but they are hikes. We move up the
valley. The slope is steep. This is not like going to the park. It
requires more effort. The dogs love it, as do I. For them, it is an
outlet for their energy and predatory instincts. Once they get back
home, they are peaceful. I think the same is true for humans, though
we are more complex in our behaviour and our wants.</p>

<p>Humans can express their desire for openness in physical as well as
cognitive ways. For example, the hunter and the philosopher make
manifest two modes of this same propensity. The hunter will be out
there, determined to track the game or wait at the right spot. They
will be excited when they find that which they are seeking. The
philosopher is on a more abstract quest, albeit one that exhibits the
same patterns. They search for the “open space”, which is to say that
they cannot just take a claim as a given: they need to examine it,
else to look around for what else is out there. And the philosopher
will similarly be working towards something that can be acquired.</p>

<p>Openness, then, is not a descriptor for how contemplative one is. It
marks a propensity that can be expressed through deeds and/or
thoughts. This understanding helps me see the connections and be
inspired by phenomena that are at once different than my immediate
experience yet unmistakably familiar.</p>

<p>There is something in us which triggers a sense of excitement. Knowing
what that is helps us muster the enthusiasm to push against the
natural tendency for boredom as preservation of momentum. We need to
do as much when we understand that the state-to-be-preserved is not
benign for us long-term.</p>

<p>I do this consistently with my walks, but also by controlling my work
time. I save myself from burnout by being honest with how I feel about
things. Honesty, here, is how I maintain situational awareness with
regard to my own condition. I do not mindlessly do something because I
am supposed to. I check if it still makes sense in light of the
circumstances. If, for example, I am not inspired to look into my
Emacs packages for a day or two, then I do not pressure myself thus. I
do something else instead, so I preserve my essence.</p>

<p>To know ourselves better helps us do small things each day that have a
positive cumulative effect on our longevity. I am inspired by dogs and
am also dog-like in this regard. Our walk tonight in the mountains
under the moonlight was beautiful. I will welcome the coming day with
the same zest and will continue to finds ways to stay as sharp as ever.</p>]]></content:encoded>
    </item>
    
  </channel>
</rss>
