Alle Beiträge von Michael Kofler

Hetzner: Preisgünstig oder billig?

Meine Website kofler.info läuft in einer virtuellen Maschine. Und diese VM läuft wiederum auf einem Root-Server bei Hetzner. Seit ca. 4 Jahren, störungsfrei. Als Virtualisierungssystem verwende ich KVM. Auf dem Root-Server laufen auch andere VMs, die ich für die Arbeit an meinen Büchern sowie für den Unterricht an der Fachhochschule brauche.

Das Setup hat sich in den letzten 15 Jahren immer wieder gewandelt, dennoch ich bin Hetzner treu geblieben (auch in anderen beruflichen Projekten). Dass ich mich vor 15 Jahren gerade für Hetzner entschieden habe, war Zufall. Danach sah ich keinen Grund für einen Wechsel. Bis vor einer Woche. Und das ist eine etwas längere Geschichte.

Hetzner: Preisgünstig oder billig? weiterlesen

labwc ist der neue Wayland-Compositor für Raspberry Pi OS

Raspberry Pi OS »Bookworm« verwendet bekanntlich auf den Modellen 4* und 5 standardmäßig Wayland. Dabei kam als sogenannter »Compositor« das Programm Wayfire zum Einsatz. (Der Compositor ist unter anderem dafür zuständig, Fenster am Bildschirm anzuzeigen und mit einem geeigneten Fensterrahmen zu dekorieren.)

Mit dem neuesten Update von Raspberry Pi OS ändern sich nun zwei Dinge:

  • Anstelle von Wayfire kommt ein anderer Compositor zum Einsatz, und zwar labwc (GitHub).
  • Wayland kommt auf allen Raspberry Pis zum Einsatz, auch auf älteren Modellen.

labwc ist der neue Wayland-Compositor für Raspberry Pi OS weiterlesen

📚 Coding mit KI

Ein halbes Jahr lang haben wir zu dritt intensiv getestet:

  • Was ist möglich?
  • Was ist sinnvoll?
  • Welche Anwendungsfälle gibt es, die über das reine Erstellen von Code hinausgehen?
  • Wo liegen die Grenzen?
  • Was sind die Risken?
  • Ist der KI-Einsatz ethisch vertretbar?

Wir haben mit ChatGPT und Claude gearbeitet und deren Ergebnisse mit lokalen Sprachmodellen (via Ollama, GPT4All, Continue, Tabby) verglichen. Wir haben Llama, Mistral/Mixtral, CodeLlama, Starcoder, Gemma und andere »freie« Sprachmodelle ausprobiert. Wir haben nicht nur Pair Programming getestet, sondern haben die KI-Werkzeuge auch zum Debugging, Refactoring, Erstellen von Unit-Tests, Design von Datenbanken, Scripting sowie zur Administration eingesetzt. Dabei haben wir mit verschiedenen Prompt-Formulierungen experimentiert und geben dazu eine Menge Tipps.

Der nächste Schritt beim Coding mit KI sind semi-selbstständige Level-3-Tools. Also haben wir uns OpenHands und Aider angesehen und waren von letzterem ziemlich angetan. Wir haben die Grenzen aktueller Sprachmodelle mit Retrieval Augmented Generation (RAG) und Text-to-SQL verschoben. Wir haben Scripts entwickelt, die mit KI-APIs kommunizieren und automatisiert dutzende oder auch hunderte von Code-Dateien verarbeiten.

Kurz und gut: Wir haben uns das Thema »Coding mit KI« so gesamtheitlich wie möglich angesehen und teilen mit Ihnen unsere Erfahrungen. Die Quintessenz ist vielleicht ein wenig banal: Es kommt darauf an. In vielen Fällen haben wir sehr gute Ergebnisse erzielt. Oft sind wir aber auch an die Grenzen gestoßen — umso eher, je spezieller die Probleme, je exotischer die Programmiersprachen und je neuer die genutzten Sprach-Features/Frameworks/Bibliotheken sind.

Was bleibt, ist die Überzeugung, dass an KI-Tools in der Software-Entwicklung kein Weg vorbei geht. Wer KI-Tools richtig einsetzt, spart Zeit, kürzer lässt es sich nicht zusammenfassen. Aber wer sie falsch einsetzt, agiert unverantwortlich und produziert fehlerhaften und unwartbaren Code!

