<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>blog &amp;mdash; Arjen Wiersma</title>
    <link>https://www.arjenwiersma.nl/tag:blog</link>
    <description>A blog on Emacs, self-hosting, programming and other nerdy things</description>
    <pubDate>Thu, 07 May 2026 15:27:45 +0000</pubDate>
    <item>
      <title>Styling Writefreely</title>
      <link>https://www.arjenwiersma.nl/styling-writefreely</link>
      <description>&lt;![CDATA[I like my modus themes for Emacs, and I thought it would be fun to bring them to my writefreely blog as well. &#xA;&#xA;Below is the CSS you can drop in your Customize, it will automatically switch between light and dark variants.&#xA;&#xA;/ =====================&#xA;   WriteFreely Modus Theme&#xA;   Auto light/dark via prefers-color-scheme&#xA;   ===================== /&#xA;&#xA;/ Modus Operandi (Light) — default /&#xA;:root {&#xA;  --bg:          #ffffff;&#xA;  --bg-alt:      #f2f2f2;&#xA;  --surface:     #e8e8e8;&#xA;  --border:      #c6c6c6;&#xA;  --text:        #000000;&#xA;  --text-muted:  #595959;&#xA;  --text-faint:  #8a8a8a;&#xA;  --accent:      #8f0075;   / Modus magenta /&#xA;  --accent-dim:  #c04fa8;&#xA;  --link:        #0031a9;   / Modus blue /&#xA;  --link-hover:  #003497;&#xA;  --code-fg:     #005e00;   / Modus green for code /&#xA;}&#xA;&#xA;/ Modus Vivendi (Dark) — activated by OS dark mode /&#xA;@media (prefers-color-scheme: dark) {&#xA;  :root {&#xA;    --bg:          #000000;&#xA;    --bg-alt:      #1e1e1e;&#xA;    --surface:     #2a2a2a;&#xA;    --border:      #444444;&#xA;    --text:        #ffffff;&#xA;    --text-muted:  #ababab;&#xA;    --text-faint:  #6a6a6a;&#xA;    --accent:      #feacd0;   / Modus Vivendi magenta /&#xA;    --accent-dim:  #a04080;&#xA;    --link:        #79a8ff;   / Modus Vivendi blue /&#xA;    --link-hover:  #a8c7ff;&#xA;    --code-fg:     #44bc44;   / Modus Vivendi green /&#xA;  }&#xA;}&#xA;&#xA;/ Base /&#xA;body {&#xA;  background-color: var(--bg);&#xA;  color: var(--text);&#xA;  font-family: Georgia, serif;&#xA;  font-size: 18px;&#xA;}&#xA;&#xA;/ Navigation / Header /&#xA;header, nav#blog-title {&#xA;  background-color: var(--bg);&#xA;  border-bottom: 1px solid var(--border);&#xA;}&#xA;&#xA;header nav a,&#xA;nav#blog-title a {&#xA;  color: var(--text-muted);&#xA;  text-decoration: none;&#xA;  letter-spacing: 0.04em;&#xA;  font-size: 0.85rem;&#xA;  text-transform: uppercase;&#xA;}&#xA;&#xA;header nav a:hover,&#xA;nav#blog-title a:hover {&#xA;  color: var(--accent);&#xA;}&#xA;&#xA;/ Main content area /&#xA;section, #wrapper, #collection {&#xA;  max-width: 900px !important;&#xA;  margin: 0 auto;&#xA;  padding: 2rem 1.5rem;&#xA;}&#xA;&#xA;/ Post / Article /&#xA;article, .post {&#xA;  background: transparent;&#xA;  max-width: 900px !important;&#xA;}&#xA;&#xA;article {&#xA;  background: transparent;&#xA;  max-width: 900px !important;&#xA;}&#xA;&#xA;/ Headings /&#xA;h1, h2, h3, h4, h5, h6 {&#xA;  color: var(--text) !important;&#xA;  font-family: Georgia, serif !important;&#xA;  font-weight: 700 !important;&#xA;  line-height: 1.3 !important;&#xA;  padding-top: 1em;&#xA;}&#xA;&#xA;h1.post-title a,&#xA;h2.post-title a,&#xA;h1 a, h2 a, h3 a {&#xA;  color: var(--text) !important;&#xA;}&#xA;&#xA;h1.post-title a:hover,&#xA;h2.post-title a:hover,&#xA;h1 a:hover, h2 a:hover, h3 a:hover {&#xA;  color: var(--accent) !important;&#xA;}&#xA;&#xA;/ Links /&#xA;a {&#xA;  color: var(--link);&#xA;  text-decoration: underline;&#xA;  text-decoration-color: var(--accent-dim);&#xA;  text-underline-offset: 3px;&#xA;  transition: color 0.15s ease;&#xA;}&#xA;&#xA;a:hover {&#xA;  color: var(--link-hover);&#xA;  text-decoration-color: var(--link-hover);&#xA;}&#xA;&#xA;/ Paragraphs /&#xA;p {&#xA;  color: var(--text) !important;&#xA;  text-align: justify;&#xA;  text-justify: inter-word;&#xA;  hyphens: auto;&#xA;}&#xA;&#xA;.description {&#xA;  color: var(--text) !important;&#xA;  text-align: center;&#xA;}&#xA;&#xA;/ Blockquote /&#xA;blockquote {&#xA;  border-left: 3px solid var(--accent-dim);&#xA;  margin: 1.5em 0;&#xA;  padding: 0.5em 1.5em;&#xA;  color: var(--text-muted);&#xA;  font-style: italic;&#xA;  background: var(--bg-alt);&#xA;}&#xA;&#xA;/ Code /&#xA;code {&#xA;  font-family: &#39;Courier New&#39;, monospace !important;&#xA;  font-size: 0.85em !important;&#xA;  background: var(--surface) !important;&#xA;  color: var(--code-fg) !important;&#xA;  border: 0px !important;&#xA;  padding: 0.15em 0.4em !important;&#xA;}&#xA;&#xA;pre {&#xA;  background: var(--surface) !important;&#xA;  padding: 1.2em 1.5em !important;&#xA;  overflow-x: auto !important;&#xA;}&#xA;&#xA;pre code {&#xA;  background: transparent !important;&#xA;  padding: 0 !important;&#xA;  font-size: 0.9em !important;&#xA;  color: var(--code-fg) !important;&#xA;}&#xA;&#xA;.post pre, .post code,&#xA;article pre, article code,&#xA;#post pre, #post code {&#xA;  background: var(--surface) !important;&#xA;  color: var(--code-fg) !important;&#xA;}&#xA;&#xA;/ Horizontal rule /&#xA;hr {&#xA;  border: none;&#xA;  border-top: 1px solid var(--border);&#xA;}&#xA;&#xA;/ Post metadata / date /&#xA;.post-meta, time, .date {&#xA;  color: var(--text-faint);&#xA;  font-size: 0.82rem;&#xA;  letter-spacing: 0.05em;&#xA;  text-transform: uppercase;&#xA;}&#xA;&#xA;/ Post list (index page) /&#xA;.post-listing, #collection .posts {&#xA;  list-style: none;&#xA;  padding: 0;&#xA;}&#xA;&#xA;.post-listing li, .post-list-item {&#xA;  border-bottom: 1px solid var(--border);&#xA;  padding: 1.2em 0;&#xA;}&#xA;&#xA;/ Footer /&#xA;footer {&#xA;  border-top: 1px solid var(--border);&#xA;  color: var(--text-faint);&#xA;  font-size: 0.82rem;&#xA;  padding: 2rem 0;&#xA;  text-align: center;&#xA;}&#xA;&#xA;footer a {&#xA;  color: var(--text-muted);&#xA;}&#xA;&#xA;/ Read more link /&#xA;.read-more {&#xA;  color: var(--accent);&#xA;  font-size: 0.875rem;&#xA;  text-decoration: none;&#xA;  letter-spacing: 0.03em;&#xA;}&#xA;&#xA;.read-more:hover {&#xA;  color: var(--link-hover);&#xA;}&#xA;&#xA;/ Images /&#xA;img {&#xA;  max-width: 100%;&#xA;  height: auto;&#xA;  border-radius: 3px;&#xA;}&#xA;&#xA;/ Selection /&#xA;::selection {&#xA;  background: var(--accent-dim);&#xA;  color: #ffffff;&#xA;}&#xA;&#xA;/ Scrollbar (Webkit) /&#xA;::-webkit-scrollbar {&#xA;  width: 8px;&#xA;}&#xA;::-webkit-scrollbar-track {&#xA;  background: var(--bg);&#xA;}&#xA;::-webkit-scrollbar-thumb {&#xA;  background: var(--border);&#xA;  border-radius: 4px;&#xA;}&#xA;::-webkit-scrollbar-thumb:hover {&#xA;  background: var(--text-faint);&#xA;}&#xA;`]]&gt;</description>
      <content:encoded><![CDATA[<p>I like my modus themes for Emacs, and I thought it would be fun to bring them to my writefreely blog as well.</p>

<p>Below is the CSS you can drop in your <em>Customize</em>, it will automatically switch between light and dark variants.</p>

<pre><code class="language-css">/* =====================
   WriteFreely Modus Theme
   Auto light/dark via prefers-color-scheme
   ===================== */

/* Modus Operandi (Light) — default */
:root {
  --bg:          #ffffff;
  --bg-alt:      #f2f2f2;
  --surface:     #e8e8e8;
  --border:      #c6c6c6;
  --text:        #000000;
  --text-muted:  #595959;
  --text-faint:  #8a8a8a;
  --accent:      #8f0075;   /* Modus magenta */
  --accent-dim:  #c04fa8;
  --link:        #0031a9;   /* Modus blue */
  --link-hover:  #003497;
  --code-fg:     #005e00;   /* Modus green for code */
}

/* Modus Vivendi (Dark) — activated by OS dark mode */
@media (prefers-color-scheme: dark) {
  :root {
    --bg:          #000000;
    --bg-alt:      #1e1e1e;
    --surface:     #2a2a2a;
    --border:      #444444;
    --text:        #ffffff;
    --text-muted:  #ababab;
    --text-faint:  #6a6a6a;
    --accent:      #feacd0;   /* Modus Vivendi magenta */
    --accent-dim:  #a04080;
    --link:        #79a8ff;   /* Modus Vivendi blue */
    --link-hover:  #a8c7ff;
    --code-fg:     #44bc44;   /* Modus Vivendi green */
  }
}

/* Base */
body {
  background-color: var(--bg);
  color: var(--text);
  font-family: Georgia, serif;
  font-size: 18px;
}

/* Navigation / Header */
header, nav#blog-title {
  background-color: var(--bg);
  border-bottom: 1px solid var(--border);
}

header nav a,
nav#blog-title a {
  color: var(--text-muted);
  text-decoration: none;
  letter-spacing: 0.04em;
  font-size: 0.85rem;
  text-transform: uppercase;
}

header nav a:hover,
nav#blog-title a:hover {
  color: var(--accent);
}

/* Main content area */
section, #wrapper, #collection {
  max-width: 900px !important;
  margin: 0 auto;
  padding: 2rem 1.5rem;
}

