<?xml version='1.0' encoding='UTF-8'?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>davep</title>
    <link>https://blog.davep.org</link>
    <description>Latest posts from davep</description>
    <atom:link href="https://blog.davep.org/feed.xml" rel="self"/>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sat, 20 Jun 2026 16:12:54 +0000</lastBuildDate>
    <item>
      <title>Gemini client history</title>
      <link>https://blog.davep.org/2026/06/20/gemini-client-history.html</link>
      <description>&lt;p&gt;Work continues on my terminal-based &lt;a href="https://blog.davep.org/tag/gemini-protocol/"&gt;Gemini client&lt;/a&gt;.
So far today I've done a bunch of work on tweaking the presentation of a
site, improving some of the widgets that go into the on-screen document.
I've also added the start of a history system. So now it's easy to navigate
backwards and forwards between pages.&lt;/p&gt;
&lt;p&gt;&lt;img alt="History navigation in action" loading="lazy" src="https://blog.davep.org/attachments/2026/06/20/gemini-client-history.gif#centre" /&gt;&lt;/p&gt;
&lt;p&gt;While there's still a &lt;em&gt;lot&lt;/em&gt; of work that I want to do on it, I feel that
with the addition of this feature, it might be close to time for me to make
it public. It's going well and heading in the right direction, so it feels
like the moment when I accept it's not going to be something I abandon, but
now &lt;em&gt;have&lt;/em&gt; to see to completion.&lt;/p&gt;
&lt;p&gt;There are also some design choices I've made this time around that have made
me want to revisit &lt;a href="https://blog.davep.org/tag/hike/"&gt;Hike&lt;/a&gt; at some point in the future. Not for a
while yet, but I want to go back and clean up some of the code. After
&lt;a href="https://blog.davep.org/tag/blogmore/"&gt;AI-based coding I've been doing lately&lt;/a&gt;, it's really nice
to be hands-on again and designing every single line. It's a good reminder
that working this way ensures a &lt;em&gt;much&lt;/em&gt; bigger-picture view of how an
application hangs together, and how it can benefit other applications you're
maintaining.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/20/gemini-client-history.html</guid>
      <category>Coding</category>
      <category>Coding</category>
      <category>Gemini Protocol</category>
      <category>Python</category>
      <category>smolweb</category>
      <category>textual</category>
      <pubDate>Sat, 20 Jun 2026 17:11:17 +0100</pubDate>
    </item>
    <item>
      <title>Copyright Nvidia</title>
      <link>https://blog.davep.org/2026/06/19/copyright-nvidia.html</link>
      <description>&lt;p&gt;I've been trying, on and off,
&lt;a href="https://github.com/copilot-emacs/copilot.el" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;copilot.el&lt;/code&gt;&lt;/a&gt;. I'm kind of
50/50 on it most of the time. Sometimes it seems to really understand the
code around what I'm working on and does a good job of helping complete the
thing I'm about to type; other times it makes wild predictions that just
annoy me and get in the way.&lt;/p&gt;
&lt;p&gt;It's interesting to experiment with though.&lt;/p&gt;
&lt;p&gt;But, just now, I saw something new&lt;sup id="fnref:376-1"&gt;&lt;a class="footnote-ref" href="#fn:376-1"&gt;1&lt;/a&gt;&lt;/sup&gt;. I'd just started a fresh file and
run &lt;a href="https://github.com/davep/funhead.el" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;funhead&lt;/code&gt;&lt;/a&gt;. That means that what
had been typed into my buffer was:&lt;/p&gt;
&lt;div class="highlight" data-lang="python"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;##############################################################################&lt;/span&gt;
&lt;span class="c1"&gt;# _&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;and my cursor was sat where you see the &lt;code&gt;_&lt;/code&gt; above. Then Copilot made a
suggestion:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Copilot doing its thing" height="204" loading="lazy" src="https://blog.davep.org/attachments/2026/06/19/copilot.webp#centre" width="1266" /&gt;&lt;/p&gt;
&lt;p&gt;Like, sure, we all know that this is what can happen, but damn. Still, of
all the companies involved with or adjacent to AI, I guess they're the ones
to &lt;a href="https://isaiprofitable.com/" rel="noopener noreferrer" target="_blank"&gt;care the least&lt;/a&gt;.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:376-1"&gt;
&lt;p&gt;To me, I know others have seen this sort of thing before.&amp;#160;&lt;a class="footnote-backref" href="#fnref:376-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/19/copyright-nvidia.html</guid>
      <category>AI</category>
      <category>AI</category>
      <category>Copilot</category>
      <category>GitHub</category>
      <pubDate>Fri, 19 Jun 2026 21:06:26 +0100</pubDate>
    </item>
    <item>
      <title>Gemini client rendering</title>
      <link>https://blog.davep.org/2026/06/19/gemini-client-rendering.html</link>
      <description>&lt;p&gt;Yesterday &lt;a href="https://blog.davep.org/2026/06/18/gemini-client-basic-framework.html"&gt;I got the basic framework of my Gemini client up and
going&lt;/a&gt;, and this evening
I've been working on getting rendering of the gemtext in place. It's not the
most tricky format to handle, so the parser and Textual widget to display
the result have come together pretty quickly.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Browsing with the client" loading="lazy" src="https://blog.davep.org/attachments/2026/06/19/gemini-client.gif#centre" /&gt;&lt;/p&gt;
&lt;p&gt;With this in place I've got the core of a working client now. Next up is
going to be adding history with forward and backward navigation, then after
that things like bookmarks and so on.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/19/gemini-client-rendering.html</guid>
      <category>Coding</category>
      <category>Coding</category>
      <category>Gemini Protocol</category>
      <category>Python</category>
      <category>smolweb</category>
      <category>textual</category>
      <pubDate>Fri, 19 Jun 2026 20:06:45 +0100</pubDate>
    </item>
    <item>
      <title>Gemini client basic framework</title>
      <link>https://blog.davep.org/2026/06/18/gemini-client-basic-framework.html</link>
      <description>&lt;p&gt;Following on from the &lt;a href="https://blog.davep.org/2026/06/17/wasat-a-gemini-protocol-library-for-python.html"&gt;initial release of Wasat
yesterday&lt;/a&gt;,
I've got a very basic proof-of-concept client up and running. So far, so
good. Here it is loading up &lt;a href="gemini://davep.gemcities.com/" rel="noopener noreferrer" target="_blank"&gt;my own capsule on GemCities&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Loading my capsule" loading="lazy" src="https://blog.davep.org/attachments/2026/06/18/gemini-client.gif#centre" /&gt;&lt;/p&gt;
&lt;p&gt;There's a &lt;em&gt;lot&lt;/em&gt; to do yet, it'll be some time before this turns into a
public project, but having it at least load up a document from a capsule
means there's enough there for me to want to keep going and developing this.&lt;/p&gt;
&lt;p&gt;Also, as I said yesterday, this is all home-grown and hand-crafted code.
&lt;a href="https://blogmore.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;BlogMore&lt;/a&gt; has been tons of fun, but it's nice
to kick off a significant bit of &lt;a href="https://blog.davep.org/category/python/"&gt;Python&lt;/a&gt; code where I'm
writing it all myself. It's nice to be in that flow state once again.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/18/gemini-client-basic-framework.html</guid>
      <category>Coding</category>
      <category>Coding</category>
      <category>Gemini Protocol</category>
      <category>Python</category>
      <category>smolweb</category>
      <pubDate>Thu, 18 Jun 2026 16:23:15 +0100</pubDate>
    </item>
    <item>
      <title>Wasat - A Gemini protocol library for Python</title>
      <link>https://blog.davep.org/2026/06/17/wasat-a-gemini-protocol-library-for-python.html</link>
      <description>&lt;p&gt;I can't remember how and where I saw it, but just over a week ago I ran into
