<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on ~hedy&#39;s home</title>
        <link>/posts/</link>
        <description>Recent content in Posts on ~hedy&#39;s home</description>
        <ttl>1440</ttl>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <managingEditor>hedy.dev@protonmail.com (hedy)</managingEditor>
        <webMaster>hedy.dev@protonmail.com (hedy)</webMaster>
        <atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
        <item>
            <title>Moved to home.hedy.dev</title>
            <link>/</link>
            <pubDate>Wed, 10 Apr 2024 05:22:46 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/vim-column-editing/</guid>
            <description>Hello! Please update your feed reader to point to home.hedy.dev/posts/index.xml instead. Thank you for subscribing!</description>
        </item>
        <item>
            <title>Setting up syntax highlighting for Hugo</title>
            <link>/posts/hugo-syntax-highlighting/</link>
            <pubDate>Sun, 22 Aug 2021 00:00:00 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/hugo-syntax-highlighting/</guid>
            <description>&lt;p&gt;Hugo uses &lt;a href=&#34;https://github.com/alecthomas/chroma&#34;&gt;chroma&lt;/a&gt; as its syntax
highlighter. All you basically need for having your code highlighted is to let
chroma put the syntax classes in the generated HTML, for the correct language,
and then make sure you have corresponding CSS for those classes.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start by enabling syntax highlighting in your configuration file.&lt;/p&gt;
&lt;p&gt;In your configuration file, &lt;code&gt;config.toml&lt;/code&gt; for example, add these settings so
you can have your code highlighted and have it recognize Fenced Code Blocks for
markdown:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;pygmentsUseClasses&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;pygmentsCodeFences&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next you have to include the styles. There are two ways to go about this, one
is to choose a style from the list of available styles (more on that below),
and the second method is to use your own syntax theme.&lt;/p&gt;
&lt;p&gt;You can have your own CSS styles, but there are &lt;em&gt;a lot&lt;/em&gt; of classes, so if
you&amp;rsquo;re just starting out and want to have it working quickly, you should choose
an existing style.&lt;/p&gt;
&lt;p&gt;Browse the &lt;a href=&#34;https://xyproto.github.io/splash/docs/&#34;&gt;gallery&lt;/a&gt; of available
styles and use that style name to save the CSS file into your &lt;code&gt;assets&lt;/code&gt;
directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p assets/syntax
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo gen chromastyles --style&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;friendly &amp;gt; assets/syntax/main.css
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you&amp;rsquo;d like to use different styles for dark mode and light mode (like me),
then you can change &amp;ldquo;main.css&amp;rdquo; to &amp;ldquo;light.css&amp;rdquo;, and save the dark mode style to
&amp;ldquo;dark.css&amp;rdquo;.  It doesn&amp;rsquo;t matter where you put the file, but just remember to use
that file name with referencing it later.&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t have to put it under the directory &amp;ldquo;syntax&amp;rdquo; too, if you don&amp;rsquo;t want
to.&lt;/p&gt;

&lt;h2 id=&#34;apply-the-styles&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#apply-the-styles&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Apply the styles&lt;/h2&gt;

&lt;p&gt;You have to link to your CSS file that you&amp;rsquo;ve just created in your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;.
There are several ways you can do so.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag and link to the URL of your CSS file, or&lt;/li&gt;
&lt;li&gt;directly put the content of your file into a &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; tag.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here&amp;rsquo;s how you can do the second method.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tmpl&#34; data-lang=&#34;tmpl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;{{- &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxCSS&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; := resources.Get &amp;#34;syntax/main.css&amp;#34; | minify -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;	{{ &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxCSS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; | safeCSS }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Assuming your CSS file is at &lt;code&gt;assets/syntax/main.css&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;All set for the styling part! Now you can write some content and try it out.&lt;/p&gt;
&lt;p&gt;Remember to include the file type when putting code in markdown.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;This is not code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# and this is some sh code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;hi!&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;dark-mode-and-light-mode&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#dark-mode-and-light-mode&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Dark mode and light mode&lt;/h2&gt;

