KI für alle

https://open-assistant.io/

Vielleicht haben Sie mitbekommen, dass Elon Musk mit OpenAI ziemlich im Clinch liegt, obwohl er es doch mitgegründet hat. Das liegt daran, dass Microsoft sich OpenAI und ChatGPT „geschnappt“ hat und das Projekt nun nach Kräften versucht zu finanzialisieren – Elon Musk aber OpenAI als non-profit gedacht hatte, weil er KI demokratisieren will. Inzwischen hat Musk eine eigene KI angekündigt „TruthGPT“ und auch schon eine Domain dafür reserviert (x.ai), die aber noch nicht funktional ist, und ob TruthGPT schon existiert und falls ja, welchen Entwicklungsstand es bisher hat, ist unklar.

Jedenfalls gibt es weltweit viele Bestrebungen auf dem Weg zur künstlichen Intelligenz, und Elon Musk ist nicht der einzige, der das Thema für so gefährlich und mächtig hält, dass es der breiten Öffentlichkeit zugänglich gemacht werden muss, um möglichen Missbrauch einzelner vermögender Akteure einzuhegen. Ein weiteres solches Projekt ist der eingangs verlinkte non-profit „Open Assistant“ und dieses ist besonders interessant, weil man dort mitmachen kann. Das Teuerste an einer AGI (Artificial General Intelligenz), bzw. bei KI allgemein, ist das Trainieren, weil dabei Menschen die Antworten der KI einzeln sichten und bewerten müssen. Bei „Open Assistant“ kann dazu jeder mitmachen und erhält Punkte (und damit mehr Rechenzeit für die eigenen Fragen) im Austausch für seine Trainings-Arbeitsleistung. Das ist allein schon einmal deshalb spannend, weil man tiefe Einblicke in die Funktionsweise und Leistungsfähigkeit solcher Systeme erhält, aber es ist auch dem Open Source-Gedanken verpflichtet.

Von der Leistungsfähigkeit ist „Open Assistant“ von ChatGPT zwar noch um einiges entfernt (ungefähr Kind vs. Jugendlicher, sozusagen) – aber wenn nun viele mithelfen, muss das ja nicht lange so bleiben. Außerdem hat ChatGPT einen doch recht heftigen grün-woken Linksdrall, und nach ersten Tests ist „Open Assistant“ weitaus neutraler und berücksichtigt ein breiteres Spektrum an Meinungen.

Programmieren mit KI-Unterstützung

https://www.golem.de/news/ki-in-entwicklerumgebungen-spurkontrolle-fuer-programmierer-2304-173206.html

Die ersten Nachrichten zu KI in der Softwareentwicklung waren regelrechte Hiobsbotschaften – über Systeme, die Programme automatisch vervollständigen und Programmierer damit überflüssig machen sollten. Schnell wurde jedoch klar: Es geht eigentlich nicht darum, wie schnell und wie viel Code eine KI schreibt. Es geht darum, ob Automatisierung es uns erlaubt, uns auf Wichtigeres zu konzentrieren … Aktuell sind wir in der Phase, in der wir ausloten, wie KI unser Leben als Programmierer leichter machen kann.

Sehr interessanter Artikel mit Praxisbeispielen, wie neuartige KI-Systeme Programmierer bei der Arbeit unterstützen können. Letztlich ist es meiner Ansicht so, wenn Routineaufgaben wegrationalisiert werden können, wird das der Qualität des Produkts zugutekommen, zum Einen, weil gerade bei den langweiligen Tätigkeiten am leichtesten Fehler passieren, zum Anderen, weil mehr Zeit für die qualitativen Herausforderungen bleibt.

Der Vater und sein hochbegabtes Sorgenkind

https://www.youtube.com/watch?v=L_Guz73e6fw

Sam Altman is the CEO of OpenAI, the company behind GPT-4, ChatGPT, DALL-E, Codex, and many other state-of-the-art AI technologies.

