đ Nolife Langage â Sag nicht âKostenâ, sag âInvestitionâ.
vom 6. September 2026
đ Nolife Langage â Sag nicht âKostenâ, sag âInvestitionâ.
Die Zahl Àndert sich nicht. Der Rahmen schon.
Kosten klingt nach etwas, das man verliert. Investition klingt nach etwas, das man ohnehin vorhatte, mit einer Rendite obendrein. Basic klingt nach der abgespeckten Variante. Essential klingt nach dem, was man braucht. Standard ist generisch. MaĂgeschneidert wurde speziell fĂŒr dich angefertigt.
Ich habe den Verkaufs-Slogan in einem Werbevideo gehört:
Sag nicht â1.000 $â, sag â999 $â, das wirkt gĂŒnstiger. Sag nicht âJetzt kaufenâ, sag âEs sind nur noch drei StĂŒck verfĂŒgbarâ. Sag niemals das Wort âBasicâ, sag âEssentialâ. Sag niemals âStandardâ, sag immer âmaĂgeschneidertâ. Das Wort âwenigeâ â sag das nicht, sag immer âlimitiertâ. Und verwende niemals das Wort âKostenâ, sag immer âInvestitionâ.
Worte sind wichtig, wenn man versucht, Menschen zum Kauf zu bewegen. Ich wollte wissen, was passiert, wenn der Leser nicht nur ein Mensch, sondern auch ein Tokenizer ist.
Die erste Ăberraschung betraf Deutsch. In diesem Korpus mit der Kodierung o200k_base benötigte das kommerziell stĂ€rkere Wort maĂgeschneidert fĂŒnf Token. Standard benötigte einen. Das sind +400 %. Unverzichtbar fĂŒr Basis stieg von 1 auf 4. Die Verkaufstöne wurden lauter. Der Token-ZĂ€hler lief in die andere Richtung.
Bedeutung
|
|
Token-Kosten ----+---- Ăberzeugungskraft
Das sind drei verschiedene Achsen. Eine Phrase kann auf einer gewinnen und auf einer anderen verlieren. Dieser Artikel ist das kleine Darkwood-Experiment, das versucht hat, sie voneinander zu trennen.
Wörter haben bereits einen Preis
Die sechs englischen Austausche sind kein Kopier-Deck. Sie sind ein Labor: klein genug, um sie in Token zu zerlegen, semantisch interessant genug, um darĂŒber zu diskutieren.
| Original | Ersatz | Rahmen (behauptet) |
|---|---|---|
| 1.000 $ | 999 $ | wirkt gĂŒnstiger |
| Jetzt kaufen | nur noch drei verfĂŒgbar | Knappheit |
| grundlegend | unverzichtbar | notwendig, nicht gemindert |
| Standard | maĂgeschneidert | fĂŒr den KĂ€ufer gemacht |
| wenige | limitiert | Knappheit |
| Kosten | Investition | erwartete Rendite, kein Verlust |
Ich habe keinen A/B-Test zur Konversionsrate durchgefĂŒhrt. Ich behaupte nicht, dass die Psychologie dahinter endgĂŒltig geklĂ€rt ist. Ich behaupte, dass es sich lohnt, die Ersetzungen zu berĂŒcksichtigen.
Englisch âKostenâ â âInvestitionâ ist das deutlichste Beispiel: gleiche Idee, anderer Rahmen. Bei âo200k_baseâ ist es fĂŒr den Tokenizer ebenfalls ein Nullsummenspiel. Beide Seiten ergaben 1 Token. Die Zahl hat sich nicht verĂ€ndert. Die Geschichte hat sich dennoch geĂ€ndert.
â$1.000â â â$999â wirkte sich gleichzeitig in beide Richtungen aus: attraktive Preisgestaltung und weniger Token (4 â 2). Die Knappheit entwickelte sich in die entgegengesetzte Richtung. âJetzt kaufenâ entspricht 2 Token; âNur noch drei verfĂŒgbarâ entspricht 3.
Das ist bereits das Dreieck. Die Bedeutung kann Ă€hnlich bleiben. Die Ăberzeugungskraft kann zunehmen. Die Anzahl der Token kann steigen, sinken oder unverĂ€ndert bleiben.
Dann weist das Modell den Wörtern einen weiteren Preis zu
APIs und Kontextfenster rechnen nicht in Wörtern ab. Sie berechnen nach Token: Textabschnitte, nachdem ein Tokenizer die Zeichenkette aufgeteilt hat. Ein Tokenizer ist kein Wörterbuch. Er ist eine Komprimierung von Byte-Sequenzen, die er hĂ€ufig gesehen hat. Englisch ist in dieser Historie ĂŒberreprĂ€sentiert. Andere Sprachen und sogar andere englische Schreibweisen desselben Begriffs können auf mehr Teile aufgeteilt werden.
Damian Zygmuntowiczâ Beitrag ĂŒber die versteckten Token-Kosten von Sprachen â das polnische przedsiÄbiorstwo als Provokation â war der Grund, warum ich mich damit beschĂ€ftigt habe. Ich habe die polnischen Zahlen nicht reproduziert. Darkwood wird auf Englisch, Französisch und Deutsch ausgeliefert. Das sind die Sprachen, die ich gemessen habe.
Die MaĂeinheit ist entscheidend. Zeichen sind keine Token. Wörter sind keine Token. Eingabe-Token sind keine Ausgabe-Token. Cache-Treffer sind keine Rechnungen. Eine Heuristik von Bytes / 4 ist eine SchĂ€tzung, keine Messung. Ich habe das eigentliche OpenAI-BPE lokal mit yethee/tiktoken ausgefĂŒhrt:
- PrimÀr:
o200k_base(GPT-4o-Familie) - SekundÀr:
cl100k_base(GPT-4-/3.5-Turbo-Familie)
Das sind keine Claude-Token, keine Gemini-Token und keine âuniversellen LLM-Tokenâ. Die Kodierung ist Teil des Ergebnisses.
Drei Sprachen, eine Idee
Ich habe zwei kurze, parallele Passagen â ein Workshop-Angebot und eine Preisangabe â auf Englisch, Französisch und Deutsch verfasst. Absichtlich mit derselben Bedeutung. Winziger Korpus: Version 1.0.2, Hash 7510f01cf7c3âŠ. Keine statistische Studie ĂŒber âFranzösischâ oder âDeutschâ. Ein deterministisches Labor.
Dann habe ich gezÀhlt.
In diesem Korpus mit o200k_base verwendete die englische Version 46 Token, die französische 58 (+26,09 % gegenĂŒber Englisch), die deutsche 63 (+36,96 % gegenĂŒber Englisch).
| Sprache | Wörter | Zeichen | Tokens (o200k_base) |
Tokens/Wort | im Vergleich zu Englisch |
|---|---|---|---|---|---|
| Englisch | 41 | 240 | 46 | 1,12 | Basiswert |
| Französisch | 46 | 273 | 58 | 1,26 | +26,09 % |
| Deutsch | 41 | 298 | 63 | 1,54 | +36,96 % |
Diese ProzentsÀtze beziehen sich auf dieses Korpus und diesen Tokenizer. Sie stellen keine Benachteiligung des Französischen oder des Deutschen dar.
Deutsch verwendete dieselbe Wortanzahl wie Englisch und mehr Zeichen. Es verwendete zudem mehr Token pro Wort. Die Heuristik Bytes / 4 schĂ€tzte 60 / 71 / 76 und ĂŒberschĂ€tzte jede Sprache. Dennoch verschleierte sie, wie groĂ die LĂŒcke in der Rangfolge ist.
Ich habe sogar versucht, das Deutsche natĂŒrlicher zu gestalten. Das Ersetzen des Calques aufgezeichnete FĂŒhrung durch gefilmten Rundgang reduzierte die Zeichenanzahl von 301 auf 298 und erhöhte die o200k_base-Token von 62 auf 63. Weniger Zeichen. Ein Token mehr. Es geht nicht um den kĂŒrzeren Text.
Es hÀngt vom Tokenizer ab
Gleiche Texte, zweite Kodierung.
| Sprache | o200k_base |
vs. EN | cl100k_base |
vs. EN |
|---|---|---|---|---|
| Englisch | 46 | Basiswert | 46 | Basiswert |
| Französisch | 58 | +26,09 % | 71 | +54,35 % |
| Deutsch | 63 | +36,96 % | 73 | +58,70 % |
Englisch blieb bei 46. Französisch stieg von +26,09 % auf +54,35 %. Deutsch von +36,96 % auf +58,70 %. Die Ă€ltere Kodierung war fĂŒr Französisch und Deutsch ungĂŒnstiger. Der Sprachbonus ist keine Eigenschaft des Französischen. Er ist eine Eigenschaft von diesem Korpus Ă dieser Kodierung.
Genau darum geht es beim Einsatz von zwei Tokenizern. HĂ€tte ich nur o200k_base veröffentlicht, hĂ€tte ich unterschĂ€tzt, wie âteuerâ derselbe französische Text unter cl100k_base erscheinen kann.
Nun die Wörter Àndern
Ich habe die sechs Verkaufsargumente genommen, idiomatische französische und deutsche Entsprechungen verfasst und zwei Absichten gekennzeichnet:
- Ăberzeugungsversuch â den Rahmen des KĂ€ufers verĂ€ndern (kann mehr Token kosten)
- token_opt â eine Ă€hnliche Idee mit weniger Token ausdrĂŒcken (kann den Rahmen schwĂ€chen)
WĂ€hle niemals stillschweigend die kostengĂŒnstigste Formulierung aus und bezeichne sie als die beste. Ăberzeugungsarbeit wird hier gekennzeichnet, nicht gemessen. Die token_opt-Zeilen sind theoretische Annahmen. Die FR/DE-Phrasen sind EntwĂŒrfe, keine Ăbersetzungsstudie.
Einige Zeilen aus o200k_base:
| Spr. | Absicht | Original | Ersatz | Vorher | Nachher |
|---|---|---|---|---|---|
| en | Ăberzeugungsarbeit | 1.000 $ | 999 $ | 4 | 2 |
| en | Ăberzeugungsarbeit | Kosten | Investition | 1 | 1 |
| en | Ăberzeugungsarbeit | Jetzt kaufen | Nur noch drei verfĂŒgbar | 2 | 3 |
| en | Ăberzeugungsversuch | Standard | maĂgeschneidert | 1 | 2 |
| de | Ăberzeugungsversuch | Standard | maĂgeschneidert | 1 | 5 |
| de | Ăberzeugungsversuch | Basis | unverzichtbar | 1 | 4 |
| de | token_opt | maĂgeschneidert | passend | 5 | 2 |
| en | token_opt | nur noch drei verfĂŒgbar | 3 ĂŒbrig | 3 | 2 |
| fr | Ăberzeugungsarbeit | Jetzt kaufen | nur noch drei auf Lager | 3 | 5 |
Die vier Ecken des Dreiecks in diesem Durchgang:
- StÀrkere VerkaufstonalitÀt, mehr Tokens:
StandardâmaĂgeschneidert; DeutschmaĂgeschneidert(+400 %). - Gleiche Tokens, anderer Rahmen: Englisch
costâinvestment(1 â 1). - SchwĂ€cherer Verkaufston, weniger Tokens:
maĂgeschneidertâpassend(5 â 2). - Charm-Pricing, das auch den BPE senkt:
$1.000â$999(4 â 2).
Knappheit kostet oft Token. Französisch achetez maintenant â plus que trois en stock stieg von 3 auf 5. Dann komprimierte token_opt dies zu 3 restants (5 â 3). GĂŒnstigere Token. Weniger Verkaufstone. Beide Messwerte sind echt. Nur eine davon ist âbesserâ, und es hĂ€ngt davon ab, welche Achse fĂŒr Sie wichtig ist.
Die roten Zeilen sind die interessanten
Neun von siebenundzwanzig Paarzeilen verwendeten nach der Ăberarbeitung mehr Token. Alle neun sind persuasion. Keine ist token_opt.
Im Deutschen wird es laut:
| Original | Ersatz | Vorher | Nachher | Delta |
|---|---|---|---|---|
| Basis | unverzichtbar | 1 | 4 | +3 |
| Standard | maĂgeschneidert | 1 | 5 | +4 |
| Kosten | Investition | 1 | 2 | +1 |
| wenige | begrenzt | 2 | 3 | +1 |
| jetzt kaufen | nur noch drei verfĂŒgbar | 3 | 4 | +1 |
Das ist kein gescheiterter Benchmark. Ăberzeugungsoptimierung ist keine Token-Optimierung. Ein kommerziell stĂ€rkeres Wort kann fĂŒr den Tokenizer ungĂŒnstig sein. HĂ€tte ich die roten Zeilen verworfen, hĂ€tte ich ein MĂ€rchen ĂŒber Formulierungen veröffentlicht, die immer Geld sparen.
Als Block stieg die Ăberzeugungskraft in diesem Korpus von 36 auf 45 Token (â25 % âEinsparungâ, d.âŻh., es kostet mehr). Allein die deutsche Ăberzeugungskraft: 12 â 20 (â66,67 %). Die englische Ăberzeugungskraft blieb unverĂ€ndert (10 â 10). token_opt hat dann Tokens wiederhergestellt, darunter auch deutsche (+45,45 % insgesamt). Mehrere token_opt-Zeilen verbilligen dieselbe Idee, die die Ăberzeugungszeile gerade verteuert hat. Das ist die Kontrolle: gleiche Ideen, gegensĂ€tzliche Absicht.
62 â 62
Wenn ich alle Paare zu einer Gesamtsumme zusammenfasse, erhalte ich Folgendes:
| Token vorher | Token nachher | Einsparung | |
|---|---|---|---|
| Ăberzeugungsversuch, alle | 36 | 45 | â9 |
token_opt, alle |
26 | 17 | +9 |
| gemischt, alle | 62 | 62 | 0 |
62 rein. 62 raus. Es sieht so aus, als hÀtte die Formulierung nichts bewirkt.
Das tat sie auch nicht. Einzelne Ersetzungen gingen in beide Richtungen. Das gemischte Gesamtergebnis hat sie aufgehoben. âMixed Germanâ liegt immer noch bei â13,04 % (23 â 26). âMixed Englishâ âspartâ immer noch 2 Token. Der sprachĂŒbergreifende Nullwert ergibt sich aus âPersuasionâ â9 plus âtoken_optâ +9.
Dies ist eine Warnung vor Benchmark-Zusammenfassungen. Ein Gesamtwert kann das PhĂ€nomen auslöschen, das man zu verstehen versucht. Ich hĂ€tte beinahe 62 â 62 als Ăberschrift veröffentlicht. Das wĂ€re unehrlich gewesen.
Was kostet das in Geld?
Ich habe die Paar-Token â nicht die Passagen â bei einer Million Anfragen hochgerechnet, unter Verwendung eines veralteten gpt-4o-mini-Snapshots (2. August 2026): 0,15 $ / 0,60 $ pro Million Eingabe-/Ausgabe-Token. Das ist eine SchĂ€tzung, keine Rechnung. Dieser Korpus ist winzig. Eine Anfrage kostet nur Bruchteile eines Cent. Ich werde nicht so tun, als wĂ€re es anders.
Bei 1.000.000 Anfragen, alle Sprachen:
| Absicht | Gespeicherte Eingabe | Gespeicherte Ausgabe |
|---|---|---|
| Ăberzeugungsarbeit | â1,35 $ | â5,40 $ |
| token_opt | +1,35 $ | +5,40 $ |
| gemischt | 0,00 $ | 0,00 $ |
Der gemischte Wert von 0,00 $ entspricht dem gleichen Ausgleich in Dollar. Bei dieser GröĂenordnung von einer Million Anfragen steigt allein die Eingabe fĂŒr âĂberzeugungsarbeitâ auf Deutsch von 1,80 $ auf 3,00 $ (Einsparung: â1,20 $). Skaleneffekte können eine Gewohnheit greifbar machen. Dieses spezielle Labor ist an sich keine Rechnungssimulation.
Die unsichtbare KontextgebĂŒhr
Das Modell verfĂŒgt nach wie vor ĂŒber dasselbe Kontextfenster in Tokens. Was sich Ă€ndert, ist, wie viel von diesem Inhalt in natĂŒrlicher Sprache darin Platz findet.
Ich habe ein hypothetisches Fenster mit 100.000 Token mit Kopien des parallelen Angebots gefĂŒllt. Nenner: gemessene Passagetoken, nicht Paarsummen. Das ist kein Produktkontextfenster. Französisch erhĂ€lt kein kleineres Fenster; das gleiche Token-Budget fasst einfach weniger Kopien dieses französischen Textes.
Bei o200k_base:
| Sprache | Passende Kopien | im Vergleich zu Englisch | Verlust im Vergleich zu Englisch |
|---|---|---|---|
| Englisch | 2.173,91 | Basiswert | 0,00 |
| Französisch | 1.724,14 | â20,69 % | 449,77 |
| Deutsch | 1.587,30 | â26,98 % | 586,61 |
Das gleiche Token-Fenster passt auf weniger Elemente dieses französischen Korpus und noch weniger auf dieses deutsche Korpus. Wechselt man zu cl100k_base, betrĂ€gt der Wert fĂŒr Französisch vs. Englisch â35,21 % Kopien. Die Kodierung beeinflusst, wie viele Kopien passen. ĂberprĂŒft: 100.000 / 63 = 1.587,30; 2.173,91 â 1.587,30 = 586,61.
Die Einsparungen bei den Kosten fĂŒr das Paar-Korpus waren verschwindend gering. Der KapazitĂ€tsunterschied ist bereits erkennbar.
Caveman und die Kosten der Optimierung selbst
FĂŒr dieses Experiment habe ich mir Caveman angesehen â ein Open-Source-Projekt zur Komprimierung der Schreibweise von Codierungsagenten, nicht einen zweiten Benchmark, den ich auf diesem Korpus durchgefĂŒhrt habe. Ich habe es nicht portiert. Der nĂŒtzliche Aspekt ist methodischer Natur.
Caveman berichtet ĂŒber echte Komprimierung und veröffentlicht auch FĂ€lle, in denen der Overhead die Einsparungen zunichte macht oder umkehrt. Eine kĂŒrzere Ausgabe bedeutet nicht automatisch geringere Gesamtkosten. Eine Reduzierung der Ausgabe ist keine Rechnung. Eine ehrliche Differenz erfordert eine Kontrollgruppe: Man vergleicht mit einer knappen Eingabeaufforderung, nicht mit Stille.
Deshalb habe ich persuasion von token_opt getrennt, und deshalb bleiben die neun roten Zeilen im Artikel. Wenn der âoptimierteâ Pfad mehr kostet, sollte man das zeigen. Ein Benchmark, der nur die grĂŒnen Zeilen ausgibt, ist eine WerbebroschĂŒre.
Das lokale o200k_base ist nach wie vor OpenAI BPE, das auf meinem Rechner ausgefĂŒhrt wird. Es handelt sich nicht um eine Claude-Abrechnung, auch wenn die Offline-Auswertungen von Caveman dieselbe Kodierung verwenden. Ein anderes Produkt. Gleiche Vorgehensweise: Den ZĂ€hler kennzeichnen, die Regression beibehalten.
Entwicklung mit Symfony und Darkwood Flow
Das Experiment ist eine kleine Symfony-8.1-Konsolenanwendung unter PHP 8.5.4. Keine Datenbank, keine HTTP-API, kein Frontend. Tokenizer: yethee/tiktoken 1.1.1. Orchestrierung: darkwood/flow 8.1.6, tatsĂ€chlich im Einsatz â der Befehl kann keine Tabellen ausgeben, solange Flow nicht lĂ€uft.
Die Pipeline besteht aus sieben Jobs:
LoadCorpus
â TokenizeBefore
â ApplyCandidates
â TokenizeAfter
â Compare
â EstimateCost
â Report
Jeder Schritt bleibt explizit. Laden der beiden Textpassagen und der 27 Paare. Tokenisierung des parallelen Angebots. Erfassung der bereits im Korpus vorhandenen, gekennzeichneten Ersetzungen. Jedes Paar wird tokenisiert. Vergleichen, SelbstprĂŒfung, Aggregate nach Intention aufteilen. Kosten schĂ€tzen. Bericht erstellen. Der ausgegebene Trace ist der Beweis: COMPARE: self-check PASS.
php bin/console app:language:benchmark
php bin/console app:language:benchmark --format=json
Die JSON-Datei wird in var/benchmark/ gespeichert. Ich wollte eine Messung, die ich weiterentwickeln kann, ohne die einzelnen Schritte in einem Skript namens run.php zu verbergen.
PHP 8.6: Readonly-Standardwerte
PHP 8.6 erlaubt es, dass eine gewöhnliche Instanz-Eigenschaft einen Standardwert hat:
public readonly string $evidence = 'ESTIMATED';
Auf diesem Rechner fĂŒhrt dies zu einem Kompilierungsfehler: Die schreibgeschĂŒtzte Eigenschaft Demo::$evidence darf keinen Standardwert haben. Die Laufzeitumgebung ist PHP 8.5.4. Ich habe die 8.6-Funktion nicht aktiviert.
Ein Standardwert fĂŒr einen heraufgestuften Konstruktorparameter funktionierte bereits ab Version 8.1. Der 8.6-RFC listet dies als Nicht-Ziel auf: Es handelt sich um einen Parameterstandardwert, nicht um einen Eigenschaftsstandardwert. PricingAssumptions nutzt diesen Ă€lteren Weg. Der Preis-Snapshot bleibt in beiden FĂ€llen ein unverĂ€nderliches Konfigurationsobjekt. Dieser Exkurs hat keinen Einfluss auf die Token-Anzahl.
PHP verfĂŒgt ĂŒber Referenzen, nicht ĂŒber C-Zeiger
Ein zval besteht aus einem Typ-Tag und einem Wert. Strings und Arrays werden beim Schreiben kopiert. $alias = $state kopiert einen Objekt-Handle (spl_object_id gleich: true; beide Namen wiesen Spuren von 7 â 8 auf). PHP & verpackt ein zval in IS_REFERENCE / zend_reference. $ref++ inkrementierte die Ganzzahl ($n wurde zu 3). Es wurde kein Speicher durchlaufen.
Eine PHP-Referenz ist nicht einfach ein C-Zeiger, der dem PHP-Code zur VerfĂŒgung gestellt wird. Flow verpackt jeden Job-RĂŒckgabewert in ein neues Ip mit schreibgeschĂŒtztem $data; die RĂŒckgabe von BenchmarkState verwendet das Handle erneut. Zend verwendet intern C-Zeiger. Userland-PHP stellt dir keinen zur VerfĂŒgung. php bin/console app:language:benchmark --explain-values gibt diese Tabelle aus. Keine FFI. Auch diese Seitenleiste verĂ€ndert die Tokenanzahl nicht.
Was ich gelernt habe
NatĂŒrliche Sprachen sind hinsichtlich der Tokenisierung nicht gleichwertig. In diesem Korpus mit o200k_base verwendete Französisch 58 Token, wĂ€hrend Englisch 46 und Deutsch 63 verwendeten. Ăndert man die Kodierung, verschiebt sich auch der Premium-Wert.
Ăberzeugungskraft und Token-Effizienz können im Konflikt stehen. MaĂgeschneidert ist ein besseres Verkaufswort, aber ein schlechterer BPE-Wert. Das englische investment ist ein Nullsummenspiel. Charm-Pricing kann versehentlich beiden Achsen helfen. Knappheitsargumente tun dies oft nicht.
Die Zeichenanzahl ist ein schlechter Ersatz fĂŒr einen echten Tokenizer. Die natĂŒrlichere deutsche Formulierung war kĂŒrzer in Zeichen und lĂ€nger in Token. bytes / 4 ĂŒberschĂ€tzte jede Sprache und glich den Unterschied aus.
Aggregate können gegensĂ€tzliche Entwicklungen verbergen. 62 â 62 ist eine Aufhebung, nicht âdie Wortwahl spielt keine Rolleâ. Trenne die Absichten, sonst optimierst du eine Null.
Kontexteffizienz ist wichtig, selbst wenn der Paar-Korpus winzig ist. Das gleiche Token-Fenster passt fĂŒr weniger Kopien dieses Französischen und noch weniger fĂŒr dieses Deutsche.
Optimierung hat ihren eigenen Overhead. Veröffentliche die rote Zeile.
Ich habe weder die Nutzung des Live-Anbieters noch die Konversion oder eine professionelle Ăbersetzung gemessen. Das nĂ€chste ehrliche Experiment, falls ich eines durchfĂŒhre, ist ein einzelnes, vom Anbieter gemeldetes EN/FR/DE-Paar fĂŒr dieselben Passagen.
Bis dahin: Messen Sie die tatsÀchliche Arbeitslast, bevor Sie sie optimieren. Und wenn das gemischte Gesamtergebnis unverÀndert bleibt, schauen Sie sich die Zeilen an.
Quellen
- 3 LinkedIn-BeitrÀge
- tiktoken-php
- Caveman
- Quellcode: https://github.com/matyo91/nolife-language
- Folien: https://github.com/matyo91/slidewire