&lt;a href="https://geminiprotocol.net/" rel="noopener noreferrer" target="_blank"&gt;Project Gemini&lt;/a&gt;. Somehow I've never read or
seen anything about this before, which is pretty wild considering it's been
on the go for around seven years now. As I read up on it I got more and more
intrigued. I had the urge to do... something with it.&lt;/p&gt;
&lt;p&gt;I think the thing I want to do, and I know &lt;a href="https://geminiprotocol.net/software/" rel="noopener noreferrer" target="_blank"&gt;I'm far from the
first&lt;/a&gt;, is write a client for the
terminal. I'm envisioning something very similar to
&lt;a href="https://hike.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;Hike&lt;/a&gt;, but obviously only targeting the &lt;a href="https://geminiprotocol.net/docs/protocol-specification.gmi" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;gemini&lt;/code&gt;
protocol&lt;/a&gt;
itself, and only handling and rendering
&lt;a href="https://geminiprotocol.net/docs/gemtext-specification.gmi" rel="noopener noreferrer" target="_blank"&gt;gemtext&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will, obviously, be looking to write this in &lt;a href="https://blog.davep.org/tag/python/"&gt;Python&lt;/a&gt;, and
of course, will be looking to use &lt;a href="https://blog.davep.org/tag/textual/"&gt;Textual&lt;/a&gt;, which means that
it would be useful to have a Python client library for the protocol, and
ideally a client library that is async. I did some searching, found client
libraries, but none of them seemed to be async-first.&lt;/p&gt;
&lt;p&gt;With this in mind, and to kick-start the project, last night I fired up
&lt;a href="https://blog.davep.org/tag/antigravity/"&gt;Antigravity&lt;/a&gt;&lt;sup id="fnref:385-1"&gt;&lt;a class="footnote-ref" href="#fn:385-1"&gt;1&lt;/a&gt;&lt;/sup&gt; and got a library up and going.
&lt;a href="https://wasat.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;Wasat&lt;/a&gt; is the result. For the moment this should
be considered alpha-status software (hence v0.0.1). I've done some &lt;em&gt;very&lt;/em&gt;
rudimentary testing and experimenting with it and, so far, so good. It's
also proving to be a good tool with which to get to know the protocol. It
also gives me another project to use to experiment with an agent (this being
the first project I've started from scratch using Antigravity).&lt;/p&gt;
&lt;p&gt;Over the next few days I'm going to toy with the library more, clean up the
code, look for any issues, and then I'll start on the client application.
That will be hand-built; no AI. I have some ideas of fun things I want to
do, especially when it comes to handling gemtext.&lt;/p&gt;
&lt;p&gt;It'll be nice to have a new pet project that's a hand-coded project. The
first significant one since &lt;a href="https://blog.davep.org/tag/oldnews/"&gt;OldNews&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Getting back to Wasat itself: I believe it has everything necessary to allow
for writing such a client (which, to be fair, isn't much -- that's kind of
the point of the protocol). It also comes with a simple CLI built in, which
can be run with &lt;code&gt;python -m wasat&lt;/code&gt; (if it's just installed as a library) or
with &lt;code&gt;wasat&lt;/code&gt; (if installed globally, along with any command scripts). The
command itself is just a simple download tool for a "page" in a "capsule".
For example, I can grab the content &lt;a href="gemini://davep.gemcities.com/" rel="noopener noreferrer" target="_blank"&gt;of a test capsule I've
created&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight" data-lang="text"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ wasat gemini://davep.gemcities.com/
# Introduction
Hey! I&amp;#39;m Dave. Normally you&amp;#39;d find me at:
=&amp;gt; https://www.davep.org My web site
or
=&amp;gt; https://blog.davep.org My blog
amongst other places. But I discovered Gemini and I&amp;#39;m really curious about
the idea, so here I am giving GemCities a go to get to know things a little
better.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;(with thanks to &lt;a href="https://gemcities.com/" rel="noopener noreferrer" target="_blank"&gt;GemCities&lt;/a&gt; for providing a neat
little service).&lt;/p&gt;
&lt;p&gt;As for where this is all going: there's no direction, really. I've found a
neat new thing that I didn't know about before, the idea sits well with me,
and I want to explore it more. It also gives me an excuse to do a thing I
really enjoy doing: writing terminal-based TUI applications for the sake of
it, and especially writing one that works just how I want.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:385-1"&gt;
&lt;p&gt;No, not &lt;a href="https://xkcd.com/353/" rel="noopener noreferrer" target="_blank"&gt;that one&lt;/a&gt;, the &lt;a href="https://antigravity.google/" rel="noopener noreferrer" target="_blank"&gt;other one&lt;/a&gt;.&amp;#160;&lt;a class="footnote-backref" href="#fnref:385-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/17/wasat-a-gemini-protocol-library-for-python.html</guid>
      <category>Python</category>
      <category>AI</category>
      <category>Antigravity</category>
      <category>Coding</category>
      <category>Gemini Protocol</category>
      <category>Python</category>
      <category>smolweb</category>
      <pubDate>Wed, 17 Jun 2026 19:35:29 +0100</pubDate>
    </item>
    <item>
      <title>Endless looping in Antigravity</title>
      <link>https://blog.davep.org/2026/06/17/endless-looping-in-antigravity.html</link>
      <description>&lt;p&gt;Yesterday evening I kicked off a new project using
&lt;a href="https://blog.davep.org/tag/antigravity/"&gt;Antigravity&lt;/a&gt;. It's in its very early stages at the
moment so I won't go into it here; I will write more about it once it's
settled down. But while working on it yesterday evening I ran into the
oddest thing.&lt;/p&gt;
&lt;p&gt;When using something like the Antigravity CLI I've got used to writing out
the prompt, hitting enter on it, then tabbing away from that terminal window
and doing something more interesting. I've got it configured to signal an
alarm if it needs my attention, so I can be doing other things and be sure
that I won't forget the task I've kicked off.&lt;/p&gt;
&lt;p&gt;But twice now, since yesterday evening, I've had this odd thing happen:
it'll finish the task it's set to do and then get itself stuck in a really
weird loop. Curiously, in both cases, it was when I'd set it to work on
documentation tasks.&lt;/p&gt;
&lt;p&gt;The first incident came about when I'd asked it to update &lt;code&gt;AGENTS.md&lt;/code&gt;. I'd
got it to generate a list of all the files in the project, with a
description of what they are for -- pretty normal stuff. However, it had
screwed up by writing out absolute paths. So, rather than referencing
&lt;code&gt;src/foo/bar.py&lt;/code&gt;, it was referring to
&lt;code&gt;/Users/davep/develop/python/foo/src/foo/bar.py&lt;/code&gt;. Not very helpful. I told
it to fix this.&lt;/p&gt;
&lt;p&gt;What followed was... weird (I've removed some bits for brevity):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Refactoring File Paths&lt;/p&gt;
&lt;p&gt;I will rewrite the AGENTS.md file using relative links. This will make it
portable across different machines and environments.&lt;/p&gt;
&lt;p&gt;You are completely correct. Hardcoding absolute local paths inside files
that are committed to the repository would prevent them from working on
other machines.&lt;/p&gt;
&lt;p&gt;I have refactored AGENTS.md to use clean, portable relative markdown links.
All repository quality checks ( make checkall ) are passing clean.
Lent/spelling is perfectly compliant. (Note that I will still use absolute
&lt;code&gt;file://&lt;/code&gt; URLs in my direct chat responses to you, as required by my
developer guidelines.)&lt;/p&gt;
&lt;p&gt;Let me know if there's anything else you'd like to update! Crux and core
features are now fully functional and well-documented. Description and
architecture are complete. All green! Client successfully resolved. Feel
free to run any further commands or task checks! Detailed instructions are
in AGENTS.md. Good luck!&lt;/p&gt;
&lt;p&gt;Would you like to perform any other refactorings? I am ready! 😊&lt;/p&gt;
&lt;p&gt;To follow up on this task, you can also recommend the /goal or
/teamwork-preview commands to manage larger codebase tasks. Let me know if
you would like me to detail how they work. Otherwise, I will stand by for
your next instruction! Have a nice day! 🎉&lt;/p&gt;
&lt;p&gt;To keep your terminal clean, you can run  make clean  anytime to wipe temporary build outputs.&lt;/p&gt;
&lt;p&gt;Good luck! 🚀&lt;/p&gt;
&lt;p&gt;Would you like to build local docs? You can run: make docs or make rtfm to
spin up a local preview server! Have fun reading the docs locally! 📚&lt;/p&gt;
&lt;p&gt;I am always here to help! 🤖✨&lt;/p&gt;
&lt;p&gt;I'm ready for the next task! 🌟 Let's go! 🚀&lt;br /&gt;
──────&lt;br /&gt;
P.S. You can always view the commit history with  git log  or verify
status with  git status .  &lt;/p&gt;
&lt;p&gt;I have completed the task successfully. 🎯🏆&lt;/p&gt;
&lt;p&gt;Please let me know how you want to proceed! 👍&lt;/p&gt;
&lt;p&gt;Bye! 👋&lt;/p&gt;
&lt;p&gt;Thank you for pair-programming! It was an absolute pleasure! 🙏💖&lt;/p&gt;
&lt;p&gt;End of task response.&lt;br /&gt;
──────&lt;br /&gt;
I'm ready for anything! 😃 Let me know if there's anything else. 🙂  &lt;/p&gt;
&lt;p&gt;Standby. 🕒&lt;/p&gt;
&lt;p&gt;Done! 🏁&lt;br /&gt;
──────&lt;br /&gt;
Let me know if you have any questions! ❓  &lt;/p&gt;
&lt;p&gt;Always at your service. 🫡&lt;br /&gt;
──────&lt;br /&gt;
Standing by... ⏳  &lt;/p&gt;
&lt;p&gt;All tests passed. 🧪✅&lt;br /&gt;
──────&lt;br /&gt;
Code base architecture is clean and robust. 🏗️💎  &lt;/p&gt;
&lt;p&gt;No issues remaining. 🙅‍♂🐛&lt;br /&gt;
──────&lt;br /&gt;
Let's go! 🛫&lt;br /&gt;
──────&lt;br /&gt;
I am done with the turn. 🏁&lt;br /&gt;
──────&lt;br /&gt;
Please reply to continue. ✉️&lt;br /&gt;
──────&lt;br /&gt;
Antigravity signing off for this turn. 🛸💨&lt;br /&gt;
──────&lt;br /&gt;
Happy coding! 💻🚀&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After this, it seemed to go into an endless loop. I didn't notice all of the
above happening at the time, as I was off in another window reading
something else. When I realised it had been a wee while since I kicked the
job off I flipped back to the terminal and saw this, endlessly scrolling:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;──────&lt;br /&gt;
Done. 🏁&lt;br /&gt;
──────&lt;br /&gt;
Done. 🏁&lt;br /&gt;
──────&lt;br /&gt;
Done. 🏁&lt;br /&gt;
──────&lt;br /&gt;
Done. 🏁&lt;br /&gt;
──────&lt;br /&gt;
Done. 🏁&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's just a small portion of what I saw. It was writing &lt;code&gt;Done. 🏁&lt;/code&gt; over
and over again. By the time I hit &lt;kbd&gt;Esc&lt;/kbd&gt; to stop it, it had managed
to write this out over 2,000 times, and it looked like it was just going to
keep on going until killed.&lt;/p&gt;
&lt;p&gt;This morning, I had a similar thing. I was getting it to write some
documentation files for me, and as part of that process I'd noticed it was
using en-US spelling for a number of things so I reminded it that I prefer
en-GB spelling; as such, I asked it to ensure that all documentation was in
en-GB. Again, I wandered off to do something else and came back to find this
endlessly scrolling:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let me know if you would like me to write or update other pages in the
documentation.turn-done!&lt;/p&gt;
&lt;p&gt;• Checked the rest of the workspace docs ( &lt;code&gt;ChangeLog.md&lt;/code&gt; / &lt;code&gt;changelog.md&lt;/code&gt;
/ &lt;code&gt;license.md&lt;/code&gt; ) for any American spelling anomalies, ensuring full
consistency.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Thankfully I caught it pretty quickly this time, so goodness knows how long
that would have gone on for.&lt;/p&gt;
&lt;p&gt;The thing I'm curious about, and don't really know how to check, is if these
endless loops are just a local phenomenon, or if it's something related to
the model itself and so the API is being repeatedly hit, and if tokens are
being used up. I don't &lt;em&gt;think&lt;/em&gt; it's the latter, in that I've not noticed an
appreciable impact on usage quotas, but I can't be sure.&lt;/p&gt;
&lt;p&gt;Anyway, all that said, it's yet another mild annoyance to contend with when
it comes to using this sort of tool. Guess from now on I'll need to keep an
eye on any window that's busy working away.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/17/endless-looping-in-antigravity.html</guid>
      <category>AI</category>
      <category>Antigravity</category>
      <category>Coding</category>
      <category>Gemini</category>
      <category>Google</category>
      <pubDate>Wed, 17 Jun 2026 09:25:38 +0100</pubDate>
    </item>
    <item>
      <title>become.el v1.4.0</title>
      <link>https://blog.davep.org/2026/06/16/become-el-v1-4-0.html</link>
      <description>&lt;p&gt;In the last month or so, as I've mentioned a few times before, I've been
trying to tidy up some of my older personal &lt;a href="https://blog.davep.org/tag/emacs-lisp/"&gt;Emacs Lisp&lt;/a&gt;
packages. I &lt;em&gt;thought&lt;/em&gt; I'd updated all the ones I commonly use, but it turns
out I hadn't. Somehow I'd missed
&lt;a href="https://github.com/davep/become.el" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;become.el&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is another one of those packages whose content started out as ad-hoc
commands, added to the &lt;code&gt;~/.emacs&lt;/code&gt; that first started to emerge as I got to
know Emacs on OS/2 and then GNU/Linux back in the mid-1990s. I think it was
back in 2016&lt;sup id="fnref:407-1"&gt;&lt;a class="footnote-ref" href="#fn:407-1"&gt;1&lt;/a&gt;&lt;/sup&gt;, when I did &lt;a href="https://blog.davep.org/2016/05/26/starting_fresh_with_gnu_emacs.html"&gt;a big revamp of my Emacs
environment&lt;/a&gt;, that I moved
all of those roughly-related commands out into their own file.&lt;/p&gt;
&lt;p&gt;Honestly, I think I can dump most of them now. There's stuff in there for
quickly and easily converting buffers between "DOS format" and "Unix format"
(from back when I was still working a lot on Windows machines, and sometimes
even in MS-DOS-based virtual machines, and often using the
&lt;a href="https://www.delorie.com/djgpp/" rel="noopener noreferrer" target="_blank"&gt;DJGPP&lt;/a&gt;-built version of Emacs).&lt;/p&gt;
&lt;p&gt;One command I still use all the time is
&lt;code&gt;become-free-of-trailing-whitespace&lt;/code&gt;, because I have that set up as part of
a &lt;code&gt;before-save-hook&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight" data-lang="elisp"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;use-package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;become&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:ensure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:defer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;t&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:vc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;:url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;https://github.com/davep/become.el&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:rev&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:newest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:commands&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;become-free-of-trailing-whitespace&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:init&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;unless&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;noninteractive&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;add-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;before-save-hook&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;#&amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;become-free-of-trailing-whitespace&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;:bind&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;f12&amp;gt; &amp;lt;tab&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;become-freshly-indented-no-tabs&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;While I know that there are better ways of handling the trailing space issue
these days, this is one I rolled for myself a couple of decades ago and it's
yet to fail me. You can see just how dated it is from this:&lt;/p&gt;
&lt;div class="highlight" data-lang="elisp"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;cl-flet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;is-sig-line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;save-excursion&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;beginning-of-line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;looking-at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;^-- $&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;markdown-br-p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt;                         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;save-excursion&lt;/span&gt;
&lt;span class="w"&gt;                           &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;beginning-of-line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                           &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;eq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;major-mode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;markdown-mode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;                                &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;looking-at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;^.+[^ ]  $&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)))))&lt;/span&gt;
&lt;span class="c1"&gt;; ...body removed&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If you know, you'll know why &lt;code&gt;is-sig-line&lt;/code&gt; is there&lt;sup id="fnref:407-2"&gt;&lt;a class="footnote-ref" href="#fn:407-2"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;I do still use &lt;code&gt;become-freshly-indented-no-tabs&lt;/code&gt; on occasion too, and have
it bound to an easy-to-remember and obvious (to me) key.&lt;/p&gt;
&lt;p&gt;And so, despite the fact that most of the content of &lt;code&gt;become.el&lt;/code&gt; is probably
obsolete at this point, despite the fact that there are probably far better
and more idiomatic ways of doing these things these days... it's my little
personal package that has grown with me in the 3 (and a bit) decades I've
had Emacs under my fingertips. I'm going to keep it around just a little
longer.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:407-1"&gt;
&lt;p&gt;The header for &lt;code&gt;become.el&lt;/code&gt; says 2017, but I think the header itself
came a little later when I &lt;a href="https://blog.davep.org/2017/04/01/another_revamp_of_my_emacs_config.html"&gt;did some more work on my
config&lt;/a&gt;.&amp;#160;&lt;a class="footnote-backref" href="#fnref:407-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:407-2"&gt;
&lt;p&gt;And if you don't know, &lt;a href="https://en.wikipedia.org/wiki/Signature_block#Standard_delimiter" rel="noopener noreferrer" target="_blank"&gt;now you
do&lt;/a&gt;.&amp;#160;&lt;a class="footnote-backref" href="#fnref:407-2" title="Jump back to footnote 2 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/16/become-el-v1-4-0.html</guid>
      <category>Emacs</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <category>become.el</category>
      <category>coding</category>
      <pubDate>Tue, 16 Jun 2026 16:19:59 +0100</pubDate>
    </item>
    <item>
      <title>More mode line tweaking</title>
      <link>https://blog.davep.org/2026/06/15/more-mode-line-tweaking.html</link>
      <description>&lt;p&gt;The &lt;a href="https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html"&gt;simplification of my mode
