<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>kolaente&#39;s Blog</title>
    <link>https://blog.kolaente.de/</link>
    <description>Recent content on kolaente&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 05 Sep 2025 12:11:33 +0200</lastBuildDate><atom:link href="https://blog.kolaente.de/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Migrating a codebase to the newest shiny js framework, now fully automated</title>
      <link>https://blog.kolaente.de/2025/09/migrating-a-codebase-to-the-newest-shiny-js-framework-now-fully-automated/</link>
      <pubDate>Fri, 05 Sep 2025 12:11:33 +0200</pubDate>
      
      <guid>https://blog.kolaente.de/2025/09/migrating-a-codebase-to-the-newest-shiny-js-framework-now-fully-automated/</guid>
      <description>We Put a Coding Agent in a While Loop and It Shipped 6 Repos Overnight
 what’s the weirdest way we could use a coding agent?
Our answer: run Claude Code headlessly in a loop forever and see what happens.
Turns out, what happens is: you wake up to 1,000+ commits, six ported codebases, and a wonky little tool we’re calling RepoMirror.
 And they did exactly that: put Claude Code in a loop until it was done porting one library to another programming language.</description>
    </item>
    
    <item>
      <title>How I use AI coding tools</title>
      <link>https://blog.kolaente.de/2025/09/how-i-use-ai-coding-tools/</link>
      <pubDate>Mon, 01 Sep 2025 12:00:00 +0200</pubDate>
      
      <guid>https://blog.kolaente.de/2025/09/how-i-use-ai-coding-tools/</guid>
      <description>It feels like every week there&amp;rsquo;s a new AI coding tool or model promising to revolutionize how we write software. Especially since the beginning of this year, new tools come out left and right. Since the switching costs between these tools are so low, I&amp;rsquo;ve found myself trying out a lot of different options to see what works best for me.
So let me walk you through my current setup and how I actually use these tools day-to-day.</description>
    </item>
    
    <item>
      <title>Making Tailscale services available on the public internet with nixos</title>
      <link>https://blog.kolaente.de/2024/10/making-tailscale-services-available-on-the-public-internet-with-nixos/</link>
      <pubDate>Sun, 27 Oct 2024 17:56:59 +0100</pubDate>
      
      <guid>https://blog.kolaente.de/2024/10/making-tailscale-services-available-on-the-public-internet-with-nixos/</guid>
      <description>I&amp;rsquo;ve been using Tailscale to connect all my devices across different networks, which is great, but I wanted to take it a step further. I wanted my self-hosted services to be accessible from both inside and outside my network, using the same domain name. Turns out, it&amp;rsquo;s quite a ride to get there.
Tailscale Funnel You might be thinking &amp;ldquo;hey Tailscale Funnel can do that&amp;rdquo;. And in principle, you&amp;rsquo;re right. I&amp;rsquo;m not using it for two reasons:</description>
    </item>
    
    <item>
      <title>Getting IPv6 to work on an older Hetzner Cloud server</title>
      <link>https://blog.kolaente.de/2022/08/getting-ipv6-to-work-on-an-older-hetzner-cloud-server/</link>
      <pubDate>Thu, 04 Aug 2022 21:36:01 +0200</pubDate>
      
      <guid>https://blog.kolaente.de/2022/08/getting-ipv6-to-work-on-an-older-hetzner-cloud-server/</guid>
      <description>Today, I finally added AAAA DNS records for all the domains I manage. After adding these, I was able to ping each domain with ping -6 &amp;lt;domain&amp;gt; and everything seemed to work fine. Later that day, my mailserver greeted me with this:
I&amp;rsquo;m using mailcow as my mailserver&amp;rsquo;s software because I&amp;rsquo;ve fiddled with my custom mail config too often in the past and mailcow just works™. This includes automatically renewing Let&amp;rsquo;s Encrypt certificates before they expire.</description>
    </item>
    
    <item>
      <title>Installing NixOS with encrypted btrfs root device and home-manager from start to finish</title>
      <link>https://blog.kolaente.de/2021/11/installing-nixos-with-encrypted-btrfs-root-device-and-home-manager-from-start-to-finish/</link>
      <pubDate>Sat, 27 Nov 2021 20:46:23 +0100</pubDate>
      
      <guid>https://blog.kolaente.de/2021/11/installing-nixos-with-encrypted-btrfs-root-device-and-home-manager-from-start-to-finish/</guid>
      <description>NixOS is amazing because you can re-use your configuration across multiple systems. Put it in a git repo and you got yourself a nice sync mechanism across all of your systems.
However, you still have to manually deal with setting up drive encryption and partitioning every time you set up a new device.
After doing this manually every time and figuring it out again every time from scratch, I decided to write my process of doing this down.</description>
    </item>
    
    <item>
      <title>Preview environments with Gitea, Drone and Netlify</title>
      <link>https://blog.kolaente.de/2021/11/preview-environments-with-gitea-drone-and-netlify/</link>
      <pubDate>Sun, 14 Nov 2021 13:34:29 +0100</pubDate>
      
      <guid>https://blog.kolaente.de/2021/11/preview-environments-with-gitea-drone-and-netlify/</guid>
      <description>For the Vikunja frontend I wanted to have a preview link with the changes from a PR, right under that PR. As a reviewer, that makes it a lot easier to see if the changes someone proposed actually work.
Vikunja&amp;rsquo;s frontend is a classic Vue 3 SPA where you get a js bundle at the end.
Gitlab has a feature called Review Apps where you basically define a pipeline stage (using gitlab CI, of course) that deploys the app somewhere and sets a dynamic url.</description>
    </item>
    
    <item>
      <title>Opting Out of Google&#39;s Federated Learning of Cohorts (FloC) with Traefik 2</title>
      <link>https://blog.kolaente.de/2021/04/opting-out-of-googles-federated-learning-of-cohorts-floc-with-traefik-2/</link>
      <pubDate>Fri, 16 Apr 2021 10:17:17 +0200</pubDate>
      
      <guid>https://blog.kolaente.de/2021/04/opting-out-of-googles-federated-learning-of-cohorts-floc-with-traefik-2/</guid>
      <description>Google has recently announced it will start tracking the visitors of your website even if you&amp;rsquo;re not using Google Analytics or Adsense. Plausible sums it up pretty good, in short:
They put all chrome users in so called &amp;ldquo;cohorts&amp;rdquo; which each represent some group of interest. Basically, they stop following individuals through the internet but instead just let the chrome browser do the profiling and targeting for them based on the sites they&amp;rsquo;ve viewed in the past.</description>
    </item>
    
    <item>
      <title>Imprint</title>
      <link>https://blog.kolaente.de/imprint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://blog.kolaente.de/imprint/</guid>
      <description>Angaben gemäß § 5 TMG
Konrad LangenbergFeldbergstraße 1935043 Marburg
Contact E-Mail: kontakt@konradlangenberg.de
Online Dispute Resolution website of the EU Commission In order for consumers and traders to resolve a dispute out-of-court, the European Commission developed the Online Dispute Resolution Website: www.ec.europa.eu/consumers/odr
Legal disclaimer The contents of these pages were prepared with utmost care. Nonetheless, we cannot assume liability for the timeless accuracy and completeness of the information.
Our website contains links to external websites.</description>
    </item>
    
    <item>
      <title>Privacy Policy</title>
      <link>https://blog.kolaente.de/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://blog.kolaente.de/privacy/</guid>
      <description>At kolaente&amp;rsquo;s Blog, accessible from https://blog.kolaente.de, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by kolaente&amp;rsquo;s Blog and how we use it.
If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us. Our Privacy Policy was generated with the help of GDPR Privacy Policy Generator from GDPRPrivacyPolicy.</description>
    </item>
    
  </channel>
</rss>