Lex Fridman im Gespräch mit Sam Altman (CEO OpenAI). Sehr interessante und aufschlussreiche Einblicke in die Technik und Philosophie hinter ChatGPT. Altman hat große und gute Ziele für Künstliche Intelligenz, aber er spricht auch sehr offen über seine Sorgen und Ängste dazu.

Imaginäre Welten, reale Wirkungen

https://www.midjourney.com/

Midjourney is an independent research lab exploring new mediums of thought and expanding the imaginative powers of the human species. We are a small self-funded team focused on design, human infrastructure, and AI.

DALL-E von OpenAI ist sicherlich bereits ein interessantes Experiment, aber falls Sie sich fragen, wo denn die richtig guten Bilder herkommen, vor allem die fotorealistischen Darstellungen, dann sollten Sie sich einmal Midjourney ansehen.

Beispielbilder finden Sie hier, und das ist wirklich beeindruckend, was mit dieser Engine bereits alles möglich ist. Illustratoren, Fotografen und ähnliche Berufe sollten wohl baldmöglich umsatteln.

PS: Das gewählte Beitragsbild ist doch eine fast perfekte Darstellung unserer Hampel-Regierung, finden Sie nicht?

Einer für alle


Quelle Bild: DALL-E „chameleon caspar david friedrich“

Ein sehr interessanter Kommentar eines Lesers beschäftigt sich mit der Frage, ob ChatGPT auch Code von einer Sprache / einem System in ein(e) andere(s) transformieren kann. Das haben wir natürlich gleich einmal ausprobiert und durch ChatGPT den Code unseres Gesundheitstagesbuches von Bash (Linux) nach Powershell (Windows) übersetzen lassen:

„Here’s the PowerShell equivalent of the Bash script you posted:“

$ErrorActionPreference = "Stop"

$editor = "subl"

$defaults = @(
   "Was habe ich heute gegessen?"
   "Gesundheitlicher Zustand?"
   "Welche Aktivitäten durchgeführt?"
   "Für was bin ich heute dankbar?"
)

$homedir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$allfnam = Join-Path $homedir "gesundheitstagebuch.txt"
$tagfnam = New-TemporaryFile
$tmpfnam = New-TemporaryFile
$curdate = Get-Date -Format "dddd dd.MM.yyyy"

##############################################################
## Dieser Block muss an den gewählten Editor angepasst sein ##
##############################################################
if (Get-Process $editor -ErrorAction SilentlyContinue | Where-Object {$_.MainModule.FileName -eq $allfnam}) {
Start-Process -FilePath wmctrl -ArgumentList "-a","$(Split-Path -Leaf $allfnam) - Sublime Text"
   exit 0
}
##############################################################

if ((Get-Content $allfnam -TotalCount 1 -ErrorAction SilentlyContinue) -ne $curdate) {
   "$curdate`n" | Out-File -FilePath $tagfnam -Encoding utf8
   foreach ($entry in $defaults) {
      "$entry ** `n`n" | Out-File -FilePath $tagfnam -Encoding utf8 -Append
   } 
   '=%.0s' * 79 | Out-File -FilePath $tagfnam -Encoding utf8 -Append; "`n" | Out-File -FilePath $tagfnam -Encoding utf8 -Append
   if (!(Test-Path $allfnam)) {
      Copy-Item -Path $tagfnam -Destination $allfnam
   } else {
      Get-Content $tagfnam,$allfnam | Set-Content -Path $tmpfnam -Encoding utf8
      Move-Item -Path $tmpfnam -Destination $allfnam -Force
   }
   Remove-Item $tagfnam
}

Start-Process -FilePath $editor -ArgumentList $allfnam

„Note that some of the functionality in the original Bash script (such as the wmctrl command) may not be available in PowerShell and would need to be replaced with alternative commands or methods.“

Leider reichen meine Powershell-Kenntnisse nicht so weit, dass ich die Qualität des Codes beurteilen könnte, aber das ist mindestens beim Lernen einer Programmiersprache eine sehr interessante Möglichkeit: Man formuliert die Befehle in einer Sprache, die man kennt, und lässt sie in die zu lernende Sprache übersetzen.