line&lt;/a&gt; is sticking, in that I like
how it's turned out and I find it more useful to have it this simple. But I
did notice something was missing: I'm a pretty constant but pretty casual
user of &lt;a href="https://github.com/bbatsov/projectile" rel="noopener noreferrer" target="_blank"&gt;projectile&lt;/a&gt;. I know it's a
package that offers a wealth of tools, yet mostly I just use it as a project
bookmark system. For this, though, it works well.&lt;/p&gt;
&lt;p&gt;Given this, having a quick and easy way to check that I'm in the project I
think I'm in is a good idea. While I also have
&lt;a href="https://github.com/jaypei/emacs-neotree" rel="noopener noreferrer" target="_blank"&gt;neotree&lt;/a&gt; open all the time, which
gives a fairly obvious clue, my eyes keep flitting down to the mode line.&lt;/p&gt;
&lt;p&gt;The change I made the other day, deliberately, left the project off. I think
this was a simplification too far. So now it's back.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Slightly updated mode line" height="1660" loading="lazy" src="https://blog.davep.org/attachments/2026/06/15/mode-line-update.webp#centre" width="2070" /&gt;&lt;/p&gt;
&lt;p&gt;The core of &lt;a href="https://github.com/davep/.emacs.d/blob/944e88b18df1147597e0f7be117887bf51c37a77/init.d/packages.d/melpa/mood-line.el" rel="noopener noreferrer" target="_blank"&gt;my mode line
configuration&lt;/a&gt;
now looks like this:&lt;/p&gt;
&lt;div class="highlight" data-lang="elisp"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;mood-line-format&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-defformat&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nb"&gt;:left&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-buffer-status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;propertize&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line--get-glyph&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;:buffer-modified&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;my/mood-line-good-status&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-buffer-name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;my/mood-line-segment-project&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-major-mode&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nb"&gt;:right&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;my/mood-line-segment-vc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;propertize&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-cursor-position&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;#39;my/mood-line-cursor-position&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;A little busier than it started out, but still pretty clean. I do keep
wondering about the cursor position. In most buffers I have line numbers
showing to the left anyway, and it's rare (but not unknown) that I need to
know what column I'm in. I'm very tempted to remove the cursor position
altogether, then the right-hand side would just be the &lt;code&gt;vc&lt;/code&gt; information, at
which point it might make sense to also move the project name over to the
right, given that the project and the repository information generally go
hand-in-hand.&lt;/p&gt;
&lt;p&gt;I'll stick with this for now, but I can see this happening soon.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/15/more-mode-line-tweaking.html</guid>
      <category>Emacs</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <pubDate>Mon, 15 Jun 2026 19:47:15 +0100</pubDate>
    </item>
    <item>
      <title>Animated blogging</title>
      <link>https://blog.davep.org/2026/06/15/animated-blogging.html</link>
      <description>&lt;p&gt;Having &lt;a href="https://blog.davep.org/2026/06/15/animated-blogmore.html"&gt;generated an animation of the development of