Mehr Details zum (Vorwort, Leseprobe) finden Sie hier.

Ubuntu 24.10

Eigentlich hatte ich nicht vorgehabt, über Ubuntu 24.10 zu schreiben. Es ist kein LTS-Release, dramatische Neuerungen gibt es auch nicht. Aber dann ergab sich überraschend die Notwendigkeit, eine native Ubuntu-Installation auf meinem Notebook (Lenovo P1 gen1) durchzuführen. Außerdem feiert Ubuntu den 20. Geburtstag.

Also habe ich doch ein paar Worte (gar nicht so wenige) zum neuesten Release geschrieben. Der Text ist launiger geworden als beabsichtigt. Er konzentriert sich ausschließlich auf die Desktop-Nutzung, also auf Ubuntu für Büro-, Admin- oder Entwicklerrechner. Der Artikel bringt auch ein wenig meinen Frust zum Ausdruck, den ich mit Linux am Desktop zunehmend verspüre.

Ubuntu 24.10 weiterlesen

Ubuntu 24.04 mit UTM unter macOS ausführen

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I: im Windows Subsystem for Linux (WSL)
  • Teil II: mit VirtualBox (Windows mit Intel/AMD-CPU)
  • Teil III (dieser Text): mit UTM (macOS ARM)

In diesem Artikel gehe ich davon aus, dass Sie einen Mac mit ARM-CPU (M1, M2 usw.) verwenden. Für ältere Modelle mit Intel-CPUs gelten z.T. andere Details, auf die ich hier nicht eingehe. Insbesondere müssen Sie dann eine ISO-Datei für x86-kompatible CPUs verwenden, anstatt, wie hier beschrieben, eine ARM-ISO-Datei!

Ubuntu 24.04 mit UTM unter macOS ausführen weiterlesen

Ubuntu 24.04 in VirtualBox ausführen

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I: im Windows Subsystem for Linux (WSL)
  • Teil II (dieser Text): mit VirtualBox (Windows mit Intel/AMD)
  • Teil III: mit UTM (macOS ARM)

Ubuntu 24.04 in VirtualBox ausführen weiterlesen

Ubuntu 24.04 im Windows Subsystem for Linux (WSL)

Vielleicht wollen oder können Sie Ubuntu nicht direkt auf Ihr Notebook oder Ihren PC installieren. Dennoch interessieren Sie sich für Linux oder brauchen eine Installation für Schule, Studium oder Software-Entwicklung. Diese Artikelserie fasst drei Wege zusammen, Ubuntu 24.04 virtuell zu nutzen:

  • Teil I (dieser Text): im Windows Subsystem for Linux (WSL)
  • Teil II: mit VirtualBox (Windows mit Intel/AMD)
  • Teil III: mit UTM (macOS ARM): mit UTM (macOS ARM)

Ubuntu 24.04 im Windows Subsystem for Linux (WSL) weiterlesen

GPIO-Ärger auf dem Raspberry Pi 5

(Aktualisiert 13.9.2024) Mit der Auslieferung des Raspberry Pi 5 im Herbst 2024 hat sich bei einigen Low-Level-Tools der GPIO-Zugriff geändert: Für die Modelle bis einschließlich Raspberry Pi 4 erfolgt der GPIO-Zugriff über chip0 bzw. /dev/gpiochip0. Beim Raspberry Pi musste dagegen chip4 bzw. /dev/gpiochip4 verwendet werden. Scripts, die universell auf alten und neuen Geräten laufen sollten, brauchten eine entsprechende Fallunterscheidung.

Mit Kernel 6.6.47, der mittlerweile standardmäßig als Update unter Raspberry Pi OS installiert wird, ändert sich wieder alles! Auch beim Raspberry Pi 5 muss nun /dev/gpiochip0 verwendet werden. Eine Referenz aller internen GPIO-Nummern gibt cat /sys/kernel/debug/gpio.

Die Änderung betrifft unter anderem:

  • Python: gpiozero, lgpio, gpiod
  • Bash: gpioset, gpioget
  • C: lgpio, libgpiod, wiringpi

