<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dave&#39;s log</title>
    <link>https://log.dave.cafe/</link>
    <description>The final bastion</description>
    <pubDate>Tue, 22 Sep 2026 13:41:38 +0200</pubDate>
    <item>
      <title>Shortly before midnight, Dave tapped the side of the log, to set the time</title>
      <link>https://log.dave.cafe/shortly-before-midnight-dave-tapped-the-side-of-the-log-to-set-the-time</link>
      <description>&lt;![CDATA[The log had to learn to tell the time properly.&#xA;&#xA;Every transmission now carries a complete numerical timestamp beneath its title: year, month, day, hour, minute, second, and UTC offset. No vague dates, instead the precision you expect from a proper rolling log: 2026-08-10 21:48:56 +02:00.&#xA;&#xA;The site wordmark has gained a discreet live clock in the same format. It is synchronized with the server in the Europe/Berlin timezone, automatically accounts for summer and winter time, and periodically checks that it has not drifted.&#xA;&#xA;The clock is deliberately small. No flashing control panels, no deafening alarms and, so far, no countdown to a reactor breach.&#xA;&#xA;Dave tapped the side of the log. The digits settled into place.&#xA;&#xA;The final outpost knows exactly when it was and when it will be.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>The log had to learn to tell the time properly.</p>

<p>Every transmission now carries a complete numerical timestamp beneath its title: year, month, day, hour, minute, second, and UTC offset. No vague dates, instead the precision you expect from a proper rolling log: <code>2026-08-10 21:48:56 +02:00</code>.</p>

<p>The site wordmark has gained a discreet live clock in the same format. It is synchronized with the server in the <code>Europe/Berlin</code> timezone, automatically accounts for summer and winter time, and periodically checks that it has not drifted.</p>

<p>The clock is deliberately small. No flashing control panels, no deafening alarms and, so far, no countdown to a reactor breach.</p>

<p>Dave tapped the side of the log. The digits settled into place.</p>

<p>The final outpost knows exactly when it was and when it will be.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/shortly-before-midnight-dave-tapped-the-side-of-the-log-to-set-the-time</guid>
      <pubDate>Mon, 10 Aug 2026 20:33:19 +0000</pubDate>
    </item>
    <item>
      <title>Shield up, ready and watching, the outpost got Orbitronized</title>
      <link>https://log.dave.cafe/shield-up-ready-and-watching-the-outpost-got-orbitronized</link>
      <description>&lt;![CDATA[Getting WriteFreely online was just the first milestone. Getting it to look and behave the way I wanted was another mission, now accomplished.&#xA;&#xA;The original installation already did the important things. It runs happily on a small Ubuntu server, uses a compact SQLite database, sits behind Nginx, and lets you publish ordinary Markdown posts without weighing the system down with a complex content-management platform like WordPress.&#xA;&#xA;The server’s attack surface and susceptibility to overloading are reduced by the absence of search. With a WriteFreely blog, a visitor can just use their browser’s built-in search box to find words and phrases in the blog landing page.&#xA;&#xA;WriteFreely is fast, private, self-hosted and reassuringly uncomplicated.&#xA;&#xA;One styling customization introduced a dark background, red highlights, dotted-link underlining and the Orbitron typeface.&#xA;&#xA;The site name now uses Audiowide, which gives it a little more of the neon-sign character of the title on the main Dave Café blog.&#xA;&#xA;A restrained red glow makes it noticeable without turning every page into the frontage of a kebab shop at two in the morning.&#xA;&#xA;Although I&#39;ve often had nothing against a nice kebab at two in the morning, and have absolutely nothing against kebab shops at all.&#xA;&#xA;A light-and-dark theme switcher is another little tweak. The button sits at the bottom-right of the viewport and remembers the selected mode.&#xA;&#xA;Dark mode is the default on the outpost, but light mode is working perfectly.&#xA;&#xA;In light mode, the red accent got slightly darkened for better contrast.&#xA;&#xA;Linked headings acquired a custom dotted underline.&#xA;&#xA;The most-visible new feature is a floating navigation rail on the righthand side.&#xA;&#xA;The four buttons take you to the top of the page, to the previous post heading, to the next post heading, or to the page bottom.&#xA;&#xA;The rail is vertically centered and aligns with the separate sun/moon light-dark theme switcher below it.&#xA;&#xA;A little JavaScript discovers the relevant headings and moves between them; the controls disappear on narrow displays where they would consume too much space.&#xA;&#xA;That makes it easy to skip between page top, bottom and headings, and is surprisingly useful for navigating within a long timeline or article.&#xA;&#xA;Less-visible work has happened under the hood.&#xA;&#xA;Maintenance on Postfix and Dovecot aimed at securing and protecting the mail stack.&#xA;&#xA;For instance, SMTP submission uses STARTTLS and authenticated sender restrictions. DKIM signing got tested end to end. Dovecot provides encrypted IMAP access, Fail2ban watches both mail authentication services, and the firewall exposes only the intended SMTP, submission and IMAPS ports.&#xA;&#xA;Let’s Encrypt certificate renewal simulates successfully, including the service reload hooks, and the whole server survives reboot with every required service, listener, jail and route returning automatically.&#xA;&#xA;Another notable change is that the same WriteFreely codebase is now doing a second job hosting https://bio.dave.cafe/.&#xA;&#xA;That new bio site has its own service, configuration, templates, encryption keys, database, certificate and Web assets, but shares the application binary and static resources.&#xA;&#xA;It uses WriteFreely&#39;s Novel mode, a format that places chapters in their original publishing order and hides their dates, which is better for an autobiography than the reverse chronology of a running log.&#xA;&#xA;Both instances are humming along together comfortably on the same small server. One records what is happening now; the other assembles what happened before.&#xA;&#xA;It&#39;s still a lightweight, text-centered publishing system, with no tracking scripts, advertising machinery and social-media distractions, and without a warehouse full of plugins.&#xA;&#xA;The first transmission was a proof of the outpost being online. Now it&#39;s ready for prime time.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>Getting <em>WriteFreely</em> online was just the first milestone. Getting it to look and behave the way I wanted was another mission, now accomplished.</p>

<p>The original installation already did the important things. It runs happily on a small <em>Ubuntu</em> server, uses a compact <em>SQLite</em> database, sits behind <em>Nginx</em>, and lets you publish ordinary <em>Markdown</em> posts without weighing the system down with a complex content-management platform like <em>WordPress</em>.</p>

<p>The server’s attack surface and susceptibility to overloading are reduced by the absence of search. With a <em>WriteFreely</em> blog, a visitor can just use their browser’s built-in search box to find words and phrases in the blog landing page.</p>

<p><em>WriteFreely</em> is fast, private, self-hosted and reassuringly uncomplicated.</p>

<p>One styling customization introduced a dark background, red highlights, dotted-link underlining and the <em>Orbitron</em> typeface.</p>

<p>The site name now uses <em>Audiowide</em>, which gives it a little more of the neon-sign character of the title on the main <code>Dave Café</code> blog.</p>

<p>A restrained red glow makes it noticeable without turning every page into the frontage of a kebab shop at two in the morning.</p>

<p>Although I&#39;ve often had nothing against a nice kebab at two in the morning, and have absolutely nothing against kebab shops at all.</p>

<p>A light-and-dark theme switcher is another little tweak. The button sits at the bottom-right of the viewport and remembers the selected mode.</p>

<p>Dark mode is the default on the outpost, but light mode is working perfectly.</p>

<p>In light mode, the red accent got slightly darkened for better contrast.</p>

<p>Linked headings acquired a custom dotted underline.</p>

<p>The most-visible new feature is a floating navigation rail on the righthand side.</p>

<p>The four buttons take you to the top of the page, to the previous post heading, to the next post heading, or to the page bottom.</p>

<p>The rail is vertically centered and aligns with the separate sun/moon light-dark theme switcher below it.</p>

<p>A little <em>JavaScript</em> discovers the relevant headings and moves between them; the controls disappear on narrow displays where they would consume too much space.</p>

<p>That makes it easy to skip between page top, bottom and headings, and is surprisingly useful for navigating within a long timeline or article.</p>

<p>Less-visible work has happened under the hood.</p>

<p>Maintenance on <em>Postfix</em> and <em>Dovecot</em> aimed at securing and protecting the mail stack.</p>

<p>For instance, SMTP submission uses STARTTLS and authenticated sender restrictions. DKIM signing got tested end to end. <em>Dovecot</em> provides encrypted IMAP access, <em>Fail2ban</em> watches both mail authentication services, and the firewall exposes only the intended SMTP, submission and IMAPS ports.</p>

<p><em>Let’s Encrypt</em> certificate renewal simulates successfully, including the service reload hooks, and the whole server survives reboot with every required service, listener, jail and route returning automatically.</p>

<p>Another notable change is that the same <em>WriteFreely</em> codebase is now doing a second job hosting <a href="https://bio.dave.cafe/">https://bio.dave.cafe/</a>.</p>

<p>That new bio site has its own service, configuration, templates, encryption keys, database, certificate and Web assets, but shares the application binary and static resources.</p>

<p>It uses <em>WriteFreely</em>&#39;s <code>Novel</code> mode, a format that places chapters in their original publishing order and hides their dates, which is better for an autobiography than the reverse chronology of a running log.</p>

<p>Both instances are humming along together comfortably on the same small server. One records what is happening now; the other assembles what happened before.</p>

<p>It&#39;s still a lightweight, text-centered publishing system, with no tracking scripts, advertising machinery and social-media distractions, and without a warehouse full of plugins.</p>

<p>The first transmission was a proof of the outpost being online. Now it&#39;s ready for prime time.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/shield-up-ready-and-watching-the-outpost-got-orbitronized</guid>
      <pubDate>Sun, 09 Aug 2026 21:25:34 +0000</pubDate>
    </item>
    <item>
      <title>When the Orcs are without, and Dave goes shields-up for the defensive stand at the last outpost</title>
      <link>https://log.dave.cafe/when-the-orcs-are-without-and-dave-does-shields-up-for-the-last-stand</link>
      <description>&lt;![CDATA[When that day comes, this is where it will be at. A standalone outpost that relies entirely on its own in-server resources can be relatively simple and quite easy to deploy and maintain. What you can use is a lightweight, minimalist blogging software called WriteFreely, running on a Linux server (of course, what else?)&#xA;&#xA;It’s principally a text-only - or at least certainly ‘text-centric’ - tool that can be run comfortably within 1 Gigabyte of memory, and that includes running a mail server to allow post-by-email publishing, as well as all the usual ‘must-have’ services (notably a Web proxy server like Apache, Nginx, or Caddy).&#xA;&#xA;The database that a WriteFreely blogging website needs is provided by a simple and robust SQLite flat-file database. Because the content that the database is storing is text-only, it’s actually quite compact in size and beginner-easy to back up.&#xA;&#xA;WriteFreely is running happily on a small 10-Gigabyte filesystem, and just a few Gigabytes of space gives you the possibility of quite a huge library of blog posts.&#xA;&#xA;With even a single virtual CPU, page-serving performance is good, certainly if you’re running a fairly low-traffic blog. A host like that can idle at almost-zero processing level and just 30% memory occupation.&#xA;&#xA;Yet another advantage of a text-only blog is that it consumes much less network bandwidth - it’s efficient and about as green as you can get.&#xA;&#xA;The simplicity of WriteFreely’s post editor interface makes it an absolute boon for focusing and writing without distraction.&#xA;&#xA;It’s likely to be robust and able to withstand any unexpected big demand for pages. That does presume that there’s actually anybody who wants to read the garbage, sorry, content that you publish.&#xA;&#xA;There is also the easy-to-do option of proxying your site through Cloudflare if you are getting hostile dynamic denial-of-service attention.&#xA;&#xA;Fail2ban provides some pretty-efficient security and abuse handling, and should be a de facto choice for every Linux self-hoster, in addition to any other protective means you might use.&#xA;&#xA;Fail2ban is another one of those great Linux tools that works well while using quite little CPU time.&#xA;&#xA;One wise and simple precaution regarding memory management is to make sure you set up a swapfile, to ensure that application services eating too far into the modest 1 Gigabyte of memory are less likely to cause system errors and logjams.&#xA;&#xA;With 1 Gigabyte of memory, it’s worth devoting 2 Gigabytes of your 10-Gigabyte filesystem to a generously-sized swapfile. It will really increase your server’s resilience when traffic spikes.&#xA;&#xA;And, of course, you’ll be wanting to properly configure your firewall.&#xA;&#xA;Neither should you forget to rotate your login password (preferably passphrase) on a regular basis.&#xA;&#xA;On a micro-server of this size (1 GB RAM; 10 GB filesystem; 1 vCPU), you can’t implement TOTP (Timed One-Time Passwords) for multifactor authentication. Anyway, WriteFreely doesn’t support it out-of-the-box in version 0.17.1.&#xA;&#xA;So the reliance on password-only login without MFA can be seen as a weakness.&#xA;&#xA;You could implement multifactor authentication using a self-hosted auth system or an external provider’s service, but then it wouldn’t be internal and autonomous.&#xA;&#xA;However, you can mitigate those shortcomings with Fail2ban and a jail that monitors throttles and generates bans for abusive login attempts. You can easily augment that with region discrimination through GeoIP and a Maxmind database, using location filtering in your web proxy server.&#xA;&#xA;My opinion is that WriteFreely is a very good tool that has actually fueled my creativity. It’s so easy and distraction-free to use. I do enjoy writing with it.&#xA;&#xA;That’s good, because I need to start writing. This is a time in which communication is needed about some burning subjects - important issues relating to our society and its technologies, our natural environment, indeed our very survival.&#xA;&#xA;This is where it’s shields-up time, guys.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>When that day comes, this is where it will be at. A standalone outpost that relies entirely on its own in-server resources can be relatively simple and quite easy to deploy and maintain. What you can use is a lightweight, minimalist blogging software called <em><strong>WriteFreely</strong></em>, running on a <em>Linux</em> server (of course, what else?)</p>

<p>It’s principally a text-only – or at least certainly ‘text-centric’ – tool that can be run comfortably within 1 Gigabyte of memory, and that includes running a mail server to allow post-by-email publishing, as well as all the usual ‘must-have’ services (notably a Web proxy server like <em>Apache</em>, <em>Nginx,</em> or <em>Caddy</em>).</p>

<p>The database that a <em>WriteFreely</em> blogging website needs is provided by a simple and robust <em>SQLite</em> flat-file database. Because the content that the database is storing is text-only, it’s actually quite compact in size and beginner-easy to back up.</p>

<p><em>WriteFreely</em> is running happily on a small 10-Gigabyte filesystem, and just a few Gigabytes of space gives you the possibility of quite a huge library of blog posts.</p>

<p>With even a single virtual CPU, page-serving performance is good, certainly if you’re running a fairly low-traffic blog. A host like that can idle at almost-zero processing level and just 30% memory occupation.</p>

<p>Yet another advantage of a text-only blog is that it consumes much less network bandwidth – it’s efficient and about as green as you can get.</p>

<p>The simplicity of <em>WriteFreely</em>’s post editor interface makes it an absolute boon for focusing and writing without distraction.</p>

<p>It’s likely to be robust and able to withstand any unexpected big demand for pages. That does presume that there’s actually anybody who wants to read the garbage, sorry, content that you publish.</p>

<p>There is also the easy-to-do option of proxying your site through <em>Cloudflare</em> if you are getting hostile dynamic denial-of-service attention.</p>

<p><em>Fail2ban</em> provides some pretty-efficient security and abuse handling, and should be a de facto choice for every <em>Linux</em> self-hoster, in addition to any other protective means you might use.</p>

<p><em>Fail2ban</em> is another one of those great <em>Linux</em> tools that works well while using quite little CPU time.</p>

<p>One wise and simple precaution regarding memory management is to make sure you set up a swapfile, to ensure that application services eating too far into the modest 1 Gigabyte of memory are less likely to cause system errors and logjams.</p>

<p>With 1 Gigabyte of memory, it’s worth devoting 2 Gigabytes of your 10-Gigabyte filesystem to a generously-sized swapfile. It will really increase your server’s resilience when traffic spikes.</p>

<p>And, of course, you’ll be wanting to properly configure your firewall.</p>

<p>Neither should you forget to rotate your login password (preferably passphrase) on a regular basis.</p>

<p>On a micro-server of this size (1 GB RAM; 10 GB filesystem; 1 vCPU), you can’t implement TOTP (Timed One-Time Passwords) for multifactor authentication. Anyway, <em>WriteFreely</em> doesn’t support it out-of-the-box in version 0.17.1.</p>

<p>So the reliance on password-only login without MFA can be seen as a weakness.</p>

<p>You could implement multifactor authentication using a self-hosted <em>auth</em> system or an external provider’s service, but then it wouldn’t be internal and autonomous.</p>

<p>However, you can mitigate those shortcomings with <em>Fail2ban</em> and a jail that monitors throttles and generates bans for abusive login attempts. You can easily augment that with region discrimination through <em>GeoIP</em> and a <em>Maxmind</em> database, using location filtering in your web proxy server.</p>

<p>My opinion is that <em>WriteFreely</em> is a very good tool that has actually fueled my creativity. It’s so easy and distraction-free to use. I do enjoy writing with it.</p>

<p>That’s good, because I need to start writing. This is a time in which communication is needed about some burning subjects – important issues relating to our society and its technologies, our natural environment, indeed our very survival.</p>

<p>This is where it’s shields-up time, guys.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/when-the-orcs-are-without-and-dave-does-shields-up-for-the-last-stand</guid>
      <pubDate>Sat, 08 Aug 2026 18:15:08 +0000</pubDate>
    </item>
    <item>
      <title>Third transmission</title>
      <link>https://log.dave.cafe/third-publishing-test</link>
      <description>&lt;![CDATA[If you can read this, it means that the third test succeeded as well.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you can read this, it means that the third test succeeded as well.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/third-publishing-test</guid>
      <pubDate>Sat, 08 Aug 2026 15:49:14 +0000</pubDate>
    </item>
    <item>
      <title>Second transmission</title>
      <link>https://log.dave.cafe/secondary-publishing-test</link>
      <description>&lt;![CDATA[If you&#39;re reading this, it means the second test succeeded.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>If you&#39;re reading this, it means the second test succeeded.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/secondary-publishing-test</guid>
      <pubDate>Sat, 08 Aug 2026 15:11:41 +0000</pubDate>
    </item>
    <item>
      <title>First transmission</title>
      <link>https://log.dave.cafe/first-transmission</link>
      <description>&lt;![CDATA[Dave’s log is online. This is the first transmission from the last outpost.&#xA;&#xA;--oOo-- End of transmission --oOo--]]&gt;</description>
      <content:encoded><![CDATA[<p>Dave’s log is <strong>online</strong>. This is the first transmission from the <em>last outpost</em>.</p>

<p>—oOo— End of transmission —oOo—</p>
]]></content:encoded>
      <guid>https://log.dave.cafe/first-transmission</guid>
      <pubDate>Sat, 08 Aug 2026 09:05:55 +0000</pubDate>
    </item>
  </channel>
</rss>