Künstliche Intelligenz GPD4all unter Linux installieren

Künstliche Intelligenz ist ein sehr breites Feld, in dem man schnell den Überblick verlieren kann. Large Language Models (LLM), wie ChatGPD verarbeiten natürliche Sprache und können je nach Datenbasis verschiedene Probleme lösen. Neben netten Unterhaltungen, die durchaus therapeutischen Charakter haben können, kann man mit LLM durchaus komplexe Aufgaben bewältigen. Ein solches Szenario wäre das Verfassen von behördlichen Schreiben. In diesem Artikel gehen wir nicht darauf ein, wie Sie die KI nutzen können, sondern erklären Ihnen, wie Sie Ihre eigene KI auf Ihrem Computer lokal installieren können.

Bevor wir ans Eingemachte gehen, beantworten wir die Frage, wozu das Ganze überhaupt nütze ist. Man kann ja problemlos auf die zum Teil kostenlos online verfügbaren KI Systeme zurückgreifen.

Was vielen Menschen nicht bewusst ist, ist die Tatsache, dass alle Anfragen, die man an ChatGPT, DeepSeek und Co. sendet, protokolliert und dauerhaft gespeichert werden. Wie diese Protokollierung im Detail aussieht, können wir nicht beantworten, aber IP Adresse und Nutzeraccount mit der Prompt Anfrage dürften sicherlich zu den minimal erhobenen Daten gehören. Hat man indessen seine eigene KI auf dem lokalen Computer installiert, werden diese Informationen nicht ins Internet übertragen. Zudem kann man so oft man möchte mit der KI interagieren, ohne dass Gebühren erhoben werden.

Für unser Projekt, eine eigene künstliche Intelligenz auf dem eigenen Linux Rechner zu installieren, benötigen wir keine ausgefallene Hardware. Ein handelsüblicher Rechner reicht durchaus. Wie zuvor erwähnt: Als Betriebssystem verwenden wir Linux, da dies viel ressourcenschonender als Windows 10 oder Windows 11 ist. Für den Workshop kann jedes beliebige von Debian abgeleitetes Linux verwendet werden. Debian Derivate sind zum Beispiel Ubuntu und Linux Mint.

Als Arbeitsspeicher sollten mindestens 16 GB (RAM) vorhanden sein. Wer mehr RAM hat, umso besser. Dann läuft die KI viel flüssiger. Als Prozessor (CPU) sollte mindestens ein aktueller i5 / i7 oder AMD Ryzen 5+ verbaut sein. Wenn dann noch eine SSD mit 1 TB Speicher vorhanden ist haben wir das notwendige Setup komplett. Computer / Laptops mit dieser Spezifikation bekommt man schon für kleines Geld gebraucht. Ohne zu viel Werbung machen zu wollen, kann man sich ein wenig bei den gebrauchten Lenovo ThinkPad Laptops umschauen. Aber auch andere Hersteller mit den Mindestanforderungen zur Hardware leisten gute Dienste.