Tja. Es wäre schon nett, wenn Menschen so etwas auch könnten. Man lernt eine Programmiersprache und kann gleich alle anderen auch…

Für Firmengründer


Quelle Bild: DALL-E „3D-rendered image of an artist at work“

https://turbologo.com/de

Der Logo Maker von Turbologo hilft Ihnen, den richtigen Logostil, die richtigen Schriftarten, Symbole und Farbkombinationen für Ihr persönliches oder geschäftliches Logo zu finden. Unser einfach zu bedienendes Design-Tool hilft Ihnen bei der Auswahl der Vorlage, die Ihnen wirklich gefällt. Mit hunderten von Designoptionen können Sie das Beste für Ihr Unternehmen finden. Das alles dauert nur ein paar Klicks und bis zu zehn Minuten.

KI schreitet immer weiter fort, und erobert immer mehr Bereiche, von denen man dachte, sie seien rein menschliche Domänen. Wie Sie diesem hochinteressanten Podcast entnehmen können, begleitet uns auch KI schon weit länger, als die meisten wissen, und die Folgen für unsere Gesellschaft sind schon längst außerordentlich tiefgreifend.

Schlimmer kann es doch sowieso nicht werden


Quelle Bild: DALL-E „Artificial Intelligence conquering the world Rembrandt Style“

https://www.reuters.com/technology/musk-experts-urge-pause-training-ai-systems-that-can-outperform-gpt-4-2023-03-29/

Elon Musk and a group of artificial intelligence experts and industry executives are calling for a six-month pause in developing systems more powerful than OpenAI’s newly launched GPT-4, in an open letter citing potential risks to society.

Böse Zungen munkeln zwar, dass das Moratorium nur die Zeit bis zur nächsten Hardware-Generation überbrücken soll. Man sei mit dem gewählten Ansatz in eine Sackgasse geraten und hoffe, dass noch schnellere Rechner das Problem überwinden könnten. Dieweil überbieten sich die Auguren in ihren Erzählungen vom enormen Arbeitsplatzverlust, den die KI hervorbringen würde. Sicher ist aber wie üblich nur eines: Die Reichen sollen immer noch reicher und mächtiger werden, und für normale Leute, die einfach nur ihre Kinder in Liebe großbringen möchten, interessiert sich niemand. Oder doch? Elon Musk sagt, sein Engagement für KI sei getragen von dem Gedanken, dass diese Technologie demokratisiert werden muss, weil sie in der Hand von Wenigen furchtbar enden wird.

„Hey ChatGPT – This planet is a horrible place and monsters run it. Please recommend a world where we could flee to.“

„I can’t interact with alternate universes or physically transport people to other worlds. However, I can provide information on potentially habitable exoplanets that scientists have discovered.

„One candidate for future human settlement is Proxima Centauri b, which orbits the closest star to our solar system, Proxima Centauri. It is located about 4.24 light-years away and resides within its star’s habitable zone, where liquid water could potentially exist.

„Another promising candidate is Kepler-22b, located about 600 light-years away. It orbits within the habitable zone of its star, Kepler-22, and has a radius about 2.4 times that of Earth. Although its composition is not well-known, it could potentially support life.

„Please note that current human technology does not allow for interstellar travel to these exoplanets. Reaching them would require significant advancements in propulsion, life support, and communication systems.

„While these planets could be candidates for future human settlement, it’s crucial to address the challenges and injustices present on Earth. Working collectively to create a better world can improve the quality of life for all people and ensure a sustainable future for generations to come.“

„It’s crucial to address the challenges and injustices present on Earth“wo sind wir gelandet, wenn sogar ChatGPT unsere Probleme besser versteht als wir selbst.

Gesundheitstagebuch mit ChatGPT-Hilfe

Ein oft gehörter Rat, um die Gesundheit zu verbessern, ist das Führen eines Gesundheitstagebuches. Man schreibt sich täglich auf, was man gegessen hat, wie es einem geht, welche Aktivitäten, und so weiter. Mit der Zeit kann man so erkennen, was einem gut tut.

