<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Technology on Christian Spoo</title><link>https://www.christian-spoo.de/categories/technology/</link><description>Recent content in Technology on Christian Spoo</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 06 May 2026 09:25:12 +0200</lastBuildDate><atom:link href="https://www.christian-spoo.de/categories/technology/index.xml" rel="self" type="application/rss+xml"/><item><title>The night DNSSEC broke .de</title><link>https://www.christian-spoo.de/posts/2026/05/the-night-dnssec-broke-.de/</link><pubDate>Wed, 06 May 2026 09:00:00 +0200</pubDate><guid>https://www.christian-spoo.de/posts/2026/05/the-night-dnssec-broke-.de/</guid><description>&lt;p&gt;Last night, large parts of the German internet quietly broke.
Not for everyone — which made it more confusing, not less.
Bahn.de, Spiegel.de, and thousands of other &lt;code&gt;.de&lt;/code&gt; domains returned &lt;code&gt;SERVFAIL&lt;/code&gt; to anyone using a security-conscious DNS resolver.
The culprit was DENIC, the registry responsible for the &lt;code&gt;.de&lt;/code&gt; top-level domain, and a botched key rollover in their DNSSEC setup.&lt;/p&gt;
&lt;h2 id="what-dnssec-is-supposed-to-do"&gt;What DNSSEC is supposed to do&lt;/h2&gt;
&lt;p&gt;DNS — the system that translates domain names like &lt;code&gt;spiegel.de&lt;/code&gt; into IP addresses — was designed in an era when the internet was a considerably more trusting place.
It has no built-in mechanism to verify that the answers you receive are genuine and haven&amp;rsquo;t been tampered with in transit.
An attacker positioned between you and your DNS resolver can, in principle, return fake records and silently redirect you to a malicious server.&lt;/p&gt;</description></item><item><title>Get shit done with Claude Code, Gemini and OpenAI Codex</title><link>https://www.christian-spoo.de/posts/2026/04/get-shit-done-with-claude-code-gemini-and-openai-codex/</link><pubDate>Sun, 05 Apr 2026 18:20:00 +0200</pubDate><guid>https://www.christian-spoo.de/posts/2026/04/get-shit-done-with-claude-code-gemini-and-openai-codex/</guid><description>&lt;p&gt;Over the last few weeks, I picked up an old codebase of mine again: &lt;strong&gt;miniOS&lt;/strong&gt;, a small x86_64 hobby operating system kernel that dates back to my university days.
It had been sitting around for a long time in that familiar state many personal systems projects eventually reach:
promising, educational, and full of interesting ideas, but also weighed down by old design decisions and unresolved blockers.&lt;/p&gt;
&lt;p&gt;That combination makes such projects oddly difficult to resume.
You still remember why they matter to you.
You still know there is something worthwhile inside them.
But every attempt to continue starts with the same exhausting phase of reconstructing context, rediscovering broken edges, and trying to remember why some piece of code was written that way in the first place.&lt;/p&gt;</description></item><item><title>Why I chose Hugo over WordPress for this blog</title><link>https://www.christian-spoo.de/posts/2026/01/why-i-chose-hugo-over-wordpress-for-this-blog/</link><pubDate>Fri, 23 Jan 2026 14:30:00 +0100</pubDate><guid>https://www.christian-spoo.de/posts/2026/01/why-i-chose-hugo-over-wordpress-for-this-blog/</guid><description>&lt;p&gt;When I decided to start this blog, one of the first questions I had to answer was: which platform should I use?
For many people, WordPress is the obvious choice—it powers over 40% of all websites on the internet, after all.
Unlike many others, however, I&amp;rsquo;ve never really liked WordPress.
Part of this stems from its terribly grown, unstructured codebase that has accumulated technical debt over nearly two decades.
More recently, political turmoil within the WordPress project around the behavior of Matt Mullenweg and the company Automattic has further soured my view of the platform.
After working with Hugo for a while now, I&amp;rsquo;ve found it suits my needs much better—particularly for static content like a personal blog.&lt;/p&gt;</description></item></channel></rss>