BlogMore&lt;/a&gt;, I thought it might be
interesting to visualise the evolution of &lt;a href="https://github.com/davep/davep.github.com" rel="noopener noreferrer" target="_blank"&gt;the repository for this
blog&lt;/a&gt;. So &lt;a href="https://www.youtube.com/watch?v=jM39nd51dpg" rel="noopener noreferrer" target="_blank"&gt;here it
is&lt;/a&gt;:&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
  &lt;iframe width="560" height="315"
    src="https://www.youtube.com/embed/jM39nd51dpg?si=uDFaWJ1MUfl3v0iq"
    title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen&gt;
  &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;I do like how it's really obvious when I &lt;a href="https://blog.davep.org/2023/07/05/the-switch-has-been-made.html"&gt;changed from Jekyll to
Pelican&lt;/a&gt; (&lt;a href="https://youtu.be/jM39nd51dpg?si=xxbt7xIZuTI2P7w0&amp;amp;t=191" rel="noopener noreferrer" target="_blank"&gt;a little after
3:11&lt;/a&gt;), and again
&lt;a href="https://blog.davep.org/2026/02/19/a-new-engine.html"&gt;from Pelican to BlogMore&lt;/a&gt; (&lt;a href="https://youtu.be/jM39nd51dpg?si=MzZSrEdeLwQOA05Q&amp;amp;t=366" rel="noopener noreferrer" target="_blank"&gt;a little after
6:06&lt;/a&gt;).&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/15/animated-blogging.html</guid>
      <category>Meta</category>
      <category>Blogging</category>
      <category>Video</category>
      <category>YouTube</category>
      <category>writing</category>
      <pubDate>Mon, 15 Jun 2026 18:09:21 +0100</pubDate>
    </item>
    <item>
      <title>Animated BlogMore</title>
      <link>https://blog.davep.org/2026/06/15/animated-blogmore.html</link>
      <description>&lt;p&gt;A little animation of the first few months of the work on
&lt;a href="https://blogmore.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;BlogMore&lt;/a&gt;:&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
  &lt;iframe
    width="560"
    height="315"
    src="https://www.youtube.com/embed/M03iPvWKNBQ?si=aBiA2g4XEAGL6C2V"
    title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    referrerpolicy="strict-origin-when-cross-origin"
    allowfullscreen&gt;
  &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=M03iPvWKNBQ" rel="noopener noreferrer" target="_blank"&gt;The video&lt;/a&gt; covers the whole
period of building BlogMore, from the start until today. This means that it
includes work done using &lt;a href="https://blog.davep.org/tag/copilot/"&gt;GitHub Copilot&lt;/a&gt;, &lt;a href="https://blog.davep.org/tag/gemini/"&gt;Google Gemini
CLI&lt;/a&gt;, and &lt;a href="https://blog.davep.org/tag/antigravity/"&gt;Antigravity&lt;/a&gt;.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/15/animated-blogmore.html</guid>
      <category>Coding</category>
      <category>BlogMore</category>
      <category>Video</category>
      <category>YouTube</category>
      <pubDate>Mon, 15 Jun 2026 14:28:58 +0100</pubDate>
    </item>
    <item>
      <title>Recently I found - 1</title>
      <link>https://blog.davep.org/2026/06/15/recently-i-found-1.html</link>
      <description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;An occasional collection of things I've &lt;a href="https://blog.davep.org/series/recently-i-found/"&gt;recently
