Es war ein ganz normaler Mittwochmorgen in der IT-Abteilung von MegaCorp, als der frisch gebackene Praktikant Kevin mit einem breiten Grinsen und einem Pappbecher voller Energy Drink durch die Tür stürmte.
"Morgen, Herr Schmidt! Ich hab' da 'ne mega Idee!", rief er dem Sysadmin zu, der gerade in seinem heiligen Karteikasten kramte.
Herr Schmidt, ein Mann mit mehr Dienstjahren als Kevin Lebensjahren, blickte skeptisch über seine Lesebrille. "Guten Morgen, Kevin. Was gibt's denn so Dringendes?"
Kevin hüpfte aufgeregt von einem Bein aufs andere. "Also, ich hab gestern Nacht ein bisschen recherchiert und festgestellt, dass unser WLAN-Router total veraltet ist! Der läuft ja schon seit 500 Tagen ohne Neustart. Stellen Sie sich mal vor, was wir alles verpassen!"
Herr Schmidt zog eine Augenbraue hoch. "Und das ist schlecht, weil...?"
"Na, weil es ein Update gibt! OpenWRT hat 'ne neue Version rausgebracht. Mit der könnten wir bestimmt das Internet um mindestens 5% beschleunigen!"
Der Sysadmin seufzte tief. "Kevin, mein Junge, wenn etwas 500 Tage lang ohne Probleme läuft, fasst man es nicht an. Das ist die goldene Regel der IT."
Aber Kevin ließ nicht locker. Mit der Überzeugungskraft eines Gebrauchtwagenhändlers und der Hartnäckigkeit eines Terriers schaffte er es schließlich, Herrn Schmidt zu überreden.
"Na gut", brummte der Sysadmin, "aber nur, weil heute sowieso kaum jemand im Büro ist. Und du machst das Backup!"
Kevin strahlte wie ein Honigkuchenpferd. "Klar, hab ich schon vorbereitet!"
Gemeinsam machten sie sich an die Arbeit. Kevin tippte wie ein Weltmeister, während Herr Schmidt nervös seine Karteikarten sortierte.
"So, jetzt nur noch neustarten und-" PUFF! Der Bildschirm wurde schwarz.
Stille.
Kevin lachte nervös. "Ups, kleiner Wackelkontakt. Moment..."
Fünf Minuten später: Immer noch schwarz.
Herr Schmidt wurde blass. "Kevin, was hast du getan?"
"Keine Panik! Ich probier' nur kurz was anderes." Kevin hämmerte wild auf der Tastatur herum.
Eine Stunde später war der Router immer noch offline. Kevin schwitzte und murmelte Unverständliches, während Herr Schmidt stoisch in seinen Karteikarten blätterte.
"Ähm, Herr Schmidt? Ich glaube, wir haben ein Problem."
Der Sysadmin schaute auf. "Wir?"
In diesem Moment klingelte das Telefon. Es war der CEO. "Schmidt! Warum zum Teufel funktioniert das Internet nicht?"
Herr Schmidt warf Kevin einen vielsagenden Blick zu. "Tja, Herr Direktor, sagen wir mal so: Unser Praktikant hatte eine 'mega Idee'..."
Als der Arbeitstag zu Ende ging, saß Kevin immer noch vor dem toten Router, umgeben von leeren Energy Drink-Dosen. Herr Schmidt klopfte ihm auf die Schulter.
"Lektion gelernt, mein Junge?"
Kevin nickte kleinlaut.
"Gut. Morgen zeige ich dir, wie man einen Router richtig updated. Und jetzt ab nach Hause – aber nimm den Hinterausgang. Der CEO wartet vorne mit einer Mistgabel."
Während Kevin sich davonschlich, murmelte Herr Schmidt: "500 Tage Uptime. Verdammt, das war ein guter Lauf."
Er zog eine Karteikarte hervor und notierte: "20.11.2024: Praktikanten sind wie Updates. Manchmal bringen sie Fortschritt, meistens Chaos."
Mit einem Schmunzeln steckte er die Karte zurück in den Kasten. Es war Zeit, nach Hause zu gehen und ein Bier zu trinken. Oder zehn.
Robotics and Artificial Intelligence
November 20, 2024
Uptime mit Hindernissen
November 19, 2024
Der Übereifrige Praktikant
Markus, ein 22-jähriger Informatikstudent, begann voller Enthusiasmus sein Praktikum bei TechSolutions GmbH. Mit dem neuesten Wissen aus der Uni bewaffnet, war er fest entschlossen, seine Fähigkeiten unter Beweis zu stellen.
An seinem dritten Tag bemerkte er einen OpenWRT-Router mit einer beeindruckenden Uptime von 400 Tagen. Fasziniert wandte er sich an Klaus, den erfahrenen Sysadmin.
"Klaus, hast du gesehen? Der Router läuft seit über einem Jahr ohne Neustart!", rief Markus aufgeregt.
Klaus nickte gelassen. "Ja, das alte Schätzchen. Läuft wie ein Uhrwerk."
Markus runzelte die Stirn. "Aber das bedeutet doch, dass er seit über einem Jahr keine Sicherheitsupdates bekommen hat. Sollten wir nicht dringend updaten?"
Klaus seufzte. "Markus, in der Theorie hast du Recht. Aber dieser Router ist das Herz unseres Netzwerks. Solange er läuft, fassen wir ihn nicht an."
Doch Markus ließ nicht locker. Tagelang bombardierte er Klaus mit Artikeln über Sicherheitslücken und den Vorteilen der neuesten Firmware. Schließlich gab Klaus nach.
"Na gut, du Quälgeist. Heute Abend nach Feierabend können wir es versuchen. Aber ich warne dich, wenn etwas schiefgeht..."
Markus konnte sein Glück kaum fassen. Um 18 Uhr trafen sie sich im Serverraum. Mit zitternden Händen lud Markus die neue Firmware herunter.
"Letzte Chance zum Abbruch", warnte Klaus.
"Alles wird gut!", versicherte Markus und klickte auf "Update starten".
Die Minuten krochen dahin. Der Fortschrittsbalken bewegte sich quälend langsam. Bei 99% hielt Markus den Atem an.
Plötzlich wurde der Bildschirm schwarz.
"Äh, Klaus? Ist das normal?", fragte Markus mit zitternder Stimme.
Klaus' Gesichtsausdruck verhieß nichts Gutes. "Nein, das ist es nicht."
Sie versuchten alles: Neustart, Reset, sogar ein Gebet zum IT-Gott. Nichts half. Der Router blieb stumm.
Um Mitternacht gab Klaus auf. "Das war's, Junge. Der Router ist gebrickt. Morgen früh steht uns ein Höllenritt bevor."
Markus sank in sich zusammen. "Es tut mir so leid, Klaus. Ich wollte doch nur helfen."
Klaus legte ihm die Hand auf die Schulter. "Ich weiß. Aber manchmal ist das Risiko eines Updates größer als der potenzielle Nutzen. Das lernt man mit der Zeit."
Am nächsten Morgen herrschte Chaos. Ohne den zentralen Router lag das halbe Netzwerk lahm. Markus verbrachte den Tag damit, sich bei jedem zu entschuldigen, während Klaus versuchte, eine Notfalllösung zu improvisieren.
Als der Arbeitstag endlich vorbei war, rief der CEO Markus in sein Büro. Mit gesenktem Kopf betrat er den Raum, sicher, dass sein Praktikum vorbei war.
Zu seiner Überraschung lächelte der CEO. "Markus, ich habe gehört, was passiert ist. Es war ein kostspieliger Fehler, aber einer, aus dem wir alle lernen können. Wir werden unsere Update-Prozesse überdenken und einen Notfallplan erstellen. Und du wirst dabei helfen."
Erleichtert und dankbar nickte Markus. Er hatte eine wertvolle Lektion gelernt: In der IT-Welt ist Vorsicht manchmal besser als blinder Fortschrittsglaube.
Introduction into the Froozen release model
November 11, 2024
Classical AI programming until 2010
November 05, 2024
Development time for programming a video game
- Assembly language, 14 days
- Forth language, 7 days
- C language, 3 days
- Python, 1 day
October 31, 2024
Chronological notetaking with problems
The easiest way to make notes is to append new information at the end. There is no need to use a ring binder or note cards but a normal notebook works fine. A possible entry would be “date: March 10, headline, body of text”. The note is written down on paper and can be read again forever.
October 22, 2024
Pipeline for developing chatbot based robotcs
Since the introduction of large language models in the year 2023, the term "artificial intelligence" was defined very clearly. AI means simply that the user interacts with a chatbot in natural language. The chatbot is able to answer questions, can draw pictures and also the chatbot controls a robot.
From the user perspective, the software works suprisingly easy to explain. The user enters a sentence like "open left hand" and submits the text to the chatbot. The chatbot is parsing the sentence and executes the command, which means that the robot will open indeed the hand. More complex actions like moveing to a table and wash all the dishes are the result of more advanced text prompts which contains a list of sub actions.
The unsolved issue is how to program such advanced chatbots in software. Before a user can talk to a robot this way, somebody has to program the chatbot first which can be realized in C++, Java, and so on. The basic element of any chatbot isn't a certain programming library like nltk and its not a certain operating system like Windows or Unix, but the needed building block is a dataset. Or to be more specific, a dataset which maps language to perception, and language to action.
Such a mapping is realized with multiple column because the dataset is always a table. In the easiest example the table consists of a images in the first column and the nouns in the second column:
[picture1.jpg], apple
[picture2.jpg], banana
[picture3.jpg], table
[picture4.jpg], spoon
The chatbot software is using such a dataset to understand a text prompt from the user. For example if the user types into the textbox "take apple". The word apple is converted into [picture1.jpg] and this picture allows to find the apple with the camera sensor.
More complex interactions like generating entire motion data are provided the same way. A verb like "grasp" is converted into motion capture trajectory with the following table:
[trajectory1.traj], open
[trajectory2.traj], grasp
[trajectory3.traj], standup
[trajectory4.traj], sitdown
[trajectory5.traj], moveto
Let me give a longer example to make the point clear. Suppose the user enters the command "moveto table. grasp apple". This command sequence is converted into:
1. [trajectory5.traj], moveto
2. [picture3.jpg], table
3. [trajectory2.traj], grasp
4. [picture1.jpg], apple
In the next step of the parsing pipeline the given jpeg images and .traj data are converted into search patterns and motion pipelines. This allows to convert a sentence into robot actions.
There are mutiple techniques available how to program a chatbot in detail. Its possible to use ordinary programming languages or more advanced deep neural networks. What these methods have in common is, that they are requiring always a dataset in the background. Somebody has to create a table with pictures with objects, and annotate the pictures. Also a dataset with mocap data is needed. Such a dataset allows a chatbot to convert a short sentence into something meaningful. Meaning is equal to a translation task from a word into a picture, and from a word into a trajectory.
So we can say, that a chatbot is the frontend of an AI while the dataset is the backend.
October 11, 2024
Einführung in grounded language
Ins deutsche übersetzt heißt es soviel wie gelenkte Sprache oder strukturierte Sprache. Es geht darum die Realität mit Hilfe eines Fragebogens zu beschreiben um darüber die Maschinenlesbarkeit zu erhöhen. Dazu ein Beispiel:
Angenommen, es soll eine Verkehrszählung durchgeführt werden. Im einfachsten Fall beginnt man ohne größere Vorbereitung und führt eine Strichliste. Die bessere Alternative besteht darin, vor dem Zählen zuerst einmal ein Formblatt zu entwerfen worin Variablen definiert werden, welche beschreiben was genau gezählt wird. Zur Erfassung des Autoverkehrs bieten sich folgende Variablen an:
Fahrtrichtung: von links / von rechts
Autofarbe: schwarz / blau / grün / rot / sonstiges
Fahrzeugtyp: PKW / LKW / Bus / sonstiges
Uhrzeit
Ein solcher Zählbogen ist weitaus detailierter als eine simple Strichliste weil man viele wertvolle Details zum Straßenverkehr erhält. Die o.g. statistischen Variablen sind identisch mit grounded language. Es wird dabei natürliche Sprache so verwendet, dass ein Vektorraum entsteht innerhalb derer dann etwas gezählt wird. Am Ende der Verkehrszählung kann man dann sagen, wieviele rote PKWs von links kamen oder wieviele LKW insgesamt die Straße befahren haben.
Im Bereich Statistik und Soziologie sind solche Erhebungsbögen allgemein bekannt und werden seit Jahrzehnten verwendet. Sie dienen als Hilfsmittel um komplexe Fragestellungen zu strukturieren und zahlenmäßig zu erfassen. Was jedoch neu ist, ist dass mit der selben Methode das Problem der Robotik und Künstlichen Intelligenz maschinenlesbar aufbereitet werden kann.
Im Grunde muss ein Roboter, der sich in einem Labyrinth bewegen soll, nur mit einem Formblatt versehen werden, was grounded language enthält. Über dieses Formblatt kann die Umgebung in einen symbolischen Vektorraum überführt werden, also maschinell-mathematisch gespeichert werden. EIne Kategorie in dem Formblatt wie z.B. "Farbe=blau" kann entweder wahr oder falsch sein. Die Strichliste kann einen Strich enthalten oder eben nicht. Darüber vermag der Roboter ein Protokoll anzulegen und Entscheidungen zu treffen. Das komprimiert den Handlungsraum. Anstatt Sensoren hardwaremäßig abzufragen, hat der Roboter ein konzeptionelles Verständnis der Umgebung. Man erhält einen high level Sensor der die Daten des Fragebogens inkl. der darin verwendeten Sprache verwendet.