&lt;p&gt;You can have different styles of syntax highlighting for dark mode and light
mode.&lt;/p&gt;
&lt;p&gt;First you have to export or save your CSS for dark mode and light mode in
separate files .  Then, change the part in your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; where you&amp;rsquo;ve included
the styles:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tmpl&#34; data-lang=&#34;tmpl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;{{- &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxlight&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; := resources.Get &amp;#34;syntax/light.css&amp;#34; | minify -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;{{- &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxdark&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; := resources.Get &amp;#34;syntax/dark.css&amp;#34; | minify  -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;	{{ &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxlight&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; | safeCSS }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;	@media (prefers-color-scheme: dark) {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;		{{ &lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;syntaxdark&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;x&#34;&gt; | safeCSS }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This assumes you have your light styles and dark mode styles stored in
&lt;code&gt;assets/syntax/light.css&lt;/code&gt; and &lt;code&gt;assets/syntax/dark.css&lt;/code&gt; respectively.&lt;/p&gt;
&lt;p&gt;Instead of doing the above, you could have just put both in a single file and
include the &lt;code&gt;@media (prefers-color-scheme: dark)&lt;/code&gt; line in there directly, and
this won&amp;rsquo;t require you to change your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; at all. And of course you could
have just used CSS variables and store the theme&amp;rsquo;s colors into different
variables, use &lt;code&gt;var(--variable-name)&lt;/code&gt; for each class in the styles, and finally
have a different set up variable values for &lt;code&gt;@media (prefers-color-scheme: dark) {}&lt;/code&gt;.  But using the method of separating dark and light styles has the
advantage of changing the themes for light or dark mode in the future with the
&lt;code&gt;chroma&lt;/code&gt; command and pipe it to the file directly, without having to edit the
CSS file by hand.&lt;/p&gt;

&lt;h2 id=&#34;applying-syntax-highlight-css-file-only-when-its-needed&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#applying-syntax-highlight-css-file-only-when-its-needed&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Applying syntax highlight CSS file only when it&amp;rsquo;s needed&lt;/h2&gt;

&lt;p&gt;Fetching syntax highlighting theme and putting it in your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; means that
every single page would have the syntax highlighting CSS code in the page,
regardless of whether the page actually uses it. If you&amp;rsquo;d like to only include
the syntax CSS files for pages that needs syntax highlighting, you can use a
page parameter named something like &lt;code&gt;highlight&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how it would work.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set a &lt;code&gt;highlight&lt;/code&gt; param in your global config file that is set to false by default&lt;/li&gt;
&lt;li&gt;For each post or page in your &lt;code&gt;content/&lt;/code&gt; that needs syntax highlighting, include &lt;code&gt;highlight: true&lt;/code&gt;
in the frontmatter (assuming you&amp;rsquo;re using YAML).&lt;/li&gt;
&lt;li&gt;In &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, check whether the page&amp;rsquo;s &lt;code&gt;highlight&lt;/code&gt; param is set to true, and only if it&amp;rsquo;s true, the
CSS resource is loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, include this before fetching the CSS resource, and put
&lt;code&gt;{{ end }}&lt;/code&gt; after &lt;code&gt;&amp;lt;/style&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-tmpl&#34; data-lang=&#34;tmpl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;{{- if .Params.highlight -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;&amp;lt;!--Put the code that fetches your syntax highlight CSS here--&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;x&#34;&gt;{{- end -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This tells hugo to only load the resource and put the CSS in &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; if the page parameter
&lt;code&gt;highlight&lt;/code&gt; is set to true.&lt;/p&gt;

&lt;h2 id=&#34;read-more&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#read-more&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Read more&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/getting-started/configuration-markup#highlight&#34;&gt;Configuration options for syntax highlighting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/content-management/syntax-highlighting/#example-highlight-shortcode&#34;&gt;Highlighting specific lines in code snippets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/content-management/shortcodes/#highlight&#34;&gt;The built-in &lt;code&gt;highlight&lt;/code&gt; shortcode for manual highlighting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
            <title>Managing multiple emails for git across different computers</title>
            <link>/posts/multiple-emails-git/</link>
            <pubDate>Wed, 16 Jun 2021 23:50:00 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/multiple-emails-git/</guid>
            <description>&lt;p&gt;As someone who code on multiple machines to work on different projects, I like to commit with different emails.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know how everyone else handle different emails in .gitconfig &lt;em&gt;and&lt;/em&gt; track dotfiles in a git repo at the same time, but here&amp;rsquo;s the solution I&amp;rsquo;ve come up with.&lt;/p&gt;
