<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://christoph-mies.de/feed.xml" rel="self" type="application/atom+xml" /><link href="https://christoph-mies.de/" rel="alternate" type="text/html" /><updated>2026-04-18T18:16:36+02:00</updated><id>https://christoph-mies.de/feed.xml</id><title type="html">Christoph Mies</title><subtitle>Blog · Publications · Professional Journey</subtitle><author><name>Christoph</name></author><entry><title type="html">Creating my website</title><link href="https://christoph-mies.de/blog/creating-my-website/" rel="alternate" type="text/html" title="Creating my website" /><published>2026-03-15T00:00:00+01:00</published><updated>2026-04-06T13:02:45+02:00</updated><id>https://christoph-mies.de/blog/creating-my-website</id><content type="html" xml:base="https://christoph-mies.de/blog/creating-my-website/"><![CDATA[<div style="font-style: italic; color: var(--text-color, #666); margin-bottom: 20px; font-size: 0.9em; display: flex; align-items: center; opacity: 0.8;">
  <i class="fa-solid fa-robot" style="margin-right: 8px; color: var(--primary-color, #494e52);"></i>
  This article was created with the support of AI and has been carefully reviewed and edited by the author.
</div>

<h2 id="why-did-i-start-my-website">Why did I start my website?</h2>

<p>I created this website because I wanted to have a personal presence on the internet. It gives me the opportunity to share more about myself — and especially about my work — than a traditional CV can convey.</p>

<p>I also wanted a place to present my scientific publications in a structured and accessible way.</p>

<p>Beyond that, I was looking for a space to write about IT architecture topics that are relevant across many systems: complex, widely shared challenges where I can express my perspective without revealing sensitive details about my concrete projects or day-to-day work.</p>

<h2 id="selecting-a-suitable-tech-stack">Selecting a suitable tech stack</h2>

<p>After deciding to build my website, the next step was choosing the right tools for it. My requirements were clear:</p>

<p>I wanted to present my CV and publications, maintain a blog with a moderate posting frequency — perhaps one or two posts per month — and use a layout that looks clean and appealing. At the same time, the solution needed to be easy to maintain, both in everyday operation and when applying updates.</p>

<h3 id="collecting-requirements-leads-to-the-first-candidate-github-pages">Collecting requirements leads to the first candidate: GitHub Pages</h3>

<p>As an IT architect, I began by gathering the requirements for selecting an appropriate tool.</p>

<p>I already had a small website that I had written directly in static HTML and hosted by a good friend of mine. While this setup worked, it also revealed several limitations. From that experience, I realized that:</p>

<ul>
  <li>I wanted a higher level of abstraction and preferred writing Markdown instead of raw HTML, with the final website generated automatically.</li>
  <li>I wanted to update and deploy my content independently, without relying on anyone else.</li>
  <li>I wanted proper version control for all changes.</li>
  <li>The solution needed to be free of charge.</li>
</ul>

<p>This led me to the following requirements:</p>

<ol>
  <li>clean and appealing layout</li>
  <li>easy to maintain</li>
  <li>write Markdown instead of HTML</li>
  <li>independent change and deployment</li>
  <li>version control</li>
  <li>free of charge</li>
</ol>

<p>Since I already had a <a href="https://github.com/">GitHub</a> account, <a href="https://docs.github.com/en/pages">GitHub Pages</a> quickly emerged as a strong candidate that met all these requirements.</p>

<p>GitHub Pages uses <a href="https://jekyllrb.com/">Jekyll</a> to transform Markdown into a complete website. A wide range of themes is available, making it easy to build pages with a clean and appealing design.</p>

<h3 id="verifying-that-github-pages-and-jekyll-form-a-suitable-tech-stack">Verifying that GitHub Pages and Jekyll form a suitable tech stack</h3>

<p>With this initial idea in mind, I conducted a brief evaluation.</p>

<p>Two key questions emerged:</p>

<ol>
  <li>Is Jekyll the right choice for generating the site?</li>
  <li>Is GitHub the right platform for hosting a Jekyll-based page?</li>
</ol>

<p>After some research, I arrived at the following answer to question (1): <em>Jekyll is still a solid choice.</em></p>

<ul>
  <li>Jekyll transforms Markdown into static HTML pages.</li>
  <li>It is quite old (first released in 2008), but it is mature and stable.</li>
  <li>It has a large ecosystem — for almost any problem, you can find a plugin, guide, or tutorial.</li>
  <li>Once configured, it runs reliably for years without breaking changes.</li>
  <li>Many themes exist to enable appealing layouts.</li>
  <li>Other frameworks may offer faster build times or more interactive layouts, but for my use case, Jekyll is more than sufficient.</li>
  <li>Jekyll is free of charge.</li>
</ul>

<p>For question (2), my research led to a clear conclusion: <em>GitHub is a very convenient choice.</em></p>

<ul>
  <li>GitHub provides native Jekyll integration. I do not need to write any build scripts or GitHub Actions workflows to get my website running.</li>
  <li>Other providers also support Jekyll, which means choosing GitHub does not create vendor lock-in. Migrating my site to another provider — for example, <a href="https://docs.gitlab.com/user/project/pages/">GitLab Pages</a> — would require only a modest amount of effort.</li>
</ul>

<p>The combination of Jekyll and GitHub fulfills my requirements:</p>

<ol>
  <li>clean and appealing layout — ⚠️ depending on the right Jekyll theme</li>
  <li>easy to maintain — ✅</li>
  <li>write Markdown instead of HTML — ✅</li>
  <li>independent change and deployment — ✅</li>
  <li>version control — ✅</li>
  <li>free of charge — ✅</li>