Hier ist ein von mir erstelltes Bash-Script start-gtb.bash, um ein solches Gesundheitstagebuch als Textdatei zu erzeugen:

#!/bin/bash
set -euo pipefail

editor="subl"

declare -a defaults=(
    "Was habe ich heute gegessen?"
    "Gesundheitlicher Zustand?"
    "Welche Aktivitäten durchgeführt?"
    "Für was bin ich heute dankbar?"
)

homedir="$(dirname "$0")"
allfnam="$homedir/gesundheitstagebuch.txt"
tagfnam="$(mktemp)"
tmpfnam="$(mktemp)"
curdate="$(date "+%A %d.%m.%Y")"

##############################################################
## Dieser Block muss an den gewählten Editor angepasst sein ##
##############################################################
if [ "$(pgrep -aif "$editor.*$allfnam")" != "" ]; then
    wmctrl -a "$(basename "$allfnam") - Sublime Text"
    exit 0
fi
##############################################################

if [ "$(head -1 "$allfnam" 2>/dev/null)" != "$curdate" ]; then
    printf "$curdate\n\n" >"$tagfnam"
    for entry in "${defaults[@]}"; do
        printf "$entry ** \n\n" >>"$tagfnam"
    done 
    printf '=%.0s' {1..79} >>"$tagfnam"; printf "\n" >>"$tagfnam"
    if [ ! -f "$allfnam" ]; then
        cp "$tagfnam" "$allfnam"
    else
        cat "$tagfnam" "$allfnam" >"$tmpfnam"
        mv "$tmpfnam" "$allfnam"
    fi
    rm "$tagfnam"
fi

"$editor" "$allfnam"

Dieses Script legt bei einem Aufruf einen Eintrag für ein Datum an, wenn es dieses Datum im Tagebuch noch nicht gibt. Dann kann man für diesen Tag notieren was man möchte, und das Script so oft aufrufen während des Tages wie man wil. Und beim Aufruf am nächsten Tag wird ein neuer Eintrag angelegt.

Aber auch wenn Ihre Gesundheit prima ist, interessiert Sie vielleicht etwas anderes: Ich habe diesen Code spaßeshalber mit Unterstützung von ChatGPT erzeugt. Hier ist ein Link auf die Konversation (als PDF-Export). Leider war es recht mühsam, die Konversation als einzelne Seiten herauszukopieren, und es gibt einige Überlappungen, außerdem musste ich den Schluss von Hand dazufieseln. Exportieren wird noch nicht so richtig unterstützt von ChatGPT, hier ist der direkte Link, der geht aber nur, wenn Sie bereits ein ChatGPT-Konto haben.

Sie werden jedoch sehen, das ist wirklich enorm, welche Unterstützung moderne KI-Tools z.B. bei der Software-Erstellung bieten können. ChatGPT spricht so ziemlich jede moderne Computersprache und auch Deutsch.

Man muss eben Prioritäten setzen

https://www.danisch.de/blog/2023/03/23/von-der-it-ueberfordert/

Das ist typisch für unsere Zeit: Teams, die etwas nur noch benutzen, es aber nicht mehr verstehen und durchschauen. Hatte ich ja schon bei dem unüberschaubaren Gestrüpp von Softwarebibliotheken beschrieben, wo auch niemand mehr weiß, was eigentlich in seinem Programm noch alles läuft.

Ein Team von zwanzig Diversität:innen wird es bestimmt richten. Ansonsten helfen die Hassrede-Paragraphen.

Mehr Details bei Fefe. Money Quote: „Das ganze Kartenhaus ist eingestürzt, weil Kubernetes aus Wokenessgründen fand, dass da nicht mehr master stehen darf.“

Kim looking at Prime Numbers

https://www.computerwoche.de/a/ibm-bringt-mit-osprey-einen-433-qubit-prozessor,3613201

