<?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 Martin Fischer</title>
    <link>https://push-f.com/posts/</link>
    <description>Recent content in Posts on Martin Fischer</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 15 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://push-f.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hängemenge</title>
      <link>https://push-f.com/posts/2026-02-15-h%C3%A4ngemenge/</link>
      <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2026-02-15-h%C3%A4ngemenge/</guid>
      <description>&lt;p&gt;For my second last birthday my friends got me a hammock and it&amp;rsquo;s one of the&#xA;best gifts I&amp;rsquo;ve gotten, I love it. I even named my laptop &lt;em&gt;hamac&lt;/em&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&#xA;A person close to me coined the word &lt;em&gt;Hängemenge&lt;/em&gt;, inspired by how &lt;a href=&#34;https://en.wikipedia.org/wiki/Kugelmugel&#34;&gt;Kugelmugel&lt;/a&gt;&#xA;sounds. &lt;em&gt;Hängemenge&lt;/em&gt; describes the feeling of lying in a hammock or it could&#xA;refer to a multitude of hammocks. For some time now I&amp;rsquo;ve been meaning to design&#xA;a font (or rather &lt;em&gt;typeface&lt;/em&gt;, as I&amp;rsquo;ve learned&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;), where the horizontal bars&#xA;in &lt;code&gt;H&lt;/code&gt; and &lt;code&gt;A&lt;/code&gt; hang like a hammock. Well I finally did it!&lt;/p&gt;</description>
    </item>
    <item>
      <title>NixOS and what I&#39;ve been serving</title>
      <link>https://push-f.com/posts/2025-05-01-nixos/</link>
      <pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2025-05-01-nixos/</guid>
      <description>&lt;p class=&#34;thumbnail&#34;&gt;&lt;img src=&#34;nix-flower-thumb.jpg&#34; alt=&#34;red horse-chestnut flower in front of a ThinkPad with a light blue Nix sticker&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;After 5 years on Debian, I switched to NixOS at the end of last year.&#xA;In this blog post I&amp;rsquo;ll confess to neglecting my server, reflect on why I&#xA;didn&amp;rsquo;t get Nix when I looked at it a couple years ago and plug the services&#xA;I&amp;rsquo;ve been running for the past years, that I&amp;rsquo;ve now &lt;em&gt;nixified&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I taught myself programming, I then studied computer science and now for&#xA;almost 1.5 years I have been working in a small team at a big company.&#xA;At work we have a team for operations.&#xA;Over the years I have very much grown as a developer but I have not been&#xA;much of an operator. I have just been chucking service after service&#xA;on my VPS by manually editing files via SSH (mostly Nginx configs, systemd&#xA;units and crontab files). I also never figured out deployment.&#xA;I love Git, so I set up a post-receive Git hook on the server to restart&#xA;the systemd service but this was never a solid solution.&#xA;I only ever touched my server to add another service and over time&#xA;I lost track of what I was even running.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Welcome back</title>
      <link>https://push-f.com/posts/2024-01-02-welcome-back/</link>
      <pubDate>Tue, 02 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2024-01-02-welcome-back/</guid>
      <description>&lt;p&gt;I published my last blog post almost 3 years ago. In that time much&#xA;has happened. I made new friends, I lost friends, I tried therapy,&#xA;I discovered volleyball, I cycled through Europe for a month, I got&#xA;my BSc. I finally moved out from a living situation that wasn&amp;rsquo;t good&#xA;for me and got my first job.&lt;/p&gt;&#xA;&lt;p&gt;My friends, sports, music and my mum have gotten me this far.&#xA;I&amp;rsquo;m excited for the future and will hopefully manage to publish&#xA;some of the stuff I&amp;rsquo;ve been working on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error handling in Rust web frameworks</title>
      <link>https://push-f.com/posts/2021-01-28-rust-web-framework-error-handling/</link>
      <pubDate>Thu, 28 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2021-01-28-rust-web-framework-error-handling/</guid>
      <description>&lt;p&gt;The two most popular Rust web frameworks, &lt;a href=&#34;https://rocket.rs/&#34;&gt;Rocket&lt;/a&gt; and&#xA;&lt;a href=&#34;https://actix.rs/&#34;&gt;Actix Web&lt;/a&gt; both let you define request handlers like&#xA;the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#[post(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/echo&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;, data=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;lt;msg&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;)]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&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;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;echo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;msg&lt;/span&gt;: &lt;span class=&#34;nc&#34;&gt;Json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Message&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&amp;gt; &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&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;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;msg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&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;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Notice how the parameter is automatically derived from the request: we just&#xA;declare the parameter and the framework takes care of passing the argument.&#xA;In the above example the framework will parse the request body as JSON and&#xA;pass the deserialized &lt;code&gt;Message&lt;/code&gt; struct. How does this work?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tracking .git/config files centrally with git</title>
      <link>https://push-f.com/posts/2020-10-08-centrally-managing-repository-git-configs/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2020-10-08-centrally-managing-repository-git-configs/</guid>
      <description>&lt;p&gt;How do you start working on a remote git repository?&#xA;You clone it from an URL with &lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;.&#xA;Great! Now let&amp;rsquo;s say a month later you want to clone the same repository on a&#xA;different machine.&#xA;What was the URL again?&lt;/p&gt;&#xA;&lt;p&gt;Over the years I have amassed so many git repositories with varying upstream servers&#xA;that this has become a regular struggle for me. To make things worse I also use&#xA;different git identities (name and email) for work and hobby projects. So after&#xA;I have somehow acquired the URL I also need to remember to set up the right git&#xA;identity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a blog with make, pandoc and Python</title>
      <link>https://push-f.com/posts/2020-10-06-blog-with-make-pandoc-and-python/</link>
      <pubDate>Tue, 06 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://push-f.com/posts/2020-10-06-blog-with-make-pandoc-and-python/</guid>
      <description>&lt;p&gt;I have been wanting to create a personal website for a long time, but now I&#xA;have finally figured out a domain name and toolchain that I am happy with.&lt;/p&gt;&#xA;&lt;p&gt;There are many static-site generators out there but the ones I tried were too&#xA;complex for my taste. The features that I wanted were just:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;convert Markdown to HTML&lt;/li&gt;&#xA;&lt;li&gt;wrap the resulting HTML in a template with some variables from a YAML frontmatter&lt;/li&gt;&#xA;&lt;li&gt;autogenerate a list of all posts on the startpage&lt;/li&gt;&#xA;&lt;li&gt;autogenerate an Atom feed with my latest posts so that people can subscribe&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 class=&#34;heading&#34; id=&#34;two-powerful-hammers&#34;&gt;&#xA;  Two powerful hammers&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#two-powerful-hammers&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The answer to the question &amp;ldquo;How do I convert A to B?&amp;rdquo; is &lt;a href=&#34;https://pandoc.org/&#34;&gt;pandoc&lt;/a&gt;.&#xA;Pandoc also supports YAML frontmatter and templates, so we have got the first two points covered.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