/* Post / Article */
article, .post {
  background: transparent;
  max-width: 900px !important;
}

article {
  background: transparent;
  max-width: 900px !important;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
  color: var(--text) !important;
  font-family: Georgia, serif !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
  padding-top: 1em;
}

h1.post-title a,
h2.post-title a,
h1 a, h2 a, h3 a {
  color: var(--text) !important;
}

h1.post-title a:hover,
h2.post-title a:hover,
h1 a:hover, h2 a:hover, h3 a:hover {
  color: var(--accent) !important;
}

/* Links */
a {
  color: var(--link);
  text-decoration: underline;
  text-decoration-color: var(--accent-dim);
  text-underline-offset: 3px;
  transition: color 0.15s ease;
}

a:hover {
  color: var(--link-hover);
  text-decoration-color: var(--link-hover);
}

/* Paragraphs */
p {
  color: var(--text) !important;
  text-align: justify;
  text-justify: inter-word;
  hyphens: auto;
}

.description {
  color: var(--text) !important;
  text-align: center;
}

/* Blockquote */
blockquote {
  border-left: 3px solid var(--accent-dim);
  margin: 1.5em 0;
  padding: 0.5em 1.5em;
  color: var(--text-muted);
  font-style: italic;
  background: var(--bg-alt);
}

