<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI – apt-upgrade.me – Homelab, Linux &amp; DevSecOps</title><link>https://www.apt-upgrade.me/tag/ai/</link><description>One nerd's homelab: Linux, Kubernetes, security, and the occasional disaster.</description><language>en-US</language><lastBuildDate>Thu, 05 Nov 2026 08:56:08 +0100</lastBuildDate><atom:link href="https://www.apt-upgrade.me/tag/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Legal Housekeeping for a Tech Blog: What I Cleaned Up – From the Imprint to the Images</title><link>https://www.apt-upgrade.me/2026/11/05/legal-housekeeping-for-a-tech-blog-what-i-cleaned-up-from-the-imprint-to-the-images/</link><pubDate>Thu, 05 Nov 2026 08:56:08 +0100</pubDate><guid>https://www.apt-upgrade.me/2026/11/05/legal-housekeeping-for-a-tech-blog-what-i-cleaned-up-from-the-imprint-to-the-images/</guid><description>&lt;p&gt;&lt;em&gt;Up front: this is a field report, not legal advice. I am an admin, not a lawyer. If in doubt, ask someone who does this for a living.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;A private tech blog in Germany is not a legal no man&amp;rsquo;s land. Imprint, privacy, copyright on images – each of them carries the risk of a formal warning letter, and the longer a blog runs, the more piles up. So in October I went through my blog systematically: where might I step on someone&amp;rsquo;s toes, where do I reveal more than necessary, and where am I open to attack? This post sums up what I found and changed.&lt;/p&gt;</description></item><item><title>The Ansible Tour, Part 6: Monitoring – Exporters, Prometheus, Grafana and a Monit Watchdog</title><link>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-6-monitoring/</link><pubDate>Mon, 19 Oct 2026 21:06:17 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-6-monitoring/</guid><description>&lt;p&gt;&lt;em&gt;Part 6 of the &lt;a href="https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/"&gt;Ansible Tour&lt;/a&gt;, and the last. After the platform, the applications and security, this part is about knowing what is going on. The series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;, with later changes added as updates.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;A server nobody watches fails silently. The setup here watches in four ways, and it helps to keep them apart:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Kind&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Question&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Tool&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Metrics&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How is the server doing over time?&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;exporters, Prometheus, Grafana&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;States&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Is something broken right now?&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Monit&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Logs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;What happened, and why?&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Loki and Grafana Alloy&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Signs of life&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Is what rarely reports anything still running at all?&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;job timestamps, a weekly mail&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;All of them follow the rule from part 5: silent while everything is healthy, so that every mail means something. And all of them fell into the same trap: for a while they were silent because they could not speak, not because nothing was happening.&lt;/p&gt;</description></item><item><title>The Ansible Tour, Part 4: Nextcloud – Collabora, Push, Host Database and occ, Role by Role</title><link>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-4-nextcloud/</link><pubDate>Mon, 19 Oct 2026 15:52:20 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/19/ansible-tour-part-4-nextcloud/</guid><description>&lt;p&gt;&lt;em&gt;Part 4 of the &lt;a href="https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/"&gt;Ansible Tour&lt;/a&gt;. After the blog in &lt;a href="https://www.apt-upgrade.me/2026/10/16/ansible-tour-part-3-blog/"&gt;part 3&lt;/a&gt;, here comes the second application: Nextcloud. The series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;, with later changes added as updates. What matches the blog is only mentioned briefly; the focus is on what is different.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Nextcloud is a file cloud: files, calendars, contacts, team folders and – with Collabora – documents edited together in the browser. Two of the three servers run it, for groups of very different size, with the same code and different values in the inventory. The work is shared by &lt;code&gt;next_mariadb&lt;/code&gt; and &lt;code&gt;next_redis&lt;/code&gt; (database and cache on the host), &lt;code&gt;next_k3s_deploy&lt;/code&gt; (Nextcloud, Collabora and the push service as Kubernetes objects), &lt;code&gt;next_config&lt;/code&gt; (Nextcloud’s settings) and &lt;code&gt;nextcloud_verify&lt;/code&gt;, plus the update playbook.&lt;/p&gt;</description></item><item><title>The Ansible Tour, Part 3: The Blog – WordPress, MariaDB and Redis on K3s, Role by Role</title><link>https://www.apt-upgrade.me/2026/10/16/ansible-tour-part-3-blog/</link><pubDate>Fri, 16 Oct 2026 12:31:10 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/16/ansible-tour-part-3-blog/</guid><description>&lt;p&gt;&lt;em&gt;Part 3 of the &lt;a href="https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/"&gt;Ansible Tour&lt;/a&gt;. &lt;a href="https://www.apt-upgrade.me/2026/10/15/ansible-tour-part-2-platform/"&gt;Part 2&lt;/a&gt; built the platform; this part puts the blog on it. The series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;, with later changes added as updates.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;This blog is WordPress. Four roles take it from an empty Kubernetes cluster to a running, configured and monitored website: &lt;code&gt;blog_k3s_deploy&lt;/code&gt; creates all Kubernetes objects, &lt;code&gt;blog_wordpress&lt;/code&gt; configures the running WordPress from the outside, &lt;code&gt;blog_visitor_stats&lt;/code&gt; counts the visitors anonymously at night, and &lt;code&gt;blog_verify&lt;/code&gt; checks at the end that everything works. An update playbook keeps the blog current.&lt;/p&gt;</description></item><item><title>The Ansible Tour, Part 2: The Platform – From a Bare AlmaLinux to a Kubernetes Cluster</title><link>https://www.apt-upgrade.me/2026/10/15/ansible-tour-part-2-platform/</link><pubDate>Thu, 15 Oct 2026 17:58:14 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/15/ansible-tour-part-2-platform/</guid><description>&lt;p&gt;&lt;em&gt;Part 2 of the &lt;a href="https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/"&gt;Ansible Tour&lt;/a&gt;. Part 1 explained how the repository is built; this part starts at the very bottom. The series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;, with later changes added as updates.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Every server here starts as a plain AlmaLinux 9 cloud image: a minimal Linux, a root login, nothing else. At the end of this part it is a patched base system that sends mail, updates itself at night and rotates its logs – and runs a single-node Kubernetes cluster with Helm, automatic Let’s Encrypt certificates and an ingress controller. That is the platform the blog and Nextcloud stand on. Almost all of it is the same for both.&lt;/p&gt;</description></item><item><title>The Ansible Tour, Part 1: One Repository, Three Servers – How the Code Is Organised and What Happens During a Run</title><link>https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/</link><pubDate>Wed, 14 Oct 2026 15:37:01 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/14/ansible-tour-part-1-framework/</guid><description>&lt;p&gt;&lt;em&gt;First part of a series about the Ansible code behind this blog and two Nextcloud servers. The code is public: &lt;a href="https://github.com/aptupgrademe/www_k3s"&gt;github.com/aptupgrademe/www_k3s&lt;/a&gt;; the series describes release &lt;a href="https://github.com/aptupgrademe/www_k3s/tree/v3.3.0"&gt;v3.3.0&lt;/a&gt;. Part 1 explains the structure and what happens during a run, parts 2 to 6 the roles, the deep dives the technology underneath.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Three servers, 34 roles, four playbooks, about 22,000 lines of YAML and templates. Opening the repository for the first time, you mostly see files. This part explains three things worth knowing first: how one set of roles serves two very different applications, where every value comes from, and what actually happens between &lt;code&gt;ansible-playbook&lt;/code&gt; and the final summary.&lt;/p&gt;</description></item><item><title>A Mail for Every SSH Login: A Two-Minute Tripwire with wtmp and systemd</title><link>https://www.apt-upgrade.me/2026/10/14/ssh-login-alarm-wtmp-systemd/</link><pubDate>Wed, 14 Oct 2026 10:02:43 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/14/ssh-login-alarm-wtmp-systemd/</guid><description>&lt;p&gt;&lt;em&gt;This is a follow-up to yesterday&amp;rsquo;s long post, &lt;a href="https://www.apt-upgrade.me/2026/10/13/defense-in-depth-nine-layers/"&gt;Defense in Depth: Nine Layers Between the Internet and My Servers&lt;/a&gt;. There, the login alarm got one sentence. Here is how it works, why it is built this way – and what an attacker learns from reading this.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;The idea is old and simple: if anyone logs in to one of my servers, I want to know – within minutes, not when I happen to look at a log a week later. Every login mails me. Since I know when I logged in myself, every mail I did not expect is worth looking at immediately. It is a tripwire: it does not stop anyone, it makes sure an intrusion does not go unnoticed.&lt;/p&gt;</description></item><item><title>Defense in Depth: Nine Layers Between the Internet and My Servers</title><link>https://www.apt-upgrade.me/2026/10/13/defense-in-depth-nine-layers/</link><pubDate>Tue, 13 Oct 2026 21:30:35 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/13/defense-in-depth-nine-layers/</guid><description>&lt;p&gt;A blog and two Nextcloud servers for local organisations: nothing on them is worth a targeted attack, and that is exactly why they get attacked. Not by someone who wants &lt;em&gt;my&lt;/em&gt; data, but by scanners that try every IP address on the internet, every hour, with the same handful of tricks. Most of them give up after the first locked door. The question is what happens with the ones that don&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>Ten Points, One Branch: Taking My Ansible Code From “It Works” to “It Is Clean”</title><link>https://www.apt-upgrade.me/2026/10/12/ten-points-one-branch-ansible-code-quality/</link><pubDate>Mon, 12 Oct 2026 21:42:52 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/12/ten-points-one-branch-ansible-code-quality/</guid><description>&lt;p&gt;It started with a slightly vain question. My Ansible repository runs this blog and two Nextcloud servers: 34 roles, four playbooks, about 9,000 lines of YAML, almost 200 commits. I didn&amp;rsquo;t write most of those lines myself – my AI co-admin (Claude) did, while I decided, tested and ran the playbooks. So I asked it: &lt;em&gt;if I understand most of this code, am I an advanced Ansible user?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;The answer was honest and a little uncomfortable: advanced at &lt;strong&gt;reading and operating&lt;/strong&gt; it, yes. Advanced at &lt;strong&gt;writing&lt;/strong&gt; it from scratch, not proven yet. And then it listed ten things that would make the code itself better. I said: do all ten. Test them properly. Then write about it. This is that post.&lt;/p&gt;</description></item><item><title>Hallo, Bonjour, Hola: Teaching My Blog Three New Languages with Polylang and a Small Army of AI Agents</title><link>https://www.apt-upgrade.me/2026/10/10/teaching-my-blog-three-new-languages-polylang-ai-agents/</link><pubDate>Sat, 10 Oct 2026 18:22:47 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/10/10/teaching-my-blog-three-new-languages-polylang-ai-agents/</guid><description>&lt;p&gt;&lt;img alt="Illustration: a man rides a bull in front of monitors, with German, French, American and Spanish flags" class="alignnone size-medium wp-image-1881" height="200" src="https://www.apt-upgrade.me/wp-content/uploads/2026/10/translations-300x200.webp" width="300"/&gt;&lt;/p&gt;&#10;&lt;p&gt;For almost two years this blog spoke exactly one language. English is the lingua franca of sysadmins, so that seemed fine. But I&amp;rsquo;m German, a good part of my readers aren&amp;rsquo;t native English speakers either, and when people search for &amp;ldquo;ZFS RAIDZ1 NAS Debian&amp;rdquo; in German, French or Spanish, they get results in German, French or Spanish. Not mine.&lt;/p&gt;</description></item><item><title>Enough YAML for Now: Three Servers, Windows Server 2025, and a Crash Course on the Dark Side</title><link>https://www.apt-upgrade.me/2026/09/23/enough-yaml-for-now-three-servers-windows-server-2025-and-a-crash-course-on-the-dark-side/</link><pubDate>Wed, 23 Sep 2026 21:06:04 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/09/23/enough-yaml-for-now-three-servers-windows-server-2025-and-a-crash-course-on-the-dark-side/</guid><description>&lt;p&gt;Confession time. After the &lt;a href="https://www.apt-upgrade.me/2026/09/21/bare-metal-to-k3s-a-nextcloud-migration-battle-log/"&gt;Nextcloud migration battle log&lt;/a&gt;, a double-digit number of playbook runs, one nftables ruleset that cheerfully flushed K3s&amp;rsquo; own tables, and more YAML than any human should read in a single week, I had officially had it up to &lt;em&gt;here&lt;/em&gt; with &lt;a href="https://nextcloud.com/"&gt;Nextcloud&lt;/a&gt;, Ansible and anything containing the word &amp;ldquo;migration&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;So I did what any reasonable Linux nerd does when burned out on Linux: I went over to the other side. Three servers, three fresh installs of &lt;strong&gt;Windows Server 2025&lt;/strong&gt;, and a few evenings of Active Directory, DNS, DHCP, Group Policy, Storage Spaces and BitLocker. No YAML. Just a lot of &lt;code&gt;Get-&lt;/code&gt; and &lt;code&gt;Set-&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>My 5-Year IT Learning Roadmap — From Sysadmin to Infrastructure Engineer</title><link>https://www.apt-upgrade.me/2026/08/27/my-5-year-it-learning-roadmap-from-sysadmin-to-infrastructure-engineer/</link><pubDate>Thu, 27 Aug 2026 15:22:44 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/08/27/my-5-year-it-learning-roadmap-from-sysadmin-to-infrastructure-engineer/</guid><description>&lt;p&gt;&lt;strong&gt;Linux. Windows. Networking. Security. Observability. Automation. Cloud. Kubernetes. AI.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;But above all:&lt;/p&gt;&#10;&lt;h2 id="-learn-to-understand-systems--not-just-to-operate-them"&gt;🧠 Learn to understand systems — not just to operate them.&lt;/h2&gt;&#10;&lt;p&gt;I&amp;rsquo;ve been thinking quite a lot about where I want to take my IT skills over the next several years.&lt;/p&gt;&#10;&lt;p&gt;My professional background already gives me a fairly broad foundation:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;🐧 Linux system administration&lt;/li&gt;&#10;&lt;li&gt;📊 Monitoring&lt;/li&gt;&#10;&lt;li&gt;🚨 Technical event management&lt;/li&gt;&#10;&lt;li&gt;📝 Log management&lt;/li&gt;&#10;&lt;li&gt;🌐 Networking&lt;/li&gt;&#10;&lt;li&gt;🔐 Security&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;My current professional focus is increasingly around &lt;strong&gt;Graylog and log management&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Further WLAN Optimizations: What My Router’s Diary Had to Say</title><link>https://www.apt-upgrade.me/2026/08/22/further-wlan-optimizations-what-my-routers-diary-had-to-say/</link><pubDate>Sat, 22 Aug 2026 21:47:54 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/08/22/further-wlan-optimizations-what-my-routers-diary-had-to-say/</guid><description>&lt;p&gt;Every homelab eventually reaches the point where you run out of servers to break and start eyeing the router. Mine&amp;rsquo;s a FRITZ!Box 7690, sitting there quietly doing WiFi and internet things, never really audited, never really questioned. One evening I figured: why not hand Claude the login and see what it finds? One rule, non-negotiable: &lt;strong&gt;look, don&amp;rsquo;t touch.&lt;/strong&gt; No changes, just an honest inspection.&lt;/p&gt;&#10;&lt;p&gt;What came back was more interesting than I expected – and backed by actual router logs, not vibes. 🧾&lt;/p&gt;</description></item><item><title>Running My Own AI Instead of Renting It? A Small Homelab Experiment</title><link>https://www.apt-upgrade.me/2026/06/05/running-my-own-ai-instead-of-renting-it-a-small-homelab-experiment/</link><pubDate>Fri, 05 Jun 2026 21:37:14 +0200</pubDate><guid>https://www.apt-upgrade.me/2026/06/05/running-my-own-ai-instead-of-renting-it-a-small-homelab-experiment/</guid><description>&lt;p&gt;Like many tech enthusiasts these days, I spend a fair amount of time bouncing between different AI tools.&#10;My current daily drivers are &lt;strong&gt;ChatGPT&lt;/strong&gt;, &lt;strong&gt;Grok&lt;/strong&gt;, and &lt;strong&gt;Claude Pro&lt;/strong&gt;.&#10;Each one has its strengths, and honestly, we&amp;rsquo;re already at a point where choosing an AI model feels a bit like choosing the right Linux distribution for a specific workload. 😎&#10;For coding and writing tasks, Claude has become one of my favorites. The quality is impressive, especially when working through technical problems, reviewing code, or discussing architecture decisions.&#10;There is, however, one thing that keeps pulling me back to ChatGPT:&lt;/p&gt;</description></item><item><title>🤖 From ChatGPT to Claude: Adventures of a Slightly Terrified Nerd in VS Code</title><link>https://www.apt-upgrade.me/2026/02/17/%F0%9F%A4%96-from-chatgpt-to-claude-adventures-of-a-slightly-terrified-nerd-in-vs-code/</link><pubDate>Tue, 17 Feb 2026 21:24:10 +0100</pubDate><guid>https://www.apt-upgrade.me/2026/02/17/%F0%9F%A4%96-from-chatgpt-to-claude-adventures-of-a-slightly-terrified-nerd-in-vs-code/</guid><description>&lt;article style="font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; line-height: 1.7;"&gt;&#10;&lt;header style="margin-bottom: 18px;"&gt;&lt;p style="margin: 0; color: #555;"&gt;AI coding experiments, &lt;a href="https://docs.ansible.com/"&gt;Ansible&lt;/a&gt; chaos, and that moment when the machine stares back at you… 👀&lt;/p&gt;&lt;/header&gt;&#10;&lt;hr style="border: none; border-top: 1px solid #e5e5e5; margin: 18px 0;"/&gt;&#10;&lt;section&gt;&lt;h2&gt;🧠 My AI Workflow So Far&lt;/h2&gt;&lt;p&gt;I’ve been using &lt;strong&gt;ChatGPT&lt;/strong&gt; for over a year now — pretty much daily.&lt;/p&gt;&lt;p&gt;Mostly for generating images, writing code, polishing wording, creating templates,&lt;br/&gt;&#10;and of course for researching and summarizing texts.&lt;/p&gt;&lt;p&gt;Basically: if there’s a repetitive brain task, I outsource it to silicon. 🤓💡&lt;/p&gt;&lt;/section&gt;&#10;&lt;section style="margin-top: 18px;"&gt;&lt;h2&gt;🔄 Plot Twist: Trying Claude&lt;/h2&gt;&lt;p&gt;Today, kind of by accident, I canceled ChatGPT and decided to try &lt;strong&gt;Claude&lt;/strong&gt; instead.&lt;br/&gt;&#10;I’ve read a lot about it, and from what I gather, it might actually have the edge when it comes to coding.&lt;/p&gt;&lt;p&gt;As a full-time nerd, I obviously had to test this theory immediately.&lt;br/&gt;&#10;Because reading about tools is nice — but &lt;em&gt;throwing them into production chaos&lt;/em&gt; is nicer. 😄&lt;/p&gt;&lt;/section&gt;&#10;&lt;section style="margin-top: 18px;"&gt;&lt;h2&gt;💻 VS Code + Claude Plugin = Nerd Playground&lt;/h2&gt;&lt;p&gt;I currently love working with &lt;strong&gt;Visual Studio Code&lt;/strong&gt;, so what really interested me&lt;br/&gt;&#10;was integrating Claude via a plugin.&lt;/p&gt;&lt;p&gt;And now I have this setup:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;VS Code&lt;/li&gt;&lt;li&gt;An Ansible playbook&lt;/li&gt;&lt;li&gt;8 roles&lt;/li&gt;&lt;li&gt;A chat editor directly connected to Claude&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Which basically means: the AI is now sitting right inside my dev environment.&lt;br/&gt;&#10;Not watching… totally not watching… 👀&lt;/p&gt;&lt;/section&gt;&#10;&lt;section style="margin-top: 18px;"&gt;&lt;h2&gt;🚀 The Experiment&lt;/h2&gt;&lt;p&gt;I wrote into the chat:&lt;/p&gt;&lt;blockquote style="padding: 12px; background: #f7f7f7; border-left: 4px solid #7f8c8d; border-radius: 8px;"&gt;&lt;p&gt;“Optimize my Ansible code, apply best practices…”&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="font-size: 20px; font-weight: bold; color: #e74c3c;"&gt;…and BÄÄÄMM!! 💥&lt;/p&gt;&lt;p&gt;The thing has been grinding away for minutes now — finding one issue after another.&lt;br/&gt;&#10;Claude basically has full access to the Ansible codebase and is tearing through it like a senior DevOps engineer on caffeine. ☕🐧&lt;/p&gt;&lt;p&gt;Slightly terrifying. Slightly impressive. Definitely nerd-satisfying.&lt;/p&gt;&lt;/section&gt;&#10;&lt;section style="margin-top: 18px;"&gt;&lt;h2&gt;😱 Meanwhile, In My Head… (The Nerd Image Vibes)&lt;/h2&gt;&lt;p&gt;If I had to visualize this moment, it would look exactly like that image:&lt;/p&gt;&lt;p&gt;A slightly panicking nerd in a server room, sweating, clutching his laptop,&lt;br/&gt;&#10;while an evil-looking AI watches him intensely from a glowing screen.&lt;/p&gt;&lt;p&gt;And yes — he’s still wearing sunglasses. Indoors. At night. In a server room. 😎&lt;/p&gt;&lt;p&gt;Because when an AI starts reviewing your infrastructure code,&lt;br/&gt;&#10;you either:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;stay cool&lt;/li&gt;&lt;li&gt;pretend you planned everything&lt;/li&gt;&lt;li&gt;or whisper: &lt;em&gt;“Please don’t read my TODO comments…”&lt;/em&gt; 😬&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The vibe is somewhere between:&lt;br/&gt;&#10;&lt;span style="background: #fff3cd; padding: 3px 6px; border-radius: 6px;"&gt;“This is amazing”&lt;/span&gt;&lt;br/&gt;&#10;and&lt;br/&gt;&#10;&lt;span style="background: #ffe6e6; padding: 3px 6px; border-radius: 6px; color: #c0392b;"&gt;&lt;br/&gt;&#10;“Oh no… it sees everything.”&lt;br/&gt;&#10;&lt;/span&gt;&lt;/p&gt;&lt;/section&gt;&#10;&lt;section style="margin-top: 18px;"&gt;&lt;h2&gt;⏳ Letting It Cook&lt;/h2&gt;&lt;p&gt;For now, I’m just letting Claude do its thing.&lt;/p&gt;&lt;p&gt;Tomorrow I’ll go through the code, check the optimizations, and see:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;how good the improvements actually are&lt;/li&gt;&lt;li&gt;whether I still understand my own infrastructure&lt;/li&gt;&lt;li&gt;and if not… I’ll just have Claude generate documentation and explanations too 😄&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Because why panic when you can automate your understanding?&lt;/p&gt;&lt;p&gt;&lt;img alt="VS Code with Claude Code assisting on an infrastructure repository" class="alignnone size-full wp-image-947" height="1048" src="https://www.apt-upgrade.me/wp-content/uploads/2026/02/vss_code_screenshot-1.webp" width="1854"/&gt;&lt;/p&gt;&lt;/section&gt;&#10;&lt;footer style="margin-top: 24px; padding-top: 14px; border-top: 1px solid #e5e5e5; color: #555;"&gt;&lt;p style="margin: 0;"&gt;&lt;strong&gt;Nerd conclusion:&lt;/strong&gt;&lt;br/&gt;&#10;AI writes code, fixes code, explains code… and quietly judges your old code. 🤖👀&lt;/p&gt;&lt;p style="margin: 6px 0 0 0;"&gt;Next step: see whether Claude becomes my new DevOps co-pilot — or my future replacement. 😅&lt;/p&gt;&lt;/footer&gt;&#10;&lt;/article&gt;</description></item><item><title>Debian 13 Upgrade Adventure – With a Little Help from ChatGPT 🐧🤖</title><link>https://www.apt-upgrade.me/2025/08/20/debian-13-upgrade-adventure-with-a-little-help-from-chatgpt-%F0%9F%90%A7%F0%9F%A4%96/</link><pubDate>Wed, 20 Aug 2025 17:51:14 +0200</pubDate><guid>https://www.apt-upgrade.me/2025/08/20/debian-13-upgrade-adventure-with-a-little-help-from-chatgpt-%F0%9F%90%A7%F0%9F%A4%96/</guid><description>&lt;p&gt;So today I did something both brilliant &lt;em&gt;and&lt;/em&gt; borderline reckless: I asked ChatGPT to whip up a &lt;strong&gt;Bash script&lt;/strong&gt; that upgrades a &lt;strong&gt;Debian 12&lt;/strong&gt; system to the fresh new &lt;strong&gt;Debian 13&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;Yes, I know, trusting an AI with my beloved Linux distro is basically the sysadmin equivalent of “hold my beer.” 🍺&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="the-setup"&gt;The Setup&lt;/h2&gt;&#10;&lt;p&gt;I played it safe (well, &lt;em&gt;safe-ish&lt;/em&gt;). First, I spun up a VM, made a backup (because… duh), and then unleashed the script. To my mild surprise and great relief, it actually worked. The thing ran in &lt;strong&gt;interactive mode&lt;/strong&gt;, threw a couple of “Are you sure, human?” type questions my way (I think two or three), then rebooted the machine.&lt;/p&gt;</description></item></channel></rss>