Nachdem die notwendigen Voraussetzungen geklärt sind, machen wir uns zuerst daran, GPT4all auf unserem Rechner zu installieren. Keine Sorge, das ist auch für Anfänger recht leicht zu bewerkstelligen. Es ist kein besonderes Vorwissen notwendig. Beginnen wir damit, die Datei gpd4all.run von der Homepage (https://gpt4all.io/index.html?ref=top-ai-list) herunterzuladen. Ist dies erledigt, machen wir uns daran, die Datei ausführbar (exikutierbar) zu machen.

Wie im Screenshot zu sehen ist, selektieren wir die heruntergeladene Datei mit einem rechts Klick und wählen in dem Menü den Eintrag Eigenschaften aus. Unter dem Reiter Zugriffsrechte setzen wir dann das Häkchen bei Ausführen. Nun kann man die Datei mit dem gewohnten Doppelklick starten, was wir auch sofort tun.

Nun beginnt der Installationsprozess, wo wir unter anderem auswählen können, an welchem Ort GPT4all installiert wird. Bei Linux kommen selbst installierte Programme in der Regel in das Verzeichnis /opt.

Im nächsten Schritt können wir noch eine Desktop-Verknüpfung anlegen. Dazu klicken wir mit der rechten Maustaste in den leeren Desktop und wählen Verknüpfung erstellen. In der aufpoppenden Maske tragen wir nun einen Namen für die Verknüpfung ein z. B. GPT 4 all und setzen den Pfad zur ausführbaren Datei bin/chat und bestätigen mit OK. Nun können wir GPT4all bequem von unserem Desktop aus starten.

Damit GPT4all auch funktioniert, muss ein Modell geladen werden. Wie in den Screenshots zu sehen ist, stehen verschiedene Modelle zur Verfügung. Das Modell muss bei jedem Start des Programms erneut ausgewählt werden. Nun kann die KI lokal auf dem eigenen Rechner genutzt werden.

Bildstrecke:

Andere KI Systeme sind unter anderem:

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Privatsphäre mit Kodachi Linux im Internet zurückgewinnen

Windows 11 integriert eine ominöse History-Funktion, bei der sämtliche Interaktionen mit dem Computer aufgezeichnet und aller Wahrscheinlichkeit per Telemetrie an Microsoft übertragen werden. Aber auch die unzähligen durch die EU beschlossenen und von Deutschland umgesetzten Gesetze zur Überwachung der Bürger geben vielen Anlass, über das Thema Datenschutz und Privatsphäre neu nachzudenken. Unsere Welt ist stetig im Wandel und die digitale Welt verändert sich um einiges schneller. Es liegt an jedem Einzelnen, wie er oder sie mit diesen Veränderungen umgehen möchte. Dieser Artikel soll dazu anregen, sich ein wenig mehr mit Linux und Sicherheit zu beschäftigen. Vielleicht bekommen Sie ja auch gleich Lust, das hier vorgestellte Kodachi Linux einmal selbst auszuprobieren. Es gibt mehrere Wege, wie Sie Kodachi Linux ausprobieren können.

  1. Virtuelle Maschine: Erstellen Sie einfach mit der ISO‑Datei und dem Programm VirtualBox oder VMWare eine Virtuelle Maschine mit Kodachi Linux. Diese virtuellen Maschinen können Sie auch von einem Windows-Rechner aus erstellen und verwenden.
  2. Booten vom USB-Stick: Tools wie Disks (Linux) oder Rufus (Windows) erlauben es, bootfähige USB‑Sticks zu erstellen. Auf diese Art und Weise können Sie Ihren PC direkt von USB mit Kodachi starten, ohne dass das auf der Festplatte installierte Betriebssystem davon beeinflusst wird.
  3. Native Installation: Sie können den bootfähigen USB-Stick auch dazu verwenden, Kodachi Linux dauerhaft auf Ihrem Computer zu installieren. Diese Methode ist dann zu empfehlen, wenn Sie bereits Erfahrungen mit Kodachi gesammelt haben.

Kodachi OS ist, wie der Name schon vermuten lässt, eine japanische Linux-Distribution mit einem angepassten XFCE Desktop. Kodachi sind eigentlich klassische japanische Samurai-Schwerter, was bereits einen Bezug auf das Thema Sicherheit hinleitet. Kodachi OS selbst ist ein Xubuntu Derivat und somit ein Enkel von Ubuntu und ein Urenkel von Debian Linux. Kodachi Linux bietet eine hoch-sichere, anti-forensische und anonyme Computerumgebung. Es wurde mit Blick auf eine sichere Privatsphäre konzipiert. Alle notwendigen Funktionen, um Vertraulichkeit und Sicherheit der Benutzer zu gewährleisten, sind enthalten. Kodachi ist benutzerfreundlich und eignet sich auch für Linux-Neulinge und Windows-Umsteiger. Zu Testzwecken können Sie das System von einem USB-Stick starten und Sie haben ein voll funktionsfähiges Betriebssystem mit:

  • automatisch etablierte VPN Verbindung
  • vorkonfigurierte TOR Verbindung
  • laufendem DNSCrypt Dienst

Die aktuelle Version von Kodachi kann kostenfrei auf der Homepage [1] heruntergeladen werden. Mit der heruntergeladenen ISO können sie nun entweder eine bootfähigen USB Stick erstellen oder Kodachi in eine Virtuelle Maschine installieren. Wir haben uns für die Variante mit VMWare eine virtuelle Maschine zu erstellen entschieden.

Die Installation ist dank dem VM Ware Ubuntu Template in wenigen Minuten erledigt. Für unseren Test haben wir der VM 20 GB Festplattenspeicher spendiert. Damit das ganze füssig läuft haben wir den RAM auf 8 GB angehoben. Wer nicht so viel RAM zu Verfügung hat kann auch mit 4 GB arbeiten. Nach dem Start der VM sehen Sie das Kodachi OS Desktop wie im untenstehende Screenshot in der Version 8.27. Für alle Linux Nerds sei noch erwähnt das diese Version den Kernel 6.2 verwendet. Laut der Homepage wird bereits fleißig an der neuen Version 9 gearbeitet.

Da die Installation auch für Anfänger möglichst einfach gehalten ist, wurden bereits Benutzerkonten eingerichtet. Der Benutzer lautet kodachi und hat das Passwort r@@t00 (00 sind Nullen). Der Administrator-Account heißt wie unter Linux üblich root und hat ebenfalls das Passwort r@@t00. Wer sich dafür entscheidet, Kodachi fest auf seiner Maschine zu installieren, sollte mindestens die Passwörter ändern.



Eine möglichst hohe Anonymität erreicht man leider nur auf Kosten der Surfgeschwindigkeit. Kodachi Linux bietet daher für unterschiedliche Anforderungen mehrere Profile, zwischen denen gewählt werden kann.

  1. Maximale Anonymität (langsamer)
    • ISP → Router VPN → Kodachi VPN (VM NAT) → Torified System → Tor DNS → Kodachi geladener Browser
  2. Hoch anonym (langsam)
    • ISP → Kodachi VPN → TOR-Endpunkt → Tor DNS → Kodachi geladener Browser
  3. Anonym & Schnell
    • ISP → Kodachi VPN → TOR-Endpunkt → Tor DNS → Kodachi lite Browser
  4. Mäßige Anonymität
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Tor DNS → Kodachi geladener Browser
  5. Standard Anonymität
    • ISP → Kodachi VPN → Torified System → Tor DNS → Kodachi geladener Browser
  6. Verbesserte Anonymität mit Double TOR
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Tor-Browser → Tor-Browser
  7. Double TOR Alternative
    • ISP → Kodachi VPN → Tor-Browser → Tor-Browser → Tor DNS
  8. Hochsicheres Setup
    • ISP → Host-Maschine (XMR VPN) → Kodachi VPN (VM) mit erzwungenem VPN-Verkehr → Kodachi-Browser → Dnscrypt
  9. Sicher und schnell
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Kodachi geladener Browser → Dnscrypt
  10. Erhöhte Sicherheit
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Kodachi geladener Browser → Tor DNS
  11. Hochgeschwindigkeit und Sicherheit
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Kodachi lite Browser → Tor DNS
  12. Doppelsicherung mit Dnscrypt
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Tor-Browser → Dnscrypt
  13. Doppelsicherung mit Tor DNS
    • ISP → Kodachi VPN mit erzwungenem VPN-Verkehr → Tor-Browser → Tor DNS

Kommen wir nun zur Bedienung von Kodachi. Dazu rufen wir das Dashboard auf, das wir auf dem Desktop als Verknüpfung finden. Nach dem Start sehen wir verschiedene Reiter wie VPN, TOR und Settings. Unter Settings haben wir die Möglichkeit, mehrere Profile zu aktivieren, die für Sicherheit und Datenschutz im Internet relevant sind. Wie im unten stehenden Screenshot zu sehen ist, wählen wir Level 1 aus und aktivieren das Profil.

Im unteren Panel finden sich im Abschnitt Security Services verschiedene Dienste wie beispielsweise GnuNet, die sich zuschalten lassen. Hier gibt es mehrere Optionen, die problemlos ausprobiert werden können. GnuNet leitet etwa den gesamten Traffic ins TOR-Netzwerk um. Das hat natürlich zur Folge, dass die Seiten länger brauchen, bis sie vollständig geladen werden.

Mit den Bordmitteln von Kodachi Linux können Sie Ihre Sicherheit und Anonymität beim Surfen im Internet erheblich verbessern. Auch wenn die Benutzung am Anfang etwas ungewöhnlich ist, findet man sich schnell hinein. Wenn Sie sich für die Verwendung als Live-System oder virtuelle Maschine entscheiden, können Sie sich problemlos mit den verschiedenen Programmen und Einstellungen vertraut machen, ohne das Gastbetriebssystem zu beschädigen. Gerade als Anfänger nimmt die Benutzung einer VM die Angst, beim Ausprobieren der verschiedenen Konfigurationen etwas kaputtzumachen.

Wer sich ein wenig zu Kodachi Linux im Internet umschaut, findet auch schnell einen Artikel [2] aus 2021, der sich durchaus kritisch zu Kodachi äußert. Die Hauptkritik bezieht sich darauf, dass Kodachi eher als Ubuntu Distro mit einem angepassten Look and Feel zu betrachten ist, das mit ein paar Shell Scripten aufgepeppt ist, als ein eigenständiges Linux. So ganz von der Hand zu weisen ist diese Kritik nicht. Wer sich etwas genauer mit der Kritik beschäftigt, stellt fest, dass Kadochi durchaus einige praktische Anonymisierungs-Features aufweist. Dennoch ist es wohl weit davon entfernt, eine sogenannte Hackers Toolbox zu sein. Der Autor der Kritik hat sich 2025 [3] Kadochi noch einmal vorgenommen und hat auch für die aktuelle Version kein anderes Fazit als bereits 2021. Ob die anstehende Version 9 des Kadochi Linux sich die angemerkten Punkte zu Herzen nimmt, bleibt abzuwarten.

Resources

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

User Tracking und Shadowbanned

Der Wunsch von Webseitenbetreibern, möglichst viele Informationen über ihre Nutzer zu bekommen, ist so alt wie das Internet selbst. Einfache Zähler für Seitenaufrufe oder das Erkennen des Webbrowsers und der Bildschirmauflösung sind dabei die einfachsten Anwendungsfälle des Usertrackings. Mittlerweile sind die Betreiber von Internetseiten nicht mehr alleine auf Google angewiesen, um Informationen über ihre Besucher zu sammeln. Es gibt ausreichend kostenlose Werkzeuge, um einen eigenen Tracking-Server zu unterhalten. In diesem Artikel gehe ich ein wenig auf die historischen Hintergründe, Technologien und gesellschaftlichen Aspekte ein.

Als um die Jahrtausendwende immer mehr Unternehmen den Weg in die Weiten des WWW fanden, begann das Interesse, mehr über die Besucher der Homepages herauszufinden. Anfänglich begnügte man sich damit, auf der Startseite sogenannte Besucherzähler zu platzieren. Nicht selten wurden recht abenteuerliche Zahlen von diesen Besucherzählern angezeigt. Sicher spielte das Ego der Webseitenbetreiber auch eine Rolle dabei, denn viele Besucher auf der Homepage wirken nach außen und machen auch ein wenig Eindruck auf die Besucher. Wer allerdings ernsthaft über seine Webseite Geld verdienen wollte, merkte recht schnell, das fiktive Zahlen keinen Umsatz generieren. Also brauchte man verlässlichere Möglichkeiten.

Damit Nutzer nicht jedes Mal beim Aufrufen der Startseite mehrfach gezählt wurden, begann man damit, die IP-Adresse zu speichern, und setzte einen Timeout von einer Stunde, bevor wieder gezählt wurde. Das nannte sich dann Reloadsperre. Natürlich war das keine sichere Erkennung. Denn zu dieser Zeit waren Verbindungen über das Telefonnetz per Modem üblich und es kam öfter vor, dass die Verbindung abbrach und man sich neu einwählen musste. Dann gab es auch eine neue IP-Adresse. Die Genauigkeit dieser Lösung hatte also noch viel Potenzial nach oben.

Als um circa 2005 Webspace mit PHP und MySQL-Datenbanken bezahlbar wurde, ging man dazu über, die besuchten Seiten in kleinen Textdateien, den sogenannten Cookies, im Browser zu speichern. Diese Analysen waren schon sehr aussagefähig und haben den Unternehmen geholfen zu sehen, welche Artikel die Leute interessieren. Dumm war nur, wenn argwöhnische Nutzer bei jeder Gelegenheit ihre Cookies löschten. Deshalb ist man dazu übergegangen, alle Requests auf dem Server zu speichern, in sogenannten Sessions. In den meisten der Anwendungsfälle genügt die dadurch erzielte Genauigkeit, um das Angebot besser an die Nachfrage anzupassen.

Ein verbreitetes Werkzeug für Nutzertracking ist das in PHP geschriebene Matomo. Mit dieser selbst gehosteten Open Source Software kann man Google umgehen und erreicht auch eine bessere DSGVO-Konformität, da die erhobenen Daten nicht an Dritte weitergegeben werden. Zudem können personalisierte Daten nach einem festgelegten Zeitraum, zum Beispiel bei Monatsbeginn, anonymisiert werden. In diesem Fall werden Informationen wie IP-Adressen gegen zufällige Identifier ausgetauscht.

Das ganze Thema wird sofort auf ein ganz anderes Niveau gehoben, wenn Geld mit im Spiel ist. Früher waren das Firmen, die auf gut besuchten Internetseiten Werbebanner platzierten und dann pro 1000 Anzeigen einen kleinen Betrag bezahlt haben. Heutzutage sind Streamingdienste wie Spotify oder YouTube daran interessiert, exakt zu ermitteln, wie oft ein bestimmter Inhalt, beziehungsweise wie lange ein Titel angeschaut wurde. Denn in dem Moment, in dem Geld im Spiel ist, gibt es ein großes Interesse, mit kleinen oder großen Tricksereien sich ein wenig mehr Geld zu ergaunern, als einem eigentlich zustehen würde. Ebendarum sind Firmen wie Google und Co. stetig damit beschäftigt, herauszufinden, wie viele Nutzer die Inhalte wie lange konsumieren. Neben Trackingfunktionen in den Anwendungen nutzen diese Unternehmen auch ein komplexes Monitoring, das auf Originaldaten der Serverlogs und des Netzwerkverkehrs zugreifen kann. Hier kommen Tools wie der ELK-Stack oder Prometheus und Grafana ins Spiel.

Wenn wir als Beispiel einmal YouTube herausgreifen, hat dieser Dienst einige Hürden zu meistern. Viele nutzen YouTube als TV‑Ersatz, da sie aus einem enormen Fundus an Content die Dinge selbst heraussuchen können, die sie interessieren. Ein typisches Szenario ist das stundenlange automatische Abspielen von Ambientmusik. Wenn ausreichend viele Personen so etwas tun, ohne wirklich den Inhalten Aufmerksamkeit zu schenken, belastet das nur sinnlos die Serverinfrastruktur und verursacht für den Betreiber erhebliche Kosten. Auch diese automatische Autoplay-Funktion in der Vorschau ist noch keine wirkliche Interaktion und eher als Teaser gedacht.

Um die Nutzer in ständiger Aktion zu halten, gibt es aktuell zwei Strategien. Eine davon sind kurze Videos, die so lange in einer Endlosschleife laufen, bis man manuell zum nächsten übergeht. So kann man einerseits kurze Werbevideos untermischen, aber auch Nachrichten oder Meinungen platzieren. Natürlich muss das Usertracking bei einem Endlosdurchlauf eines monetarisierten Shorts die Wiederholungen herausnehmen. Das führt natürlich zu Korrekturen der Impressionen-Anzeige. Eine andere sehr exzessiv eingesetzte Strategie bei langen Videos ist das unverhältnismäßig langer Werbeunterbrechungen in relativ kurzen Abständen. Was die Nutzer dazu nötigt, diese Werbung jedes Mal aktiv wegzuklicken und somit Aufmerksamkeit abverlangt.

Nun gibt es Themen, bei denen Dienste wie YouTube, aber auch X oder Facebook Interesse daran haben, ihre Nutzer in eine bestimmte Richtung zu beeinflussen. Das kann die Bildung von Meinungen zu politischen Themen sein oder einfach Kommerz. Jetzt könnte man meinen, es wäre eine gängige Strategie, die Sichtbarkeit unerwünschter Meinungen zu unterdrücken, indem man die Aufrufzahlen der Beiträge nach unten korrigiert. Das wäre allerdings nicht förderlich, den die Leute haben den Beitrag ja dann bereits gesehen. Daher ist eine andere Strategie viel zielführender. Im ersten Schritt würde der Kanal oder der Beitrag von der Monetarisierung ausgenommen, so erhält der Betreiber keine zusätzliche Vergütung. Im nächsten Schritt erhöht man die Zahl der Aufrufe, so das der Content Creator im Glauben ist ein breites Publikum zu erreichen, und weniger Maßnahmen unternimmt, mehr Sichtbarkeit zu erlangen. Zusätzlich lassen sich die Aufrufe von Inhalten mit Methoden aus DevOps wie dem A/B Testing unter Verwendung von Feature Flags und Load Balancern nur die Personen auf die Beiträge leiten, die explizit danach suchen. So erweckt man keinen Verdacht, Zensur auszuüben, und die Sichtbarkeit ist signifikant reduziert. Natürlich tauchen unerwünschte Beiträge nur bei den Personen in den Empfehlungen auf, die Kanäle explizit abonniert haben.

In der Netflix-Produktion ‚Das Dilemma mit den sozialen Medien‘ wird zudem beklagt, dass sich Blasen bilden, in denen sich Personen mit bestimmten Interessen sammeln. Dies ist ein Effekt sogenannter Recommender-Systeme. Diese Empfehlungsgeber sind Algorithmen aus dem Bereich der künstlichen Intelligenz. Diese funktionieren recht statisch über statistische Auswertungen. Vorhandene Inhalte werden in Kategorien klassifiziert und anschließend wird geschaut, welche Personengruppen mit welcher Gewichtung Interesse an einer bestimmten Kategorie haben. Entsprechend werden dann Inhalte im Verhältnis der Interessen aus dieser Kategorie ausgespielt. Die so erfassten Inhalte können natürlich problemlos mit zusätzlichen Labels wie „gut geeignet“ oder „ungeeignet“ markiert werden. Entsprechend der Meta-Markierungen können dann unerwünschte Inhalte in den Tiefen der Datenbasis verschüttet werden.

Damit diese ganzen Maßnahmen auch richtig greifen können, ist es wiederum notwendig, möglichst viele Informationen über die Nutzer zu sammeln. So schließt sich wiederum der Kreis zum Usertracking. Das Tracking ist mittlerweile so ausgefeilt, dass Browsereinstellungen, die regelmäßig Cookies löschen, oder das grundsätzliche Nutzen des Inkognito-Modus vollständig wirkungslos sind.

Die einzige Möglichkeit, sich aus der Abhängigkeit der großen Plattformanbieter zu befreien, ist die bewusste Entscheidung, dies möglichst nicht mehr mit Inhalten zu versorgen. Ein Schritt in diese Richtung wäre das Betreiben einer eigenen Homepage mit entsprechendem eigenen Monitoring für das Usertracking. Umfangreiche Inhalte wie Video und Audio können auf mehrere unbekannte Plattformen ausgelagert werden und in die Homepage embedded werden. Hier sollte man auch nicht alle Inhalte auf einer einzigen Plattform wie Odysee oder Rumble hochladen, sondern die Inhalte geschickt auf mehrere Plattformen verteilen, ohne diese dupliziert zu haben. Solche Maßnahmen binden die Besucher an die eigene Homepage und nicht an die entsprechenden Plattformbetreiber.

Wer etwas mehr finanzielle Freiheit hat, kann auch auf freie Software wie den PeerTube zurückgreifen und eine eigene Videoplattform hosten. Hier gibt es einiges an Möglichkeiten, die allerdings einen hohen Aufwand und einiges an technischem Know-how von den Betreibern abverlangen.


Erfolgreiches Validieren von ISBN Nummern

Regelmäßig stehen Entwickler vor der Aufgabe, Nutzereingaben auf Korrektheit zu prüfen. Mittlerweile existiert eine erhebliche Anzahl an standardisierten Datenformaten, mit denen solche Validierungsaufgaben leicht zu meistern sind. Die International Standard Book Number oder kurz ISBN ist ein solches Datenformat. ISBN gibt es in zwei Ausführungen: in einer zehnstelligen und in einer 13-stelligen Variante. Von 1970 bis 2006 wurde die zehnstellige Version der ISBN verwendet (ISBN-10), die im Januar 2007 von der 13-stelligen Fassung abgelöst wurde (ISBN-13). Heutzutage ist es in vielen Verlagen verbreitete Praxis, für Titel beide Versionen der ISBN bereitzustellen. Dass sich anhand dieser Nummer Bücher eindeutig identifizieren lassen, ist allgemein bekannt. Das bedeutet natürlich auch, dass diese Nummern eindeutig sind. Es gibt also keine zwei unterschiedlichen Bücher mit gleicher ISBN (Bild 1).

Der theoretische Hintergrund, um festzustellen, ob eine Zahlenfolge korrekt ist stammt aus der Codierungstheorie. Wer sich also etwas ausführlicher mit dem mathematischen Hintergrund Fehler-erkennender und Fehler-korrigierender Codes beschäftigen möchte, dem Sei das Buch „Codierungstheorie“ von Ralph Hardo Schulz empfohlen [1]. Darin lernt man beispielsweise, wie die Fehlerkorrektur bei Comact Disks (CD) funktioniert. Aber keine Sorge, wir reduzieren in diesem kleinen Workshop die notwendige Mathematik auf ein Minimum.

Bei der ISBN handelt es sich um einen Fehler erkennenden Code. Wir können also den erkannten Fehler nicht automatisch wieder beheben. Wir wissen nur, dass etwas falsch ist, kennen aber nicht den konkreten Fehler. Gehen wir der Sache daher ein wenig auf den Grund.

Warum man sich bei ISBN-13 genau auf 13 Stellen geeinigt hat, bleibt Spekulation. Zumindest haben sich die Entwickler nicht von irgendwelchem Aberglauben beeindrucken lassen. Das große Geheimnis hinter der Validierung ist die Bestimmung der Restklassen [2]. Die Algorithmen für ISBN-10 und ISBN-13 sind recht ähnlich. Beginnen wir also mit dem älteren Standard, ISBN-10, der sich wie folgt errechnet:

1x1 + 2x2 + 3x3 + 4x4 + 5x5 + 6x6 + 7x7 + 8x8 + 9x9 + 10x10 = k modulo 11

Keine Sorge, um die oben stehende Formel zu verstehen, müssen Sie kein Raketeningenieur bei SpaceX sein. Wir heben den Schleier der Verwirrung anschaulich mit einem kleinen Beispiel für die ISBN 3836278340. Daraus ergibt sich folgende Rechnung:

(1*3) + (2*8) + (3*3) + (4*6) + (5*2) + (6*7) + (7*8) + (8*3) + (9*4) + (10*0) = 220
220 modulo 11 = 0

Die letzte Ziffer der ISBN ist die sogenannte Prüfziffer. In dem aufgeführten Beispiel lautet diese 0. Um diese Prüfziffer zu erhalten, multiplizieren wir jede Stelle mit ihrem Wert. Das heißt, an vierter Position steht eine 6, also rechnen wir 4 * 6. Das wiederholen wir mit allen Positionen und die einzelnen Ergebnisse addieren wir zusammen. So erhalten wir den Betrag 220. Die 220 wird mit der sogenannten Restwertoperation Modulo durch 11 geteilt. Da die 11 genau 20 mal in die 220 hineinpasst, bleibt ein Rest null. Das Ergebnis von 220 modulo 11 ist 0 und stimmt mit der Prüfziffer überein, was uns sagt das eine gültige ISBN-10 vorliegt.

Eine Besonderheit gibt es aber noch zu beachten. Bisweilen kommt es vor, dass die letzte Ziffer der ISBN mit X endet. In diesem Fall ist das X gegen 10 auszutauschen.

Wir sehen, der Algorithmus ist sehr einfach gehalten und kann leicht über eine einfache for-Schleife umgesetzt werden.

boolean success = false;
int[] isbn;
int sum = 0;

for(i=0; i<10; i++) {
    sum += i*isbn[i];
}

if(sum%11 == 0) {
    success = true;
}

Um den Algorithmus so einfach wie möglich zu halten, wird jede Stelle der ISBN-10-Nummer in einem Integer-Array gespeichert. Ausgehend von dieser Vorbereitung ist es nur noch nötig, das Array zu durchlaufen. Wenn dann die Überprüfung der Summe durch das Modulo 11 das Ergebnis 0 liefert, ist alles bestens.

Um die Funktion richtig zu testen, werden zwei Testfälle benötigt. Einerseits gilt es zu überprüfen ob eine ISBN korrekt erkannt wird. Der zweite Test überprüft die sogenannten false positives. Es wird also ein erwarteter Fehler mit einer falschen ISBN provoziert. Das lässt sich zügig bewerkstelligen, indem man von einer gültigen ISBN eine beliebige Stelle ändert.

Unser ISBN-10 Validator hat noch einen kleinen Schönheitsfehler. Ziffernfolgen, die kürzer oder länger als 10 sind, also dem erwarteten Format nicht entsprechen, könnten bereits vorher abgewiesen werden. Der Grund hierfür lässt sich in dem Beispiel erkennen: Die letzte Stelle der ISBN-10 ist eine 0 – somit ist das Zeichenergebnis auch 0. Wird die letzte Stelle also vergessen und eine Prüfung auf das korrekte Format fehlt, wird der Fehler nicht erkannt. Etwas das keine Auswirkung auf den Algorithmus hat, aber sehr hilfreich als Feedback bei Nutzereingaben ist, ist das Eingabefeld so lange auszugrauen und den Absenden-Button zu deaktivieren, bis das korrekte Format der ISBN eingegeben wurde.

Der Algorithmus für ISBN-13 ist ähnlich einfach aufgebaut.

x1 + 3x2 + x3 + 3x4 + x5 + 3x6 + x7 + 3x8 + x9 + 3x10 + x11 + 3x12 + x13 = k modulo 10

Analog wie bei ISBN-10 steht xn für den Zahlenwert an der entsprechenden Position in er ISBN-13. Auch hier werden die Teilergebnisse aufsummiert und durch ein Modulo geteilt. Der große Unterschied ist, dass hier nur die geraden Positionen, also die Stellen 2, 4, 6, 8, 10 und 12, mit 3 multipliziert werden und das Ergebnis dann mit Modulo 10 dividiert wird. Als Beispiel berechnen wir die ISBN-13: 9783836278348.

9 + (3*7) + 8 + (3*3) + 8 + (3*3) + 6 + (3*2) + 7 + (3*8) + 3 + (3*4) + 8 = 130
130 modulo 10 = 0

Auch für die ISBN-13 lässt sich der Algorithmus in einer einfachen for-Schleife umsetzen.

boolean success = false;
int[] isbn;
int sum = 0;

for(i=0; i<13; i++) {
    if(i%2 == 0) {
        sum += 3*isbn[i];
    } else {
        sum += isbn[i];
    }
}

if(sum%10 == 0) {
    success = true;
}

Die beiden Codebeispiele zu ISBN-10 und ISBN-13 unterscheiden sich vor allem in der if-Bedingung. Der Ausdruck i % 2 berechnet den Modulo-Wert 2 zur jeweiligen Iteration. Wenn an dieser Stelle der Wert 0 herauskommt, bedeutet das, dass es sich um eine gerade Zahl handelt. Der dazugehörige Wert muss dann mit 3 multipliziert werden.

Hier zeigt sich wie praktisch die Modulo-Operation % für das Programmieren sein kann. Um die Implementierung möglichst kompakt zu halten, kann anstatt der if-else-Bedingung auch der sogenannte Dreifach-Operator verwendet werden. Der Ausdruck sum += (i%2) ? isbn[i] : 3 * isbn[3] ist wesentlich kompakter, dafür aber auch schwerer zu verstehen.

Nachfolgend finden Sie eine vollständig implementierte Klasse zur Prüfung der ISBN in den Programmiersprachen: Java, PHP und C#.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

Die in den Beispielen vorgestellten Lösungen haben zwar alle denselben Kernansatz, unterscheiden sich aber nicht nur in syntaktischen Details. So bietet die Java-Version eine allumfassende Variante, die etwas generischer zwischen ISBN-10 und ISBN-13 unterscheidet. Das demonstriert zum einen, dass viele Wege nach Rom führen. Soll aber auch gerade weniger erfahrenen Entwicklern verschiedene Lösungsansätze zeigen und sie motivieren, eigene Anpassungen vorzunehmen. Um das Verständnis zu vereinfachen, wurde der Quelltext mit Kommentaren angereichert. Bei PHP, als untypisierte Sprache, entfällt insbesondere das Konvertieren des Strings in Nummern. Dafür wird eine RegEx genutzt, um sicherzustellen, dass die eingegebenen Zeichen typsicher sind.

Lessons Learned

Wie Sie sehen, handelt es sich bei der Überprüfung, ob eine ISBN korrekt ist, um keine Hexerei. Das Thema der Validierung von Benutzereingaben ist natürlich viel umfangreicher. Andere Beispiele sind Kreditkartennummern. Aber auch reguläre Ausdrücke leisten in diesem Zusammenhang wertvolle Dienste.

Ressourcen

  • [1] Ralph-Hardo Schulz, Codierungstheorie: Eine Einführung, 2003, ISBN 978-3-528-16419-5
  • [2] Begriff der Restklasse bei Wikipedia, https://de.wikipedia.org/wiki/Restklasse

Beyond Code: Warum Soft Skills für Entwickler in der KI-Ära unersetzlich werden

KI-Tools wie GitHub Copilot, ChatGPT und andere Code-Generatoren verändern die Entwicklerrolle. Viele Programmierer fragen sich, welche Fähigkeiten in Zukunft noch gefragt werden. KI ersetzt keine Entwickler. Aber Entwickler ohne Soft Skills ersetzen sich selbst.

“Die besten Entwickler 2030 werden keine besserenCodersein – sondern bessere Übersetzer zwischen Mensch und Maschine.”Andrej Karpathy, ex-OpenAI

Im Juni 2025 hat Microsoft 9000 Stellen gestrichen [1]. Unternehmen wie Microsoft, Google oder IBM stellen ihre Teams um – und KI-Tools sind oft Teil der Strategie. Ein Grund für diese Entlassungswellen ist die flächendeckende Verfügbarkeit leistungsfähiger KI Werkzeuge. Laut einer Studie von McKinsey [2] können KI-Systeme bereits bis zu 60% des Developer Arbeitspensums beschleunigen. Wenn KI bis zu 80% des Codings erledigen kann, was macht mich dann noch unersetzlich? Diese zentrale Frage stellen sich mittlerweile immer mehr Menschen, da sie direkt von der 4. industriellen Revolution betroffen sind oder in absehbarer Zeit davon betroffen werden.

Anders als bei früheren Revolutionen gibt es diesmal kein ‚Umschulen auf Webdesign‘. KI-Tools wie Devin oder ChatGPT-Coder automatisieren nicht nur Tasks, sondern ganze Berufsbilder und zwar schneller, als die meisten Betroffenen reagieren können. Studien zeigen: Bis zu 30% aller Entwicklerrollen werden bis 2030 nicht umgewandelt, sondern durch künstliche Intelligenz ersetzt.

Dieser Trend findet sich in fast allen Berufen, auch im klassischen Handwerk. Auf YouTube kann man gezielt nach Videos suchen, wie zum Beispiel in Moskau kleine, niedliche Roboter Bestellungen ausliefern. Oder wie Roboter ganze Häuser ausdrucken. Neue Patente, die Stahlspäne dem Beton zusetzen, erhöhen die Stabilität und ersetzen klassische Eisenflechter. Maschinen, die Bodenfliesen verlegen, sind ebenfalls zu sehen. Die Liste der Tätigkeiten, die durch KI ausgeführt werden können, ist lang.

Wenn man diese Prognose verinnerlicht, kann einem schon angst und bange werden. Um in dieser neuen Zeit nicht nur zu überleben, sondern sogar zu den Gewinnern zu gehören, verlangt ein hohes Maß an Flexibilität. Deswegen wird eine der wichtigsten Eigenschaften, die wir entwickeln müssen, ein flexibler Geist sein. Denn obwohl KI sehr leistungsfähig ist, sind auch ihr Grenzen gesetzt. Wenn wir nur darüber nachdenken, was uns als Menschen ausmacht, finden wir eine wichtige Eigenschaft: Kreativität. Wie können wir das für den künftigen Erfolg nutzen? Damit die Aussage: nutze deine Kreativität nicht zu einer Plattitüde wird, betrachte ich zuerst den Weg, wie es mit hoher Wahrscheinlichkeit nichts werden wird.

Oft fragen mich Juniorentwickler welches Framework, welche Programmierapache, welches Betriebssystem etc. sie lernen sollen. Dies waren bereits in der alten Zeit die falschen Fragen. Es geht nicht darum, Trends zu folgen, sondern einer Berufung. Wenn Programmieren für mich eine Berufung sein soll, dann geht es zuerst darum, richtig zu verstehen, was der Code, den man schreibt, wirklich tut. Mit einem tiefgreifenden Verständnis des Quelltextes lassen sich auch schnell Performanzverbesserungen finden. Optimierungen im Bereich Sicherheit gehören ebenfalls dazu. Aber auch das Lokalisieren von Fehlern und deren Beseitigung sind Eigenschaften guter Entwickler. Denn genau in diesen Bereichen ist die menschliche Kreativität künstlicher Intelligenz überlegen. Das bedeutet natürlich, als Konsequenz genau diese Fertigkeiten gezielt auszubauen.

Wer nur damit beschäftigt ist, aktuellen Modeerscheinungen hinterherzulaufen, gehörte bereits in der ‚alten‘ Zeit nicht zu den überall gefragten Spezialisten. Reine Code Monkeys deren Tätigkeiten vornehmlich aus Kopieren und Einfügen bestehen, ohne wirklich zu begreifen, was die Codeschnipsel bedeuten, waren von je her leicht ersetzbar. Gerade jetzt, wo KI die Produktivität erhöhen soll, ist es wichtig, schnell und sicher zu entscheiden, wo eine vorgeschlagene Implementierung Anpassungen benötigt, damit es nicht zu unliebsamen Überraschungen kommt, wenn die Anwendung in Produktion geht. Das bedeutet natürlich auch als Konsequenz, dass KI ein Werkzeug ist, das es effizient zu nutzen gilt. Um künftig auch weiterhin auf der Gewinnerseite zu bleiben, ist es unerlässlich, durch den gezielten Umgang mit KI die eigene Produktivität erheblich zu verbessern. Unternehmen erwarten von ihren Mitarbeitern, dass diese mit Unterstützung von KI ein vier bis fünffaches des aktuellen Arbeitspensums erledigen können.

Um mit künstlicher Intelligenz effektiv arbeiten zu können, sind die eigenen Kommunikationsskills essenziell. Denn nur wenn man seine Gedanken klar strukturiert hat, kann man diese auch korrekt und gezielt formulieren. Eine signifikante Leistungssteigerung lässt sich nur erreichen, wenn bereits bei der ersten Anweisung das gewünschte Ergebnis erreicht wird. Wer sich jedes Mal umständlich dem Sprachmodell erklären muss, wie Anfragen zu verstehen sind, weil diese zum Beispiel Mehrdeutigkeiten enthalten, wird wenig Zeitersparnis durch KI erzielen können.

Man kann im Grunde sagen, dass der Entwickler der Zukunft einige Managementfertigkeiten haben sollte. Neben klarer Aufgabenformulierung wird es viel um Selbstmanagement gehen. Geeignete Ressourcen für optimale Ergebnisse zu verteilen. Denn nicht nur künstliche Intelligenz bedroht den eigenen Arbeitsplatz, sondern auch eine starke Konkurrenz aus dem asiatischen Raum. Gut ausgebildete, motivierte und leistungsfähige Leute sind dort mittlerweile in hoher Zahl vorhanden.

Wir sehen also, es kommen durchaus sehr bewegte Zeiten auf uns zu. Die Welt wird sich noch ein wenig schneller drehen. Wer diese Veränderungen nicht als Bedrohung, sondern als Herausforderung wahrnimmt, hat gute Chancen, fit für die nicht mehr allzu weite Zukunft zu sein. Wer bereits jetzt die Weichen stellt, ist für das, was auf uns zukommen wird, gut gewappnet und muss sich vor nichts fürchten.

Ressourcen