&lt;p&gt;First, I have a global ~/.gitconfig with the default user email and some other global settings (by global I mean same cross different computers I work on).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.gitconfig&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[user]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Default Name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;email&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;me@default.email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then for each machine I have a ~/.gitconfig-local file which can override some settings just for that machine, such
as email, signing key, editor, etc.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.gitconfig-local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[user]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;email&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;me@special.email&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Back in the global ~/.gitconfig, I have this snippet that tells git to also look for configuration in my ~/.gitconfig-local:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ~/.gitconfig&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[include]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;~/.gitconfig-local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here, I can have ~/.gitconfig tracked in my dotfiles repo, but I do not have ~/.gitconfig-local tracked. This way, I can put anything I like specific to a particular machine in the ~/.gitconfig-local, as well as SMTP settings such as password, which you wouldn&amp;rsquo;t want to end up in a public git repo.&lt;/p&gt;
&lt;p&gt;As to setting it up on a new machine, I have a setup script in my dotfiles repo that creates an empty ~/.gitconfig-local. I use this same method with fish configs &amp;ndash; global config and a local config, you can have a look at them in my &lt;a href=&#34;https://git.sr.ht/~hedy/dotfiles/&#34;&gt;dotfiles repo&lt;/a&gt; on sourcehut.&lt;/p&gt;
</description>
        </item>
        <item>
            <title>On rants about gemini</title>
            <link>/posts/on-rants-gemini/</link>
            <pubDate>Tue, 15 Jun 2021 00:00:00 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/on-rants-gemini/</guid>
            <description>&lt;p&gt;Recently there&amp;rsquo;ve been some discussions about how Gemini &amp;ldquo;doesn&amp;rsquo;t fix anything&amp;rdquo; on Lobste.rs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lobste.rs/s/vhlagb/why_gemini_is_not_my_favorite_internet&#34;&gt;Why Gemini is Not My Favorite Internet Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lobste.rs/s/3nsvkk/gemini_is_useless&#34;&gt;Gemini is Useless&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As well as a few posts related to that on smol.pub:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;//bentsai.smol.pub/embracing-constraints&#34;&gt;bentsai.smol.pub/embracing-constraints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//mieum.smol.pub/for-the-love-of-gemini&#34;&gt;mieum.smol.pub/for-the-love-of-gemini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think that those comments on Lobsters can be summarized into these main points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We don&amp;rsquo;t need a whole new protocol (and the corresponding new software) just because most of the web is gross&lt;/li&gt;
&lt;li&gt;Gemtext doesn&amp;rsquo;t have tables, text styling, images, and forms. It&amp;rsquo;s too much of a significant price having to pay just to have a simpler document-focused version of the web&lt;/li&gt;
&lt;li&gt;You simply can&amp;rsquo;t replace the web like this&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at each in detail.&lt;/p&gt;