</ol>

<h2 id="starting-to-build-the-website-with-jekyll-and-github-pages">Starting to build the website with Jekyll and GitHub Pages</h2>

<h3 id="initial-setup-and-configuration">Initial setup and configuration</h3>

<p>My first steps were straightforward and followed the GitHub Pages documentation.</p>

<p>I began by creating an <code class="language-plaintext highlighter-rouge">index.md</code> file as the main page and configuring GitHub Pages to build directly from my main branch.</p>

<p>To use my own domain and set up the CNAME, I needed to:</p>

<ul>
  <li>create A-records pointing my domain to the GitHub Pages IP addresses</li>
  <li>create a CNAME entry delegating my domain to the corresponding github.io address</li>
</ul>

<p>After that, I added additional pages — <em>About Me</em>, <em>Publications</em>, and <em>Imprint, Disclaimer, and Privacy Policy</em> — and linked them together within the Markdown files.</p>

<p>Everything worked, but the design was extremely basic. On the other hand, I now had all my content stored as clean Markdown files, without any external dependencies — a solid foundation to build upon.</p>

<h3 id="applying-the-jekyll-theme-minimal-mistakes">Applying the Jekyll Theme <em>Minimal Mistakes</em></h3>

<p>To improve the design of my website, I began searching for a suitable theme and quickly discovered <a href="https://mmistakes.github.io/minimal-mistakes/">Minimal Mistakes</a>.</p>

<p>Google’s AI describes <em>Minimal Mistakes</em> as follows (March 2026):</p>

<blockquote class="notice--info">
  <p>“Minimal Mistakes is a true ‘workhorse’ among Jekyll themes. It is less intended for playful, highly visual lifestyle blogs and instead shines where structure, information, and depth of content are the main focus.”</p>
</blockquote>

<p>Microsoft Copilot summarizes it this way (March 2026):</p>

<blockquote class="notice--info">
  <p>“Minimal Mistakes is perfect for websites that need to organize and present substantial content cleanly and readably, without the overhead of a full CMS such as WordPress.”</p>
</blockquote>

<p>Encouraged by these assessments, I began exploring the technical details of the theme.</p>

<p>The minimal starter repository for Minimal Mistakes — <a href="https://github.com/mmistakes/mm-github-pages-starter">mm-github-pages-starter</a> — proved extremely helpful. By studying its structure and configuration, I was able to iteratively reorganize and improve my own website.</p>

<p>Along the way, I learned that Markdown pages typically begin with a <code class="language-plaintext highlighter-rouge">front matter</code> block — a concept used by most static site generators, including Jekyll.  A wide range of parameters is available to control layout, metadata, and behavior. Another essential component is the Jekyll configuration file, <code class="language-plaintext highlighter-rouge">_config.yml</code>.</p>

<p>By asking LLMs about the specific parameters used these configurations, I gained a solid understanding of how Minimal Mistakes works and how to tailor it to my needs.</p>

<h3 id="gitflow-and-staging">Gitflow and Staging</h3>
<p>As a former software developer, I have always appreciated the concept of staging environments — the idea that every change destined for production should first be deployed to at least one production-like test environment. Applied to my website, this would mean deploying changes to a test site before updating the real one.</p>

<p>However, GitHub Pages’ simple integration does not natively support such a staging concept. It would be possible to approximate it by using two separate repositories:</p>
<ul>
  <li>a <strong>DEV</strong> repository that publishes to a test URL, and</li>
  <li>a <strong>PROD</strong> repository that deploys to the final domain.</li>
</ul>

<p>After successful testing in <strong>DEV</strong>, a GitHub Action could synchronize the latest changes to <strong>PROD</strong>.</p>

<p>However, I decided not to pursue this relatively complex setup and instead opted for a much simpler approach.</p>

<p>I follow the <a href="https://docs.github.com/en/get-started/using-github/github-flow">GitHub Flow</a> branching strategy. GitHub Flow consists of a single permanent <strong>main</strong> branch and short-lived feature branches for changes:</p>

<ul>
  <li><strong>main</strong> represents the production state of my website and is a protected branch
    <ul>
      <li>It can only be modified through pull requests, requires a linear history, and does not allow bypassing these rules</li>
      <li>Tags and releases are created from this branch</li>
      <li>By default, GitHub Pages builds the site from this branch</li>
    </ul>
  </li>
  <li>The short-lived feature branches represent the development state of my website
    <ul>
      <li>During active development and testing, the website is generated from these branches</li>
      <li>I actively use rebasing and force-pushes on these branches to keep the history of the main branch clean and readable</li>
    </ul>
  </li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>My use case was straightforward:</p>

<p>I wanted to present my CV and publications, maintain a blog with a moderate posting frequency — perhaps one or two posts per month — and use a layout that looks clean and appealing.</p>

<p>The combination of Jekyll, the Minimal Mistakes theme, and GitHub Pages meets all of my requirements:</p>

<ol>
  <li>clean and appealing layout — ✅</li>
  <li>easy to maintain — ✅</li>
  <li>write Markdown instead of HTML — ✅</li>
  <li>independent change and deployment — ✅</li>
  <li>version control — ✅</li>
  <li>free of charge — ✅</li>
</ol>

<p>By omitting an explicit staging concept, I can rely on the very simple and efficient GitHub Flow, which keeps my workflow lightweight while still maintaining structure and clarity.</p>]]></content><author><name>Christoph</name></author><category term="Blog" /><category term="website" /><category term="development" /><summary type="html"><![CDATA[Why I chose GitHub Pages, Jekyll, and Minimal Mistakes to build my website]]></summary></entry></feed>