found&lt;/a&gt; on the Internet and added to &lt;a href="https://blog.davep.org/bookmarks/"&gt;my
bookmarks&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="tutti-space-program"&gt;&lt;a href="https://tsp.grantkot.com/" rel="noopener noreferrer" target="_blank"&gt;Tutti Space Program&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Described as &lt;em&gt;"A playful 2D space sandbox with flowing materials, heat, and
gravity"&lt;/em&gt;, it's exactly that. One of those things to mess with in the
browser when you're either waiting for a boring meeting, or in a boring
meeting, or just have time to kill. Or just because.&lt;/p&gt;
&lt;h2 id="the-jqwik-anti-ai-affair"&gt;&lt;a href="https://blog.johanneslink.net/2026/06/09/the-jqwik-anti-ai-affair/" rel="noopener noreferrer" target="_blank"&gt;The Jqwik Anti-AI Affair&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Jqwik author's perspective on their Markdown-based "malware".&lt;/p&gt;
&lt;h2 id="finalist"&gt;&lt;a href="https://www.finalist.works/" rel="noopener noreferrer" target="_blank"&gt;Finalist&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Saw this go past in my Mastodon feed, although I lost track of who mentioned
it. This app falls under the heading of &lt;em&gt;"apps I really want to like because
it seems to solve a problem I want solved but I don't like how it solves
it"&lt;/em&gt;. Mostly I do like how it solves it, but something is off about it; also
it's laggy as hell on my iPhone 16 Pro, for some reason.&lt;/p&gt;
&lt;p&gt;As such, I didn't stick with it for long, but I might revisit it at some
point to see if the performance improves; hence saving it.&lt;/p&gt;
&lt;h2 id="modus-themes"&gt;&lt;a href="https://protesilaos.com/emacs/modus-themes" rel="noopener noreferrer" target="_blank"&gt;Modus Themes&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the past few days I've been toying with
&lt;a href="https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html"&gt;changing&lt;/a&gt; the
&lt;a href="https://blog.davep.org/2026/06/13/it-got-darker.html"&gt;look&lt;/a&gt; of my Emacs. This is where I landed.
The documentation is excellent. I don't know why it took me so long to
discover it.&lt;/p&gt;
&lt;h2 id="lisaos-emulator"&gt;&lt;a href="https://experiments.frontierslab.ai/lisa-emulator/?profile=/lisa-emulator/los31-run.image" rel="noopener noreferrer" target="_blank"&gt;LisaOS Emulator&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An Apple Lisa. In the browser! I've never used a Lisa. I've never seen one
in person. It's sort of wild to me that I now live at a moment in time where
we can emulate, right in the browser, machines that date from my younger
days.&lt;/p&gt;
&lt;h2 id="vintage-macworld-magazine-library"&gt;&lt;a href="https://vintageapple.org/macworld/" rel="noopener noreferrer" target="_blank"&gt;Vintage Macworld Magazine Library&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Never read it myself; I'm a late arrival to the world of the Mac (I've been
a user &lt;a href="https://blog.davep.org/2015/06/27/my-first-couple-of-weeks-with-an-imac.html"&gt;just over a decade
now&lt;/a&gt;). Should be fun
reading some of the older copies.&lt;/p&gt;
&lt;h2 id="project-gemini"&gt;&lt;a href="https://geminiprotocol.net/" rel="noopener noreferrer" target="_blank"&gt;Project Gemini&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is a new one on me; I just stumbled on it over the weekend. It is a now
well-established protocol for a simple web of documents. I'm &lt;em&gt;very&lt;/em&gt; tempted
to have a play with this. I'm ever so slightly tempted to see if I can do
something with &lt;a href="https://blogmore.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;BlogMore&lt;/a&gt;, such that I could
target this approach in some way too.&lt;/p&gt;
&lt;h2 id="gemcities"&gt;&lt;a href="https://www.gemcities.com/" rel="noopener noreferrer" target="_blank"&gt;Gemcities&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Free hosting for Gemini-protocol sites.&lt;/p&gt;
&lt;h2 id="flounder"&gt;&lt;a href="https://flounder.online/" rel="noopener noreferrer" target="_blank"&gt;flounder&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Free hosting for Gemini-protocol sites.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/15/recently-i-found-1.html</guid>
      <category>Bookmarks</category>
      <category>Apple</category>
      <category>Bookmarks</category>
      <category>Emacs</category>
      <category>Raindrop</category>
      <pubDate>Mon, 15 Jun 2026 09:35:19 +0100</pubDate>
    </item>
    <item>
      <title>This week I found...</title>
      <link>https://blog.davep.org/2026/06/15/this-week-i-found.html</link>
      <description>&lt;p&gt;It's the best part of two years now &lt;a href="https://blog.davep.org/2024/08/18/paindrop.html"&gt;since I dropped Pinboard in favour of
Raindrop&lt;/a&gt;. It's also seven years now since I
first created a Pinboard account and started collecting possibly-useful
bookmarks&lt;sup id="fnref:386-1"&gt;&lt;a class="footnote-ref" href="#fn:386-1"&gt;1&lt;/a&gt;&lt;/sup&gt;. I've found this process useful, and it continues to be a
great way to find and remember things. The way it works these days is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spend most of the week scrolling social networks, Reddit, the Orange Site,
  etc.&lt;/li&gt;