&lt;h2 id=&#34;replacing-the-web&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#replacing-the-web&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Replacing the web&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;[The web is] an organically grown mess of 25 years – but it will never be
replaced by a dead-simple solution such as Gemini.
(&lt;a href=&#34;https://lobste.rs/s/ivryqt/what_is_this_gemini_thing_anyway_why_am_i&#34;&gt;source&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And in response to that as mieum writes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Almost all of these posts are obsessed with the same strawman: some supposed audacity of Gemini to attempt replacing the web. It&amp;rsquo;s hilarious that these authors (and commentors) have such poor reading comprehension.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As clearly as is written at the top on the Gemini homepage, people seem to forget that it neither wants nor tries to replace the web.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gemini is not &amp;ldquo;the fix&amp;rdquo; for the web&amp;rsquo;s problems (or for gopher&amp;rsquo;s for that matter). It is just a habitat, really; a way to inhabit a virtual space with other people. What &lt;em&gt;that&lt;/em&gt; is and means will always be overlooked from the point of view that assumes Gemini &lt;em&gt;must&lt;/em&gt; be all or nothing at all; that it &lt;em&gt;must&lt;/em&gt; be a challenger to the throne.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In my opinion, Gemini is just a virtual space to put your content and read other people&amp;rsquo;s work on. It&amp;rsquo;s not supposed to be &amp;ldquo;oh, the web sucks, let&amp;rsquo;s all just ditch the web switch over to this instead&amp;rdquo;. There are still many wonderful and peaceful things on the web. And if you&amp;rsquo;d prefer scrolling through feeds with personalized ads, or if you prefer super-responsive, sleek, modern web pages that have cute animations, then maybe Gemini might seem dull and that Gemini is not for you. Ultimately, (in the words of mieum) it&amp;rsquo;s a thriving ecosystem, and it doesn&amp;rsquo;t need to be anything more than that.&lt;/p&gt;

&lt;h2 id=&#34;lack-of-functionality-in-comparison-to-html&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#lack-of-functionality-in-comparison-to-html&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Lack of functionality in comparison to HTML&lt;/h2&gt;

&lt;p&gt;In regards to gemtext limitations, we have to keep in mind that Gemini is a protocol. Gemtext is a markup language. You can serve whatever you like on Gemini &amp;ndash; HTML, markdown, etc. And you can also view your HTML content over Gemini with a client that supports HTML. As far as I can tell, most features that gemtext lacks had been discussed in the mailing list before, all of which, I&amp;rsquo;m pretty sure, alternatives or workarounds were suggested. I think this comment by Alex summarises it well:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Everyone wants something added to Gemini but disagrees what that something is. Personally, I think it should be in-line images and footnotes, but if Gemini became more complex, it would lose many of the traits that make it interesting. Gemini is a technology that invites us not to try and improve or optimize it, but to accept it as it is and work around its limitations – it is intentionally austere, and this is a feature, not a bug.
(&lt;a href=&#34;https://lobste.rs/s/3nsvkk/gemini_is_useless#c_1zpxad&#34;&gt;source&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For me, I&amp;rsquo;m fine with not having inline images, footnotes, or maybe even syntax highlighting in preformatted text. But as to tables, yes, that could make it look better, and easier to copy contents, but it would lose its simplicity and ease of developing new software around it. If gemtext was to support a similar type of table syntax as markdown, for example, the table would look extremely broken for clients that do not support it. Unless it is put in a preformatted block, though in which case that wouldn&amp;rsquo;t solve the problem of horizontal scrolling in small screens.&lt;/p&gt;
&lt;p&gt;In regards to inline links, sure, that could clear some clutter by removing the &amp;ldquo;[1]&amp;rdquo;, but support for this could lead to escaping characters in the syntax, and then escaping the characters that escape the characters, which adds layer upon layer of complexities, again, losing its simplicity.&lt;/p&gt;
&lt;p&gt;For me personally, if gemtext supported tables, inline links, and maybe &amp;ldquo;&amp;mdash;&amp;rdquo; dividers, it &lt;em&gt;would&lt;/em&gt; make my life a tiny bit easier when creating content, (though not necessarily when developing my own client). But it&amp;rsquo;s not like you can&amp;rsquo;t do &lt;em&gt;anything&lt;/em&gt; with gemtext. You&amp;rsquo;d just have to get used to it. Gemini strictly separates the roles of content and presentation, the author provides the content and the client can control the presentation in whatever style it likes.&lt;/p&gt;

&lt;h2 id=&#34;do-we-need-a-whole-new-protocol&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#do-we-need-a-whole-new-protocol&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Do we need a whole new protocol?&lt;/h2&gt;

&lt;p&gt;For me personally, I like fresh starts. So sure, a new protocol, new ways to think about the internet, and some getting used to is a great idea. It might be a pain for some to set up mirrors of their web content, but it&amp;rsquo;s the experience and room to explore endless possibilities on a new medium that matters. Since you need new software, it&amp;rsquo;s a perfect opportunity to learn a new language and get your own stuff out there. It&amp;rsquo;s just the beginning, so there aren&amp;rsquo;t many &amp;ldquo;rulers&amp;rdquo; in this space, as opposed to the web with popular browsers like chrome.&lt;/p&gt;
&lt;p&gt;At the end of the day, the fact that I create and browse content in Geminispace every now and then does not mean I&amp;rsquo;ve decided to not use the web at all, nor does it mean that all of the good content is in Geminispace instead of the web. Like mozz said on Station:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;m not here because I hate the web, I&amp;rsquo;m here because I like Gemini.
(&lt;a href=&#34;gemini://station.martinrue.com/mozz/d29f6cf900b04aef9e7a2332c2098f13&#34;&gt;source&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You don&amp;rsquo;t have to ditch the web to use Gemini. You get to choose what you write about, but you don&amp;rsquo;t get to choose the color of your headers, or the font size of your body paragraphs. You are free to use the web if you want that.&lt;/p&gt;

&lt;h2 id=&#34;full-list-of-references&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#full-list-of-references&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Full list of references&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lobste.rs/s/vhlagb/why_gemini_is_not_my_favorite_internet&#34;&gt;Why Gemini is Not My Favorite Internet Protocol (Lobste.rs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lobste.rs/s/3nsvkk/gemini_is_useless&#34;&gt;Gemini is Useless (Lobste.rs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=27490769&#34;&gt;Gemini is Useless (HN)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//bentsai.smol.pub/embracing-constraints&#34;&gt;bentsai.smol.pub/embracing-constraints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;//mieum.smol.pub/for-the-love-of-gemini&#34;&gt;mieum.smol.pub/for-the-love-of-gemini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lobste.rs/s/ivryqt/what_is_this_gemini_thing_anyway_why_am_i&#34;&gt;What is this Gemini thing anyway, and why am I excited about it?  (Lobste.rs)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://proxy.flounder.online/station.martinrue.com/mozz/d29f6cf900b04aef9e7a2332c2098f13&#34;&gt;mozz&amp;rsquo;s message posted on Station (via Gemini to HTTP Proxy)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thomask.sdf.org/blog/2021/06/12/beyond-gemini.html&#34;&gt;Beyond Gemini? (In response to &amp;ldquo;Why Gemini is not my favourite internet protocol&amp;rdquo;)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
            <title>How this site works</title>
            <link>/posts/site-meta/</link>
            <pubDate>Tue, 23 Feb 2021 00:00:00 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/site-meta/</guid>
            <description>&lt;details open&gt;
&lt;summary&gt;2023 Update&lt;/summary&gt;
&lt;p&gt;I started writing this post on 2021, February 23 but I never completed it. So in
2023 I decided to finish up this outstanding post and get it done with.
Surprisingly, the content did not change much other than moving from ~team to
~cafe (more on that later). I still use Hugo and write in Markdown. And I still
publish to both WWW and Gemini.&lt;/p&gt;
&lt;p&gt;Excuse the odd placing of this post, but otherwise, enjoy the read~&lt;/p&gt;
&lt;/details&gt;
&lt;details open&gt;
&lt;summary&gt;2024 March Update&lt;/summary&gt;
&lt;p&gt;I no longer host my website, gemini capsule and spartan content on tilde.cafe.
As of writing, I&amp;rsquo;ve switched to srht.site for static HTTPS/gemini hosting with
my own domain at home.hedy.dev.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m keeping this post (which as it turns out, I still never got to publish) as
a historical record, whose information, other than the aforementioned
differences, remains mostly accurate.&lt;/p&gt;
&lt;/details&gt;
&lt;br&gt;
&lt;p&gt;This is where my gemlog/blog lives. It is statically generated
with &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; and rsync-ed to my &lt;code&gt;public_html&lt;/code&gt; and &lt;code&gt;public_gemini&lt;/code&gt;
directories for HTML and gemini on &lt;a href=&#34;tilde.cafe&#34;&gt;tilde.cafe&lt;/a&gt; respectively on build.&lt;/p&gt;
&lt;p&gt;The site source is always linked at the footer, pointing to the &lt;a href=&#34;https://sr.ht/~hedy/site&#34;&gt;sourcehut
repo&lt;/a&gt; though the repo is also mirrored on
&lt;a href=&#34;https://github.com/hedyhli/site&#34;&gt;github&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;tildecafe-and-the-tildeverse&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#tildecafe-and-the-tildeverse&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  tilde.cafe and the Tildeverse&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;[The &lt;a href=&#34;https://tildeverse.org&#34;&gt;Tildeverse&lt;/a&gt; is] a loose association of
like-minded tilde communities. &lt;em&gt;Tildes&lt;/em&gt; are pubnixes in the spirit of
&lt;a href=&#34;https://tilde.club/&#34;&gt;tilde.club&lt;/a&gt;, which was &lt;a href=&#34;https://medium.com/message/tilde-club-i-had-a-couple-drinks-and-woke-up-with-1-000-nerds-a8904f0a2ebf&#34;&gt;created in 2014 by Paul
Ford&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A &lt;strong&gt;Pubnix&lt;/strong&gt; is a Public Access Unix System — in other words, a unix machine on
the internet that provides access to other people on the internet — which
started before WWW and even the public internet. Pubnixes you may have heard of
&lt;a href=&#34;https://sdf.org&#34;&gt;SDF&lt;/a&gt;, &lt;a href=&#34;https://circumlunar.space/&#34;&gt;Circumlunar.Space&lt;/a&gt; (yes,
the very same one of the &lt;a href=&#34;https://gemini.circumlunar.space&#34;&gt;gemini homepage&lt;/a&gt;),
and &lt;a href=&#34;https://tilde.club&#34;&gt;tilde.club&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://tilde.team/~cmccabe/&#34;&gt;~cmccabe&lt;/a&gt; has a &lt;a href=&#34;https://gopher.mills.io/rawtext.club/1/~cmccabe/pubnixhist/&#34;&gt;Pubnix History
Project&lt;/a&gt; for you to
explore if you&amp;rsquo;re interested in learning more about pubnixes.&lt;/p&gt;
&lt;p&gt;There are a lot of pubnixes that have joined the Tildeverse since the the ~club
and &lt;a href=&#34;https://tilde.team&#34;&gt;~team&lt;/a&gt; (which hosts the tildeverse website together
with many services).&lt;/p&gt;
&lt;p&gt;Most tildes have open registerations. Users are provided around 1 GB of disk
space along with SSH access and are able to host their own static site with CGI
under the main tilde domain, together with services like email, gemini/gopher
hosting, pastbin, and more.&lt;/p&gt;
&lt;p&gt;However, the true value of tildes lie not in the services they provide but the
people and community. The tildeverse has an official IRC network, tilde.chat,
which most tildes use for their main channel of communication. They also have a
&lt;a href=&#34;https://tilderadio.org&#34;&gt;radio&lt;/a&gt;, a &lt;a href=&#34;https://tilde.zone&#34;&gt;mastodon instance&lt;/a&gt;,
&lt;a href=&#34;https://tildegit.org&#34;&gt;gitea instance&lt;/a&gt;, among other services. The latter two
from the above are both hosted by &lt;a href=&#34;https://ben.tilde.team&#34;&gt;~ben&lt;/a&gt; the owner of
~team.&lt;/p&gt;
&lt;p&gt;I chose to host my personal website on tilde.cafe, a (relatively) newer tilde
that runs on Debian with a smaller user base, and for the past two years most
coding projects I had done were developed on ~Cafe&amp;rsquo;s server. It&amp;rsquo;s grown to
become my second digital home on the internet ever since I started to use hedy
at tilde.cafe for my primary email.&lt;/p&gt;
&lt;p&gt;It was fun to work with ~cafe admins &lt;a href=&#34;https://tilde.cafe/~spider/&#34;&gt;~spider&lt;/a&gt; and
&lt;a href=&#34;https://tilde.cafe/~jan6&#34;&gt;~jan6&lt;/a&gt; in the early days, helping to set up and write
the &lt;a href=&#34;https://tilde.cafe/wiki/&#34;&gt;wiki&lt;/a&gt; and automated website builds. We used the
#cafe channel on tilde.chat for our main chat.&lt;/p&gt;
&lt;p&gt;Some time in 2021 or 2022, jan6 is no longer able to chat with us on #cafe in
tilde.chat, and since spider became busy with work and other areas of life, we
needed one more admin to take care of user support on tilde.cafe. I was
promoted to join spider and jan6 as sudoers and have been helping with signups
and sysadmin&amp;rsquo;ing since then.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t plan to move off ~cafe to host my personal website, nor email in the
foreseable future. Though when I have side-projects that required dedicated
servers with subdomains, I will consider using my own server and domain. Until
then, I remain eternally grateful to ~cafe and other tilde-owners for
maintaining awesome communities and providing welcoming spaces online for
strangers to come together and build cool stuff, with money from the admin&amp;rsquo;s own
pockets.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re someone who is recently discovering the tildeverse I highly recommend
&lt;a href=&#34;https://rawtext.club&#34;&gt;rawtext.club&lt;/a&gt; (though not a &amp;ldquo;tilde&amp;rdquo; but a very cool
community of extremely interesting people), &lt;a href=&#34;https://tilde.team&#34;&gt;~team&lt;/a&gt; (they
have a welcoming chat — #team — easily second most active channel on
tilde.chat), &lt;a href=&#34;https://envs.net&#34;&gt;~envs&lt;/a&gt; (they have an &lt;a href=&#34;https://pleroma.envs.net&#34;&gt;Akkoma
instance&lt;/a&gt;, used by Rohan Kumar from
&lt;a href=&#34;https://seirdy.one&#34;&gt;seirdy.one&lt;/a&gt; whose articles you may have come across on the
internet), and of course &lt;a href=&#34;https://tilde.cafe&#34;&gt;~cafe&lt;/a&gt; (drop me an
email if you registered after reading this and I&amp;rsquo;ll make sure to personally
approve your sign-up ;P). Others may not agree on my choices so this is not at
all to downplay the worth of &lt;a href=&#34;https://tildeverse.org/members/&#34;&gt;other tildes&lt;/a&gt;:
there&amp;rsquo;s almost no harm in having an account on every single one, though you can
definitely meet some cool people!&lt;/p&gt;