/* Code */
code {
  font-family: &#39;Courier New&#39;, monospace !important;
  font-size: 0.85em !important;
  background: var(--surface) !important;
  color: var(--code-fg) !important;
  border: 0px !important;
  padding: 0.15em 0.4em !important;
}

pre {
  background: var(--surface) !important;
  padding: 1.2em 1.5em !important;
  overflow-x: auto !important;
}

pre code {
  background: transparent !important;
  padding: 0 !important;
  font-size: 0.9em !important;
  color: var(--code-fg) !important;
}

.post pre, .post code,
article pre, article code,
#post pre, #post code {
  background: var(--surface) !important;
  color: var(--code-fg) !important;
}

/* Horizontal rule */
hr {
  border: none;
  border-top: 1px solid var(--border);
}

/* Post metadata / date */
.post-meta, time, .date {
  color: var(--text-faint);
  font-size: 0.82rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* Post list (index page) */
.post-listing, #collection .posts {
  list-style: none;
  padding: 0;
}

.post-listing li, .post-list-item {
  border-bottom: 1px solid var(--border);
  padding: 1.2em 0;
}

/* Footer */
footer {
  border-top: 1px solid var(--border);
  color: var(--text-faint);
  font-size: 0.82rem;
  padding: 2rem 0;
  text-align: center;
}

