<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>blog.dennis.io - rust</title>
    <subtitle>Notes on software, self-hosting and whatever else Dennis is tinkering with.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://blog.dennis.io/tags/rust/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://blog.dennis.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-12T00:00:00+00:00</updated>
    <id>https://blog.dennis.io/tags/rust/atom.xml</id>
    <entry xml:lang="en">
        <title>Hello, world: how this blog is built</title>
        <published>2026-10-01T00:00:00+00:00</published>
        <updated>2026-10-12T00:00:00+00:00</updated>
        
        <author>
          <name>Dennis Sänger</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://blog.dennis.io/posts/hello-world/"/>
        <id>https://blog.dennis.io/posts/hello-world/</id>
        
        <content type="html" xml:base="https://blog.dennis.io/posts/hello-world/">&lt;p&gt;This blog is a static site built with &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org&quot;&gt;Zola&lt;/a&gt;. This first post doubles as a test page: it uses every element the theme has to style.&lt;/p&gt;
&lt;h2 id=&quot;why-a-static-site&quot;&gt;Why a static site&lt;a class=&quot;heading-anchor&quot; href=&quot;#why-a-static-site&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A static site is a folder of files. Any web server can serve it, it has no database to patch, and it loads fast.
I&#39;m working with JS/SPA every day in my job and know the complexity very well and enjoy to not have to fiddle with JS on my own private blog.&lt;/p&gt;
&lt;h3 id=&quot;what-zola-brings&quot;&gt;What Zola brings&lt;a class=&quot;heading-anchor&quot; href=&quot;#what-zola-brings&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Zola is a single binary with templates, Sass, search indexes and feeds built in. There is no &lt;code&gt;node_modules&lt;/code&gt; folder in sight.&lt;/p&gt;
&lt;h2 id=&quot;deployment&quot;&gt;Deployment&lt;a class=&quot;heading-anchor&quot; href=&quot;#deployment&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The source of this blog lifes in a github repo and is served by github pages with a custom domain. Every push to &lt;code&gt;main&lt;/code&gt; of this github repo triggers a github action that - on success - publishes a new version of this blog.&lt;/p&gt;
&lt;h2 id=&quot;code&quot;&gt;Code&lt;a class=&quot;heading-anchor&quot; href=&quot;#code&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here is some Rust, to check the highlighting colors:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;use&lt;/span&gt;&lt;span&gt; std::collections::&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;HashMap&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-1 z-i&quot;&gt;/// Counts how often each word appears.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; word_counts&lt;/span&gt;&lt;span&gt;(text: &amp;amp;&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;str&lt;/span&gt;&lt;span&gt;) -&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; HashMap&lt;/span&gt;&lt;span&gt;&amp;lt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;str&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; usize&lt;/span&gt;&lt;span&gt;&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;    let mut&lt;/span&gt;&lt;span&gt; counts =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; HashMap&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;new&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;    for&lt;/span&gt;&lt;span&gt; word&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt; in&lt;/span&gt;&lt;span&gt; text.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;split_whitespace&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        *counts.&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;entry&lt;/span&gt;&lt;span&gt;(word).&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt;or_insert&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt;0&lt;/span&gt;&lt;span&gt;) +=&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    counts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-2&quot;&gt;    let&lt;/span&gt;&lt;span&gt; counts =&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; word_counts&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt;&amp;quot;the quick brown fox jumps over the lazy dog&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;    println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt;&amp;quot;&amp;#39;the&amp;#39; appears &lt;/span&gt;&lt;span&gt;{}&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt; times&amp;quot;&lt;/span&gt;&lt;span&gt;, counts[&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt;&amp;quot;the&amp;quot;&lt;/span&gt;&lt;span&gt;]);&lt;/span&gt;&lt;span class=&quot;z-1 z-i&quot;&gt; // 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And a shell session with a deliberately long line that has to scroll inside its box on small screens:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt; build&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; python3&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -m&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt; http.server&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; --directory&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt; public&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; 8000&lt;/span&gt;&lt;span class=&quot;z-1 z-i&quot;&gt; # then open http://localhost:8000/ and check that every page, feed and search result loads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;theme&quot;&gt;Theme&lt;a class=&quot;heading-anchor&quot; href=&quot;#theme&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The blog uses a custom theme (&lt;code&gt;astro-kip&lt;/code&gt;) that built claude based on my design-system. It will be fine-tuned over time and published separately on my github.&lt;/p&gt;
&lt;h2 id=&quot;everything-else&quot;&gt;Everything else&lt;a class=&quot;heading-anchor&quot; href=&quot;#everything-else&quot; aria-label=&quot;Link to this section&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A list item with &lt;code&gt;inline code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A second item with a &lt;a href=&quot;https://blog.dennis.io/about/&quot;&gt;link to the About page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;A blockquote, for the occasional quote worth highlighting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Element&lt;/th&gt;&lt;th&gt;Styled&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Tables&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Images&lt;/td&gt;&lt;td&gt;later&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;That&#39;s it for now.&lt;/p&gt;
</content>
        
    </entry>
</feed>