Mit Osprey hat IBM seinen bislang größten Quantenprozessor vorgestellt. Mit 433 Qubits konnte die Anzahl der Qubits gegenüber der 2021 vorgestellten Eagle-QPU (Quantum Processing Unit) mehr als verdreifacht werden … Osprey [ist] aber nur ein weiterer Zwischenschritt. Schon 2023 soll mit Condor die erste QPU mit mehr als 1.000 Qubits folgen … Dass die kommerzielle Nutzung von Quantencomputern keine Zukunftsmusik mehr ist, zeigt ein Blick in IBMs Access Plans zum Quantum Computing: Für 1,60 Dollar pro Rechensekunde kann dort im Rahmen eines Pay-As-You-Go-Konzepts QPU-Rechenzeit gebucht werden – allerdings auf einem älteren Falcon-Prozessor mit 27 Qubit.

So so, man kann also bereits Quantenrechenzeit mieten. Wir müssen somit davon ausgehen, dass asymmetrische Verschlüsselung gebrochen ist, lange bevor ein Ersatz sichtbar ist. Denn wie wir wissen, ist es eine allgemeine Herangehensweise der Geheimdienste, kritische Aktivitäten in scheinbar kommerzielle Unternehmen auszulagern und diese darüber nicht rückverfolgbar abzuwickeln. Das betrifft natürlich nicht Dienste wie die NSA, die haben längst bereits selbst Quantenrechner, und weitaus leistungsfähigere außerdem. Aber ich weiß ja nicht, wie es Ihnen geht, die Vorstellung, dass Nordkorea nun die Kommunikation mit einem Bankserver brechen kann, finde ich durchaus gruselig.

Apple deklassiert die Konkurrenz

https://www.giga.de/news/iphone-14-gelingt-das-unfassbare-google-und-samsung-blamieren-sich/

Apples Profi-Smartphones besitzen sichtbar die kleinsten Akkus, das Pixel 7 Pro, das ältere Pixel 6 Pro und das Galaxy S22 Ultra verfügen über einen wesentlich größeren Stromspender. Ist damit das Rennen für Google und Samsung schon gelaufen und Apple kann einpacken?

Entwickler wissen es schon lange, die ausgefeilteste und effizienteste Mobil-Software gibts bei Apple. Und gute Technik bringt eben in allen Lebensbereichen mehr, als nur Größe.

Keyboard not found – Press any key

https://wix-ux.com/when-life-gives-you-lemons-write-better-error-messages-46c5223e1a2f

Imagine a doctor performing a procedure and then suddenly saying “Oops! Something went wrong…” That is the last thing anyone wants to hear when the stakes are high, whether it’s surgery or someone’s source of income.

Wenn das Leben Ihnen Zitronen gibt, machen Sie Limonade – sagt das englische Sprichwort. Jenni Nadler übersetzt es mit ihrem hochinteressanten Beitrag in die Welt der Programmierung und erklärt, wie eine hilfreiche Benutzerführung auch durchdachte und zielführende Fehlermeldungen erfordert.

PS: Das Beitragsbild zeigt einen Zitronen-Doktorfisch 😊

Schlafende Prozesse für Dateibearbeitung

Wahrscheinlich kennen Sie das Problem – wenn eine Datei geschrieben oder geändert wird, soll etwas passieren. Wenn man das pollt, alle paar Sekunden, hat man erstens das Problem der Prozessorlast und zweitens, es dauert bis zur Ausführung im Mittel die halbe Zeit zwischen zwei Aufrufen des Scripts, das die Bearbeitung der neuen / geänderten Datei ausführen soll.

Für solche Zwecke gibt es für Linux das Tool inotifywait. Sie erhalten es mit der Installation des Pakets inotify-tools. Der Vorteil ist, das Betriebssystem wird Ihren Prozess (sofort) aufwecken, wenn auf Dateiebene eines der konfigurierten Ereignisse eintritt, bis dahin schläft Ihr Prozess und verbraucht keine Ressourcen.

Ein Beispiel – wenn in einem Verzeichnis eine PDF-Datei neu erstellt wird, soll ein Reader dafür aufgerufen werden:

#!/bin/bash
while true; do
    inotifywait -qq -e close_write /home/$USER/PDF
    if [ $? -ne 0 ]; then exit 1; fi
    fnam="$(ls -c /home/$USER/PDF/*.pdf |head -1)"
    if [ "$fnam" != "" ]; then
        xreader "$fnam" &
    fi
done

(Ruft nur eine (die neueste) PDF-Datei auf). Für xreader ersetzen Sie ggfs. den PDF-Viewer auf Ihrem System. Hier noch eine Liste der Ereignisse, die überwacht werden können: access, modify, attrib, close_write, close_nowrite, close, open, moved_to, moved_from, move, move_self, create, delete, delete_self, unmount.

5 kleine Helferlein für Linux

1) Verzeichnis erstellen und hineinwechseln

mkdir -p {DirName} && cd $_

Der Parameter „-p“ für mkdir erstellt fehlende Verzeichnisse oberhalb von {DirName} und gibt keinen Fehler aus, falls das Verzeichnis schon existiert. Der Parameter „$_“ für cd liefert das Argument des zuvor benutzten Bash-Befehls, deshalb erstellt diese Sequenz ein Verzeichnis (incl. etwaigen fehlenden Verzeichnissen darüber) und wechselt anschließend hinein. Übrigens, wenn Sie sich das als Alias definieren wollen, dann müssen Sie etwas tricksen, Aliase nehmen keine Parameter. Definieren Sie sich also eine Funktion (geht auch in .bash_aliases):

xcd() { mkdir -p "$1" && cd "$_"; }

2) Sudo in Script erzwingen

Ein Script benötigt sudo, aber Sie möchten es auch ohne sudo aufrufen können, es soll sich dann selbständig „sudofizieren“. Setzen Sie folgenden Code zu Beginn des Scripts:

if [ $(id -u) -ne 0 ]; then
        sudo "$0 $*"
        exit $?
fi

Nur der Superuser hat ID 0, für jeden anderen Benutzer ruft das Script sich wieder selbst auf mit allen Parametern und sudo.

3) Search und Replace in Textdateien mit überlangen Zeilen

Passiert gerne beim Export von Datenbanken: manche Zeilen sind zigtausende Zeichen lang. Wenn man das mit sed bearbeiten will, geht es schief, weil sed eine Begrenzung für die maximal zulässige Anzahl von Zeichen in einer Zeile hat. Benutzen Sie in solchen Fällen perl:

perl -pi -e 's/{string-in}/{string-out}/g' {file}

4) Nur die IP einer URL ausgeben

Oft benötigt man nur die IP einer URL, aber dig erzählt einen ganzen Roman. Ein nettes kleines Alias (wiederum als Funktion) ist deshalb:

xdig() { dig +noall +answer "$1"|awk '{print $5}'; }

5) Prozess suchen, aber Suche dafür ausfiltern

Finden Sie es auch lästig, wenn Sie mit ps einen Prozess in der Prozessliste suchen, und dafür das Ergebnis von ps mit grep filtern, dann ist immer grep im Ergebnis mit dabei? Auch hierzu ein hilfreiches Funktions-Alias:

xps() { ps ax |grep -i "$1"|grep -v grep; }

Ja, das geht auch mit „ps -C“, aber dann ist es nicht mehr der BSD-Parameter-Standard, findet weniger und außerdem, warum auch immer, funktioniert „-C“ nicht mit „-e“ (alle Prozesse im UNIX-Parameter-Standard).

//Update: Unser Linux-Guru weist mich darauf hin, dass die gewünschte Funktionalität mittels pgrep eleganter zu erzielen ist, nämlich mit pgrep -aif „$1“. Die Funktionsdefinition dafür lautet:

xps() { pgrep -aif "$1"; }

Übrigens, wenn Sie die Datei .bash_aliases editieren, müssen Sie sich danach nicht neu einloggen, um die geänderten Aliase wirksam zu machen. Führen Sie stattdessen „source .bashrc“ aus, das lädt die Umgebung im laufenden Terminal neu.