&lt;h2 id=&#34;software-stack--workflows&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#software-stack--workflows&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Software stack &amp;amp; workflows&lt;/h2&gt;

&lt;p&gt;No javascript is used. All content is written in Markdown and Gemtext, with the
static HTMl output generated by Hugo. The styling is done with vanilla CSS,
&lt;a href=&#34;https://home.hedy.dev/posts/hugo-syntax-highlighting/&#34;&gt;syntax highlighting&lt;/a&gt; provided by chroma.&lt;/p&gt;
&lt;p&gt;When a new blog post is written, I would ensure both markdown and gemtext
sources are done, then I would run &lt;code&gt;make&lt;/code&gt; which uses Hugo and does some
miscellaneous cleaning-up to produce HTMl files at &lt;code&gt;~/public_html&lt;/code&gt; and gemtext
at &lt;code&gt;~/public_gemini&lt;/code&gt;. I then use a browser to access the folder locally to check
that everything is working. When something needs updating, a single &lt;code&gt;make&lt;/code&gt; is
enough to rebuild the entire site.&lt;/p&gt;
&lt;p&gt;Finally, I commit and push. If I wasn&amp;rsquo;t working on ~cafe directly I would next
log into ~cafe, pull, and &lt;code&gt;make&lt;/code&gt; from there. It&amp;rsquo;s guaranteed to perform the same
from my home computer and on ~cafe given the same Hugo versions.&lt;/p&gt;
&lt;p&gt;Since I ran &lt;code&gt;make&lt;/code&gt; on ~cafe, the actual &lt;code&gt;~/public_*&lt;/code&gt; directories will be updated
on the changes would be live! 🎉&lt;/p&gt;
&lt;p&gt;~cafe web server handles the rest. (FTR: on WWW we use nginx and on Gemini we
use Gemserv.)&lt;/p&gt;