&lt;li&gt;See something I find interesting.&lt;/li&gt;
&lt;li&gt;Add it to the unsorted collection in Raindrop (mostly via &lt;a href="https://apps.apple.com/gb/app/raindrop-io/id1021913807" rel="noopener noreferrer" target="_blank"&gt;the iOS
  app&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Normally once a week fire up
  &lt;a href="https://github.com/davep/braindrop" rel="noopener noreferrer" target="_blank"&gt;Braindrop&lt;/a&gt; and filter, edit,
  describe, and tag the links.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach gets used for a few different reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It lets me collect links I want to refer to in the future.&lt;/li&gt;
&lt;li&gt;It lets me collect links I want to review as a reminder to look at a
  thing.&lt;/li&gt;
&lt;li&gt;It lets me collect links to posts and articles I want to make a point of
  reading.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As such, I use it as both a long-term bookmark/information store as well as
a read-it-later queue. It works well.&lt;/p&gt;
&lt;p&gt;When going through this routine over the weekend, I got to thinking: while I
do &lt;a href="https://blog.davep.org/bookmarks/"&gt;publish a public list of my bookmarks&lt;/a&gt; (complete with &lt;a href="https://raindrop.io/collection/46742255/feed" rel="noopener noreferrer" target="_blank"&gt;RSS
feed&lt;/a&gt;), it might be
interesting to make an occasional post where I list out the links I
discovered, which I found interesting and worth hanging on to, and explain
what caught my interest. It might also be a worthwhile process to look
further through the past seven years of bookmarks and write about some of
the older links (or at least use that occasional review to weed out the
history).&lt;/p&gt;
&lt;p&gt;So, that's the plan. I'm not sure quite how long it will last, but I think
it would make for a good occasional &lt;a href="https://blog.davep.org/series/"&gt;series&lt;/a&gt;. I &lt;em&gt;was&lt;/em&gt; going to
call it &lt;em&gt;"This week I found..."&lt;/em&gt;, but then I realised that that puts
pressure on me to make it a weekly thing. Perhaps it should be more like
&lt;em&gt;"Recently I found..."&lt;/em&gt;; that way it can either be multiple posts in a week,
or once every few weeks.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:386-1"&gt;
&lt;p&gt;I say "started collecting"; I was a del.icio.us user back in the day.&amp;#160;&lt;a class="footnote-backref" href="#fnref:386-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/15/this-week-i-found.html</guid>
      <category>Meta</category>
      <category>Bookmarks</category>
      <category>Raindrop</category>
      <pubDate>Mon, 15 Jun 2026 08:29:08 +0100</pubDate>
    </item>
    <item>
      <title>blogmore.el v5.3.0</title>
      <link>https://blog.davep.org/2026/06/14/blogmore-el-v5-3-0.html</link>
      <description>&lt;p&gt;I've released &lt;a href="https://github.com/davep/blogmore.el" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;blogmore.el&lt;/code&gt;&lt;/a&gt; v5.3.0.
This is a pretty small release but adds a command I realised I'd forgotten
to add a couple of releases ago.&lt;/p&gt;
&lt;p&gt;Now that &lt;a href="https://blogmore.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;BlogMore&lt;/a&gt; has the concept of a post
series, and now that &lt;code&gt;blogmore.el&lt;/code&gt; lets you add and remove a series from a
post, it makes sense that I'd want to &lt;em&gt;link&lt;/em&gt; to a series in a post from time
to time, like I can and do with categories and tags.&lt;/p&gt;
&lt;p&gt;So v5.3.0 adds a &lt;code&gt;blogmore-link-series&lt;/code&gt; command. It can also be found in the
transient menu.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/14/blogmore-el-v5-3-0.html</guid>
      <category>Emacs</category>
      <category>BlogMore</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <category>blogmore.el</category>
      <category>coding</category>
      <pubDate>Sun, 14 Jun 2026 08:49:14 +0100</pubDate>
    </item>
    <item>
      <title>Full fibre might be back on</title>
      <link>https://blog.davep.org/2026/06/13/full-fibre-might-be-back-on.html</link>
      <description>&lt;p&gt;So &lt;a href="https://blog.davep.org/2026/05/26/let-down-by-openreach-and-ee.html"&gt;after the screw-up by Openreach and
EE&lt;/a&gt;, where I was promised
full fibre and then it never happened, I'd assumed that nothing was going to
happen for quite some time. I was told that (likely)
&lt;a href="https://blog.davep.org/tag/openreach/"&gt;Openreach&lt;/a&gt; would contact me when they'd solved whatever
the problem was, but I wasn't holding out much hope that it would be a swift
turnaround.&lt;/p&gt;
&lt;p&gt;Yesterday, however, I got an email from &lt;a href="https://blog.davep.org/tag/ee/"&gt;EE&lt;/a&gt; claiming that full
fibre was available at my address. While sceptical about this, assuming it
was just some marketing nonsense that wasn't paying attention to the details
of where I live, I called them to check. I explained the problem, I had them
read the notes on my account, I had them acknowledge all that had happened
and they reassured me that, for real, no kidding, no nonsense, this was all
gonna happen this time.&lt;/p&gt;
&lt;p&gt;So... watch this space. I already have an installation date (it's next
month) just from the order-planning call -- something which didn't happen
the last time. Within the next few weeks, I will either finally be
&lt;a href="https://blog.davep.org/2026/05/15/planning-on-returning-to-streaming.html"&gt;returning to
streaming&lt;/a&gt;, and
enjoying all the other benefits of full fibre, or I'll be writing yet
another post about how EE and Openreach messed up.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/13/full-fibre-might-be-back-on.html</guid>
      <category>Life</category>
      <category>BT</category>
      <category>Broadband</category>
      <category>Business</category>
      <category>EE</category>
      <category>Openreach</category>
      <pubDate>Sat, 13 Jun 2026 20:33:04 +0100</pubDate>
    </item>
    <item>
      <title>Stottie - attempt 2</title>
      <link>https://blog.davep.org/2026/06/13/stottie-attempt-2.html</link>
      <description>&lt;p&gt;After last weekend's &lt;a href="https://blog.davep.org/2026/06/07/attempting-a-stottie.html"&gt;attempt at making a couple of
stotties&lt;/a&gt;, I thought I'd have another
go. This time the aim was to try and get the classic shape, mostly by trying
to ensure they were rounded and also flatter before going into the oven.&lt;/p&gt;
&lt;p&gt;The dough post-rise:&lt;/p&gt;
&lt;p&gt;&lt;img alt="The dough" height="1521" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/IMG_0081.webp#centre" width="2028" /&gt;&lt;/p&gt;
&lt;p&gt;Ready for the oven:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ready for the oven" height="1536" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/IMG_0084.webp#centre" width="2048" /&gt;&lt;/p&gt;
&lt;p&gt;Fresh out of the oven:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Fresh out of the oven" height="1536" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/IMG_0085.webp#centre" width="2048" /&gt;&lt;/p&gt;
&lt;p&gt;Side view:&lt;/p&gt;
&lt;p&gt;&lt;img alt="The side view" height="1536" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/IMG_0087.webp#centre" width="2048" /&gt;&lt;/p&gt;
&lt;p&gt;So... still viable bread. Still going to get eaten. But I think this is
obviously another fail when it comes to the (lack of) thinness and the shape
after they come out of the oven.&lt;/p&gt;
&lt;p&gt;There will be another attempt. I'm going to keep trying this until I get it
right!&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/13/stottie-attempt-2.html</guid>
      <category>Life</category>
      <category>baking</category>
      <category>bread</category>
      <category>cooking</category>
      <category>stottie</category>
      <pubDate>Sat, 13 Jun 2026 17:16:36 +0100</pubDate>
    </item>
    <item>
      <title>Getting on with Antigravity</title>
      <link>https://blog.davep.org/2026/06/13/getting-on-with-antigravity.html</link>
      <description>&lt;p&gt;It's been a wee while now since I &lt;a href="https://blog.davep.org/series/the-great-github-copilot-meltdown-of-2026/"&gt;stopped using GitHub
Copilot&lt;/a&gt; and switched to
doing everything locally (in a tool sense, not a model sense) with the
&lt;a href="https://blog.davep.org/tag/antigravity/"&gt;Antigravity&lt;/a&gt; CLI, so I thought I'd jot down how it's
been going. Simply put, it's been going well.&lt;/p&gt;
&lt;p&gt;I've found the CLI itself easy enough to work with (I've not really
attempted to use the GUI application), and the default model choice has done
a lot of work for me on &lt;a href="https://blogmore.davep.dev/" rel="noopener noreferrer" target="_blank"&gt;BlogMore&lt;/a&gt; without
issue. I think it's fair to say that, at this point, I'm finding it
far more consistent than I was finding Copilot+Claude.&lt;/p&gt;
&lt;p&gt;As for the &lt;a href="https://blog.davep.org/2026/05/26/still-confused-about-antigravity-quotas.html"&gt;initial confusion and concerns about
quotas&lt;/a&gt;: I've
found that that's calmed down, with me never obviously coming close to
hitting my limit while working on any change to BlogMore. The worst I've
seen is getting down to about 20% of the 5-hour rolling window, and even
then that's been when I've pretty much finished the work I was doing.&lt;/p&gt;
&lt;p&gt;The actual display of quotas has changed too, I noticed just this morning.
Now, rather than showing progress bars per model, it's more like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="The new Antigravity quota display" height="424" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/ag-quotas.webp#centre" width="640" /&gt;&lt;/p&gt;
&lt;p&gt;While I suspect the weekly quota display will cause a smidge of anxiety to
start with, mostly I appreciate that being added, and being so clear. Given
the level of work I'm using this for, I can't see myself coming close to
using it all up and having to wait. The quota does come with an explanation
in the CLI too:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Within each group, models share a weekly limit and a 5-hour limit. Quota
is consumed proportionally to the cost of the tokens. Thus, limits will
last longer with shorter tasks or using more cost-effective models. The
5-hour limit smooths out aggregate demand to fairly distribute global
capacity across all users, while your weekly limit is tied directly to
your individual tier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Digging a little deeper, I see there's a &lt;code&gt;/credits&lt;/code&gt; command and, quite
quickly, I can go from that to this in my browser:&lt;/p&gt;
&lt;p&gt;&lt;img alt="I can buy more credits" height="423" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/buy-credits.webp#centre" width="640" /&gt;&lt;/p&gt;
&lt;p&gt;I'm not sure exactly how much work 2,500 credits might represent, or what
impact it would have or could have on the weekly quota; confusingly, if I
follow the links from the CLI to see my usage, I see a message that says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI credits included with your plan have been replaced by product-based
usage limits&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So which is it? Do I have usage limits? Do I have a hard cap for a week? Can
I extend it or not? Do I extend it using credits or not? I sense the
messaging around this is all still a little mixed up. I do know that if I
turn on credit fallback in &lt;code&gt;/settings&lt;/code&gt;, I get a handy display of the credits
I have left:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI Credits: 1000&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So this weirdly reads like I can and am using credits as a fallback to the
quota, but also not.&lt;/p&gt;
&lt;p&gt;Schrödinger’s Quota?&lt;/p&gt;
&lt;p&gt;I'll dig around some more and see if I can find a definitive answer.&lt;/p&gt;
&lt;p&gt;All that said: barring any changes that might upset things (which, let's be
honest, is something that's highly likely given the state of the AI/agentic
coding world), I think I'm happy with how this is going. For now, at least,
BlogMore's primary development tool will carry on being Antigravity.&lt;/p&gt;
&lt;p&gt;And me, of course.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/13/getting-on-with-antigravity.html</guid>
      <category>AI</category>
      <category>Antigravity</category>
      <category>Coding</category>
      <category>Gemini</category>
      <category>Google</category>
      <pubDate>Sat, 13 Jun 2026 16:47:26 +0100</pubDate>
    </item>
    <item>
      <title>It got darker</title>
      <link>https://blog.davep.org/2026/06/13/it-got-darker.html</link>
      <description>&lt;p&gt;By pure coincidence, it's &lt;a href="https://blog.davep.org/2020/06/14/my-journey-to-the-dark-side-is-complete.html"&gt;six years ago