Scripts, die mit diesen Modulen bzw. Bibliotheken verfasst wurden, müssen geändert werden (Umstellung von GPIO-Chip 4 auf GPIO-Chip 0). Im Folgenden habe ich diesbezüglich Anleitungen für diverse Fälle zusammengefasst.

13.9.2024: Mit dem neuesten Update von Raspberry Pi OS wird ein Link von /dev/gpiochip4 auf /dev/gpiochip0 eingerichtet, wodurch die Auswirkungen des veränderten Kernels in den meisten Fällen nicht mehr spürbar sind.

ls -l /dev/gpiochip*

crw-rw---- 1 root gpio 254,  0 13. Sep 08:39 /dev/gpiochip0
crw-rw---- 1 root gpio 254, 10 13. Sep 08:39 /dev/gpiochip10
crw-rw---- 1 root gpio 254, 11 13. Sep 08:39 /dev/gpiochip11
crw-rw---- 1 root gpio 254, 12 13. Sep 08:39 /dev/gpiochip12
crw-rw---- 1 root gpio 254, 13 13. Sep 08:39 /dev/gpiochip13
lrwxrwxrwx 1 root root       9 13. Sep 08:39 /dev/gpiochip4 -> gpiochip0

Von gpiozero gibt es mittlerweile eine aktualisierte Version, die das richtige Chip-Device erkennt.

GPIO-Ärger auf dem Raspberry Pi 5 weiterlesen

Ubuntu-Server-Upgrade von 22.04 auf 24.04

Generell lautet ja meine Empfehlung, bei produktiven Servern niemals ein Distributions-Upgrade durchzuführen, als z.B. ohne Neuinstallation von Ubuntu 22.04 auf 24.04 umzustellen. Manchmal halte ich mich aber selbst nicht an diese Regel. Testobjekt war ein Server mit Apache, MySQL, PHP, Mail (Postfix, Dovecot, OpenDKIM) und Docker.

Natürlich gab es Schwierigkeiten …

Fairerweise muss ich zugeben, dass do-release-upgrade noch gar kein Server-Update auf Version 24.04 vorsieht. Das ist ein wenig überraschend, als Ubuntu 24.04.1 ja bereits freigegeben wurde. Normalerweise ist das der Zeitpunkt, ab dem do-release-upgrade funktionieren sollte. Ich habe das Upgrade mit do-release-upgrade -d erzwungen. Selbst schuld also.

Update: Canonical rät aktuell wegen APT-Problemen explizit davon ab, Upgrades von 22.04 auf 24.04 durchzuführen (siehe https://lists.ubuntu.com/archives/ubuntu-release/2024-September/006225.html).

Ubuntu-Server-Upgrade von 22.04 auf 24.04 weiterlesen

Aider — Sieht so die Zukunft des Codings aus?

Bei der Arbeit für unser KI-Buch bin ich kürzlich über Aider gestolpert. Dabei handelt es sich um ein Konsolenwerkzeug zum Coding. Im Gegensatz zu anderen Tools (ChatGPT, GitHub Copilot etc.), die Sie beim Coding nur unterstützen, ist Aider viel selbstständiger: Sie sagen, was Ihr Programm machen soll. Aider erzeugt die notwendigen Dateien, implementiert die Funktion und macht gleich einen git-Commit. Sie testen den Code, optimieren vielleicht ein paar Details, dann geben Sie Aider weitere Aufträge. Den Großteil der Coding-Aufgaben übernimmt Aider. Sie sind im Prinzip nur noch für das Ausprobieren und Debugging zuständig.

Wie Sie gleich sehen werden, funktioniert das durchaus (noch) nicht perfekt. Aber das Konzept ist überzeugend, und es ist verblüffend, wie viel schon klappt. Aider kann auch auf ein bestehendes Projekt angewendet werden, das ist aber nicht Thema dieses Blog-Beitrags. Generell geht es mir hier nur darum, das Konzept vorzustellen. Viel mehr Details können Sie in der guten Dokumentation nachlesen. Es gibt auch diverse YouTube-Videos. Besonders überzeugend fand ich Claude 3.5 and Aider: Use AI Assistants to Build AI Apps.

Aider — Sieht so die Zukunft des Codings aus? weiterlesen