&lt;h2 id=&#34;hosting&#34;&gt;
  &lt;a class=&#34;anchor&#34; href=&#34;#hosting&#34; rel=&#34;nofollow&#34;&gt;#&lt;/a&gt;
  Hosting&lt;/h2&gt;

&lt;p&gt;The site and gemini capsule is to be accessed at &lt;code&gt;hedy.tilde.cafe&lt;/code&gt;; it works on
both protocols. You may be curious how we could have per-user vhosts on gemini —
no, there is no built-in configuration option as of writing. This is done with a
shell script that appends to config file a separate server configuration when a
new user sign-up is approved, written by jan6.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;&amp;lt;user&amp;gt;.tilde.cafe&lt;/code&gt; vhost is also supported on
&lt;a href=&#34;https://portal.mozz.us/gemini/spartan.mozz.us&#34;&gt;spartan&lt;/a&gt;. I wrote the spartan
server that cafe uses (&lt;a href=&#34;https://github.com/hedyhli/spsrv&#34;&gt;spsrv&lt;/a&gt;) and it
provides a config option to use per-user vhosts.&lt;/p&gt;
</description>
        </item>
        <item>
            <title>Hello world</title>
            <link>/posts/hello/</link>
            <pubDate>Fri, 05 Feb 2021 01:44:15 +0000</pubDate>
            <author>hedy.dev@protonmail.com (hedy)</author>
            <guid>/posts/hello/</guid>
            <description>&lt;p&gt;Hello hugo&lt;/p&gt;
&lt;p&gt;hope it works!&lt;/p&gt;
</description>
        </item>
    </channel>
</rss>