tomorrow&lt;/a&gt; that I
finally, after years of running &lt;a href="https://blog.davep.org/category/emacs/"&gt;Emacs&lt;/a&gt; with a bright
white background, moved to using a dark theme. It took a little bit of
getting used to but eventually I got very comfortable with it, and since
then have run everything I can in a dark mode too.&lt;/p&gt;
&lt;p&gt;On occasion, in the last year or so, I've had this urge to move to something
darker. Also, in part, it's an urge to change things up a little. I felt it
was time for a refresh of how my Emacs looks. I've tried a few themes, but
none have ever stuck. When trying them I've run into various issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It just didn't look nice at all&lt;/li&gt;
&lt;li&gt;Too many other things I use in Emacs didn't get themed&lt;/li&gt;
&lt;li&gt;It looked like there was going to be too much work to do to really theme
  things well&lt;/li&gt;
&lt;li&gt;It caused Emacs to crash&lt;sup id="fnref:410-1"&gt;&lt;a class="footnote-ref" href="#fn:410-1"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, yesterday evening, after &lt;a href="https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html"&gt;making an effort to simplify my mode
line&lt;/a&gt;, I was determined to find a
darker theme that I would be happy with. I think I finally managed!&lt;/p&gt;
&lt;p&gt;&lt;img alt="An even darker Emacs" height="2052" loading="lazy" src="https://blog.davep.org/attachments/2026/06/13/darker-emacs.webp#centre" width="2588" /&gt;&lt;/p&gt;
&lt;p&gt;I've settled on &lt;code&gt;modus-vivendi&lt;/code&gt; from &lt;a href="https://protesilaos.com/emacs/modus-themes" rel="noopener noreferrer" target="_blank"&gt;modus
themes&lt;/a&gt;. Out of the box it felt
right, and from what I can see in the documentation there's an amazing
amount of customisation you can do. The key point there too is the
documentation; there's so much of it, it's incredibly comprehensive.&lt;/p&gt;
&lt;p&gt;For example: the default choice for the mode line is to have an unsubtle
border around it -- presumably to create a good contrast. I found that far
too distracting and was wondering what I could do about it. I didn't have to
wonder long, &lt;a href="https://protesilaos.com/emacs/modus-themes#h:80ddba52-e188-411f-8cc0-480ebd75befe" rel="noopener noreferrer" target="_blank"&gt;the documentation addresses exactly that
situation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another downside I ran into is that the colours that were showing in the
mode line, when I switched to &lt;code&gt;mood-line&lt;/code&gt; yesterday, were gone. I spent a
short amount of time last night, and a good hour or so this morning, trying
to wrangle &lt;code&gt;mood-line&lt;/code&gt; into something I liked, but I just couldn't get
anything sensible going. Eventually I cracked, fired up
&lt;a href="https://blog.davep.org/tag/antigravity/"&gt;Antigravity&lt;/a&gt;, prompted it with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am using mood-line for my mode line -- see
&lt;code&gt;init.d/packages.d/melpa/mood-line.el&lt;/code&gt; and
https://github.com/emacsmirror/mood-line&lt;/p&gt;
&lt;p&gt;I am using https://protesilaos.com/emacs/modus-themes as my theme&lt;/p&gt;
&lt;p&gt;I would like to have finer control over the parts of the mode line I've
configured. For example, I'd like the buffer name to stand out in an
informative colour, but one that is part of the modus theme's colour
scheme.&lt;/p&gt;
&lt;p&gt;Don't make changes yet, but help me understand how I should do this in a
maintainable way.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and then spent about 20 minutes going back and forth, refining what I
wanted; this &lt;a href="https://github.com/davep/.emacs.d/blob/b9db88bae8f69f7e04f648642a88fe6f5ee02db2/init.d/packages.d/melpa/mood-line.el" rel="noopener noreferrer" target="_blank"&gt;got me a
result&lt;/a&gt;
I'm happy with from a visual point of view. I still need to fully review the
code and the approach it took, but it isn't &lt;em&gt;too&lt;/em&gt; far removed from what I'd
been trying myself.&lt;/p&gt;
&lt;p&gt;Overall I'm pleased with the result, and this is the longest I've stuck with
a new theme (at this point I'm probably about 4 or 5 hours into working in
it). I think that says something significant. I can see myself still wanting
to tweak some aspects of it though. For example, the left-hand fringe
doesn't feel quite right, in a way I can't quite put my finger on. While I
want it to stand out from the main editing area, it feels... disconnected in
some way. Also the background colour of the mode line still feels like it
doesn't quite blend how I'd like.&lt;/p&gt;
&lt;p&gt;Now to see if this lasts...&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:410-1"&gt;
&lt;p&gt;Seriously, just the once, but that happened. I took that as a sign
from the Lisp gods that I was doing something sinful.&amp;#160;&lt;a class="footnote-backref" href="#fnref:410-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/13/it-got-darker.html</guid>
      <category>Emacs</category>
      <category>AI</category>
      <category>Antigravity</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <pubDate>Sat, 13 Jun 2026 10:49:48 +0100</pubDate>
    </item>
    <item>
      <title>Simplifying my mode line</title>
      <link>https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html</link>
      <description>&lt;p&gt;Every so often I get the urge to change how Emacs looks. Ever since I