footer a {
  color: var(--text-muted);
}

/* Read more link */
.read-more {
  color: var(--accent);
  font-size: 0.875rem;
  text-decoration: none;
  letter-spacing: 0.03em;
}

.read-more:hover {
  color: var(--link-hover);
}

/* Images */
img {
  max-width: 100%;
  height: auto;
  border-radius: 3px;
}

/* Selection */
::selection {
  background: var(--accent-dim);
  color: #ffffff;
}

/* Scrollbar (Webkit) */
::-webkit-scrollbar {
  width: 8px;
}
::-webkit-scrollbar-track {
  background: var(--bg);
}
::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--text-faint);
}
</code></pre>
]]></content:encoded>
      <guid>https://www.arjenwiersma.nl/styling-writefreely</guid>
      <pubDate>Mon, 09 Mar 2026 15:12:55 +0000</pubDate>
    </item>
    <item>
      <title>A New Theme</title>
      <link>https://www.arjenwiersma.nl/a-new-theme</link>
      <description>&lt;![CDATA[&#xA;So, a new year, a new theme! I switched my blog to use the Today I Learned Theme. This theme has a great feature where it also maintains a collection of notes and shows a graph with related notes. This is very similar to how I use org-roam.&#xA;&#xA;I will not be transferring all my notes over, but I thought it would be a very nice feature to share some of my notes with you. This year I am focussing on {{ backlink &#34;choose-your-tools&#34; &#34;Clojure&#34;}} and {{ backlink &#34;rust&#34; &#34;Rust&#34;}}, and as a result I will be posting my notes on the new things I learn.&#xA;&#xA;I set myself a goal of creating a &#34;self hosted comic book collection tool&#34;. It should be very nice to create this using the insights from {{ backlink &#34;zero2prod&#34; &#34;Zero 2 Production&#34;}}. My blog will be a sort of development log along the way. &#xA;&#xA;blog]]&gt;</description>
      <content:encoded><![CDATA[<p>So, a new year, a new theme! I switched my blog to use the <a href="https://github.com/michenriksen/hugo-theme-til">Today I Learned Theme</a>. This theme has a great feature where it also maintains a collection of notes and shows a graph with related notes. This is very similar to how I use org-roam.</p>

<p>I will not be transferring all my notes over, but I thought it would be a very nice feature to share some of my notes with you. This year I am focussing on {{&lt; backlink “choose-your-tools” “Clojure”&gt;}} and {{&lt; backlink “rust” “Rust”&gt;}}, and as a result I will be posting my notes on the new things I learn.</p>

<p>I set myself a goal of creating a “self hosted comic book collection tool”. It should be very nice to create this using the insights from {{&lt; backlink “zero2prod” “Zero 2 Production”&gt;}}. My blog will be a sort of development log along the way.</p>

<p><a href="https://www.arjenwiersma.nl/tag:blog" class="hashtag"><span>#</span><span class="p-category">blog</span></a></p>
]]></content:encoded>
      <guid>https://www.arjenwiersma.nl/a-new-theme</guid>
      <pubDate>Sun, 05 Jan 2025 22:17:16 +0000</pubDate>
    </item>
  </channel>
</rss>