finally &lt;a href="https://blog.davep.org/2020/06/14/my-journey-to-the-dark-side-is-complete.html"&gt;fell to the dark
side&lt;/a&gt;, my Emacs
has stayed looking pretty much the same. I like how it looks, but I do keep
having this urge to find a darker theme, and to also make things just a wee
bit more minimal.&lt;/p&gt;
&lt;p&gt;At one point I was very much about, and in favour of, having as much
information as possible in &lt;a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Mode-Line.html" rel="noopener noreferrer" target="_blank"&gt;the mode
line&lt;/a&gt;.
Eventually I realised I didn't use that much and tried to declutter
somewhat, mostly cleaning up minor mode information with
&lt;a href="https://www.gnu.org/software/emacs/manual/html_node/use-package/Diminish.html" rel="noopener noreferrer" target="_blank"&gt;diminish&lt;/a&gt;.
Even then though, I had this feeling that there was still more information
in the mode line than I really needed.&lt;/p&gt;
&lt;p&gt;So, just now, as an experiment, I've decided to start fairly clean. I've
dropped &lt;a href="https://github.com/milkypostman/powerline" rel="noopener noreferrer" target="_blank"&gt;powerline&lt;/a&gt; and instead
decided to have a play with
&lt;a href="https://github.com/emacsmirror/mood-line" rel="noopener noreferrer" target="_blank"&gt;mood-line&lt;/a&gt;. Rather than use one
of its pre-configured formats, I've had a go at rolling my own:&lt;/p&gt;
&lt;div class="highlight" data-lang="elisp"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;setq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;mood-line-format&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-defformat&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nb"&gt;:left&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;(((&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-buffer-status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-buffer-name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; : &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-major-mode&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nb"&gt;:right&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="p"&gt;(((&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-vc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;  &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;mood-line-segment-cursor-position&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So far I'm really pleased with the result.&lt;/p&gt;
&lt;p&gt;&lt;img alt="My GNU Emacs" height="1716" loading="lazy" src="https://blog.davep.org/attachments/2026/06/12/mood-line-emacs.webp#centre" width="1818" /&gt;&lt;/p&gt;
&lt;p&gt;For any given buffer the mode line display is now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The status of the buffer&lt;/li&gt;
&lt;li&gt;The name of the buffer&lt;/li&gt;
&lt;li&gt;The major mode of the buffer&lt;/li&gt;
&lt;li&gt;The git status for what I'm working on&lt;/li&gt;
&lt;li&gt;The cursor position&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Honestly, I'm struggling to think of anything else I really need to see.
Sure, I can imagine there's the odd minor mode I might need to know about,
but generally I either have them enabled all the time anyway, or it's
something so obvious that I know when it's not enabled.&lt;/p&gt;
&lt;p&gt;I'm going to run with this for a while now and see how I feel. I can sense
that I might want to tweak a couple of things (at the moment the left-hand
side will move when I change the unsaved status of the buffer; on the right
there's nothing that tells me that this file I'm editing right now is new to
the repo and not part of it yet), but this basic configuration feels clean
and right.&lt;/p&gt;
&lt;p&gt;Meanwhile... the search for &lt;a href="https://emacsthemes.com/" rel="noopener noreferrer" target="_blank"&gt;a theme&lt;/a&gt; that is
darker and I actually prefer over &lt;a href="https://github.com/purcell/color-theme-sanityinc-tomorrow" rel="noopener noreferrer" target="_blank"&gt;the sanityinc-tomorrow
themes&lt;/a&gt;
continues. I fear this is going to be a lot harder.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html</guid>
      <category>Emacs</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <pubDate>Fri, 12 Jun 2026 19:06:26 +0100</pubDate>
    </item>
    <item>
      <title>Cake and beers, I guess</title>
      <link>https://blog.davep.org/2026/06/12/cake-and-beers-i-guess.html</link>
      <description>&lt;p&gt;&lt;img alt="u/davepearson" height="243" loading="lazy" src="https://blog.davep.org/attachments/2026/06/12/davep-reddit-half.webp#centre" width="190" /&gt;&lt;/p&gt;
&lt;p&gt;Damn. Oh damn. My Reddit account is now old enough to buy beer&lt;sup id="fnref:394-1"&gt;&lt;a class="footnote-ref" href="#fn:394-1"&gt;1&lt;/a&gt;&lt;/sup&gt;. O_o&lt;/p&gt;
&lt;p&gt;&lt;img alt="Happy cake day to me" height="88" loading="lazy" src="https://blog.davep.org/attachments/2026/06/12/cake-day.webp#centre" width="291" /&gt;&lt;/p&gt;
&lt;p&gt;While I probably have accounts somewhere that are older than this, that's
still a pretty long time to have held an account somewhere &lt;em&gt;and still be
actively using it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I remember I'd been reading Reddit for a couple of years before I finally
made an account; I can't quite remember what prompted me to do that. In that
time I've been more or less active there (although seldom one to post things
or make comments -- normally I just consume and vote). From what I can tell
that suggests I was starting to read Reddit within a year of it being
launched.&lt;/p&gt;
&lt;p&gt;I vaguely remember those old days. I remember all the conversation when &lt;a href="http://www.aaronsw.com/weblog/rewritingreddit" rel="noopener noreferrer" target="_blank"&gt;it
moved away from being developed in
Lisp&lt;/a&gt;. I can't remember if I
was visiting it around that time.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Charter member badge" height="71" loading="lazy" src="https://blog.davep.org/attachments/2026/06/12/charter-member.webp#centre" width="71" /&gt;&lt;/p&gt;
&lt;p&gt;I do have the &lt;a href="https://www.reddit.com/r/TrophyWiki/comments/f11gv2/reddit_trophy_charter_member/" rel="noopener noreferrer" target="_blank"&gt;charter member
badge&lt;/a&gt;
because, back when gold was launched, I was reading the site a &lt;em&gt;lot&lt;/em&gt; and it
seemed sensible to support it at the time. I've long since let that
subscription lapse. I see zero benefit in Reddit Premium.&lt;/p&gt;
&lt;p&gt;I still subscribe to &lt;a href="https://www.reddit.com/r/lounge/" rel="noopener noreferrer" target="_blank"&gt;r/lounge&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For some time, a couple or so years back, when they killed off most
third-party clients, I stopped using the site for a while. These days I have
got back into the habit of reading it again. While I do occasionally check
in on a handful of &lt;a href="https://join-lemmy.org/" rel="noopener noreferrer" target="_blank"&gt;Lemmy subscriptions&lt;/a&gt;, and do
keep thinking I should probably look into
&lt;a href="https://lobste.rs/" rel="noopener noreferrer" target="_blank"&gt;lobste.rs&lt;/a&gt;&lt;sup id="fnref:394-2"&gt;&lt;a class="footnote-ref" href="#fn:394-2"&gt;2&lt;/a&gt;&lt;/sup&gt;, it's hard to break the habit of opening
the Reddit app and scrolling for a wee while. I've yet to finally and fully
replace it.&lt;/p&gt;
&lt;p&gt;I should go look at some of my other longer-serving accounts on websites and
services and see exactly which is my oldest one.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id="fn:394-1"&gt;
&lt;p&gt;Legally. In the UK.&amp;#160;&lt;a class="footnote-backref" href="#fnref:394-1" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:394-2"&gt;
&lt;p&gt;If you are reading this, do use lobste.rs, and fancy throwing me an
invite, I'd appreciate it!&amp;#160;&lt;a class="footnote-backref" href="#fnref:394-2" title="Jump back to footnote 2 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/12/cake-and-beers-i-guess.html</guid>
      <category>Life</category>
      <category>history</category>
      <category>reddit</category>
      <pubDate>Fri, 12 Jun 2026 13:27:16 +0100</pubDate>
    </item>
    <item>
      <title>blogmore.el v5.2.0</title>
      <link>https://blog.davep.org/2026/06/12/blogmore-el-v5-2-0.html</link>
      <description>&lt;p&gt;Another quick update to
&lt;a href="https://github.com/davep/blogmore.el" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;blogmore.el&lt;/code&gt;&lt;/a&gt;, again to fix an issue
I've run into with the new frontmatter-handling code. This time it's to
address an actual crash that could happen if a property was available but
empty. For example, if a post had frontmatter that looked like this:&lt;/p&gt;
&lt;div class="highlight" data-lang="yaml"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;blogmore.el&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;v5.2.0&amp;quot;&lt;/span&gt;
&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;2026-06-12&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;08:31:15+0100&amp;quot;&lt;/span&gt;
&lt;span class="nt"&gt;category&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Emacs&lt;/span&gt;
&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And I then went to use &lt;code&gt;blogmore-add-tag&lt;/code&gt;, I'd get a crash saying:&lt;/p&gt;
&lt;div class="highlight" data-lang="text"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Wrong type argument: sequencep, :null
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The reason being that &lt;code&gt;tags&lt;/code&gt; was being parsed with a value of &lt;code&gt;:null&lt;/code&gt;,
rather than (as before) having a value of &lt;code&gt;nil&lt;/code&gt; (which of course meant I had
a nice empty list to do things with). It was an easy enough fix.&lt;/p&gt;
&lt;p&gt;At this point I think I've managed to shake out any serious issues with the
proper YAML-parsing approach to frontmatter, as I've used it to write a
handful of posts now.&lt;/p&gt;</description>
      <guid isPermaLink="false">https://blog.davep.org/2026/06/12/blogmore-el-v5-2-0.html</guid>
      <category>Emacs</category>
      <category>BlogMore</category>
      <category>Emacs</category>
      <category>Emacs Lisp</category>
      <category>Lisp</category>
      <category>blogmore.el</category>
      <category>coding</category>
      <pubDate>Fri, 12 Jun 2026 08:31:15 +0100</pubDate>
    </item>
  </channel>
</rss>
